【发布时间】:2018-05-04 03:33:29
【问题描述】:
我正在利用 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”被创建,但设置为:
- c:\this\is\my\path\
代替:
- c:\this\is\my\path\myfile.xml
疑难解答:
安装日志显示属性被设置到正确的位置。
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= [~],Action=536870914,)
WriteEnvironmentStrings:名称:My_Certificates,值:c:\this\is\my\path\myfile.xml,操作 536870914
screen shot of system variables showing it not set properly
任何有关文件名被截断的原因的见解将不胜感激。
【问题讨论】:
-
我假设您已经使用了正确的故障排除方法,并在运行安装之前确保环境变量不存在。否则我会认为它只显示在您当前的个人资料中,然后注销并重新登录可能会正确显示。另一个想法是其他东西将其设置为不同的值。
-
您是正确的,我正在验证环境变量在安装之前不存在并且在安装之后它确实存在。我还尝试在安装并重新登录后重新启动机器,但这并没有解决问题。我也倾向于设置该环境变量的其他东西,但我还没有找到它......
标签: wix3.5