wix3.5 - 使用 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”被创建,但设置为:
- c:\这\是\我的\路径\
代替:
- 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=[~] ,行动=536870914,)
WriteEnvironmentStrings:名称:My_Certificates,值:c:\this\is\my\path\myfile.xml,操作 536870914
任何有关文件名被截断的原因的见解将不胜感激。
解决方案
发现问题。安装程序中有一个自定义操作也在尝试设置环境变量。禁用该自定义操作时,一切都按预期工作。
推荐阅读
- javascript - 更改已具有特定背景颜色的任何 TD 的背景颜色
- django - 带有奇怪标签的 Django Rest
- android - 如何将隐藏文件分享到 Whatsapp?
- flutter - Dart:更喜欢常量构造函数
- sql - SQL Graph:如何结合 MATCH 和 JOIN?
- python - 无法将 xgboost 添加到 pyinstaller
- parsing - 替代规则能否在 PEG 中的初始标记中重叠?
- java - 从 gRPC 服务返回响应流到 RESTful 客户端的问题
- excel - 如何设置 i 行的复制范围并设置列数
- jquery - jQuery ajax 基本身份验证凭据在浏览器中可见