使用 WiX 设置环境变量,在路径末尾丢失文件名

Setting environment variable with WiX, losing filename at end of path

我正在使用 WiX "Environment" 元素来设置环境变量。

<Environment Action="create" Name="My_Certificates" System="yes" Id="certificate_env" Value="[CERT_XML_PATH]" Permanent="yes" />

CERT_XML_PATH 设置为以下内容:c:\this\is\my\path\myfile.xml

如果该文件确实存在,则环境变量设置正确并指向该文件。 如果安装时该特定文件不存在,则会创建并设置环境变量,但会截断路径以删除 myfile.xml 部分。

此安装程序是更大套件的一部分。它有自己独立的 MSI。安装其中一个软件包会创建此 xml 文件,但不会创建我正在处理的特定文件。如果 xml 文件已创建,则一切正常。但是如果这个安装程序首先是 运行,它会将环境变量设置为

环境变量 "My_Certificates" 已创建,但设置为:

而不是:

疑难解答:

安装日志显示 属性 被设置到正确的位置。

MSI (s) (70:80) [15:27:44:988]:属性 更改:添加 CERT_XML_PATH 属性。它的值为'c:\this\is\my\path\myfile.xml'.

然后我们看到安装程序使用正确的路径执行 WriteEnvironmentStrings,包括 xml 文件。

MSI (s) (70:80) [15:27:50:644]: 执行操作:UpdateEnvironmentStrings(Name=My_Certificates,Value=c:\this\is\my\path\myfile.xml,分隔符=[~],动作=536870914,)

WriteEnvironmentStrings:名称:My_Certificates,值:c:\this\is\my\path\myfile.xml,操作 536870914

screen shot of system variables showing it not set properly

如果能深入了解文件名被截断的原因,我们将不胜感激。

发现问题。安装程序中有一个自定义操作也在尝试设置环境变量。禁用该自定义操作时,一切都按预期进行。