首页 > 解决方案 > 使用 WiX 设置环境变量,在路径末尾丢失文件名

问题描述

我正在利用 WiX“环境”元素来设置环境变量。

<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'。

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

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

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

显示未正确设置的系统变量的屏幕截图

任何有关文件名被截断的原因的见解将不胜感激。

标签: wix3.5

解决方案


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


推荐阅读