【发布时间】:2015-03-06 16:08:10
【问题描述】:
我遇到了一个构建 MSI 包的项目。该包中的一个文件夹具有以下名称:
%P_%F_%Path%alfa
在安装时,在 InstallFiles 标准操作期间,Windows Installer 会将子字符串 %Path% 解析为环境变量,因此字符 ':' 出现在文件夹名称中,并且出现安装错误 (文件夹名称中的字符无效)。
EDIT:DuplicateFiles 标准操作也会出现同样的错误。
如果我创建了一个将这个文件夹创建为空的 MSI(即在 CreateFolders 标准操作期间)Windows Installer 不会尝试将子字符串 %Path% 解析为环境变量并且安装成功,创建具有上述名称的文件夹。
我以前从未遇到过这种情况。还有人做过吗?如果是,您能否详细说明到底发生了什么以及是否有可用的解决方法?
注意!我添加了不同 MSI 创作工具的所有标签,因为我怀疑这是与工具无关的情况。
【问题讨论】:
-
“格式化”的文档表明您可以通过将 % 编码为 [\%] 来转义它,这似乎在我有限的测试中有效。
-
确实,formatted 支持这样的转义字符。但是目录表没有格式化的列,有效的文件夹名称中不接受 '\' 字符。 msdn.microsoft.com/en-us/library/aa368295%28v=vs.85%29.aspx
-
当然明白,但如果 InstallFiles 在您的路径解析中应用格式化规则,那么值得一试看看它是否会应用 [] 规则。
-
我试过了,修改了目录表中的行,但安装程序在成本计算操作期间出错,抱怨路径无效。好吧,这似乎只是我们必须忍受的另一个 WI 错误。感谢所有的反馈家伙(克里斯托弗,菲尔)
-
MSI 就是这样。 IMO,尽管如此,它仍然是最好的框架/范例。
标签: wix installshield windows-installer advanced-installer