【问题标题】:Setting environment variable with WiX, losing filename at end of path使用 WiX 设置环境变量,在路径末尾丢失文件名
【发布时间】: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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-24
    • 2011-05-19
    • 2019-03-18
    • 2023-03-24
    • 2018-01-04
    • 2012-10-28
    • 1970-01-01
    • 2017-06-09
    相关资源
    最近更新 更多