【发布时间】:2015-12-17 00:08:43
【问题描述】:
如何通过WiX 自定义操作获取正在安装的文件的路径?
我正在创建一个 WIX 扩展,它有一个可以嵌套在 <File> 组件下的自定义元素,如下所示:
<Component Id="FooComponent">
<File Id="filekey" Name="foo.txt">
<myextension:Stuff />
</File>
</Component>
扩展有它的自定义表,它有一个指向“组件”和“文件”表的外键列,并且在安装/卸载文件的组件时执行(如内置的 IIS 扩展或 SQL 扩展例如)
我想要实现的是,在我的延迟(计划)自定义操作中,找出扩展名绑定到的文件的目标路径。 IE。基本上在不同的自定义操作中,我想获得 [!filekey] 的值(就 MSI formatted 字符串而言)。我该怎么办?
我发现了一个有点相似的话题here
建议的解决方案之一是使用自定义操作中的MsiFormatRecord 并将[#filekey] 传递给该函数。然后它会正确解决。
我在 WiX 源、游戏扩展和 NetFX 扩展中找到了使用这种方法的示例;他们使用这样的代码:
StrAllocFormatted(&pwzFormattedFile, L"[#%s]", pwzFileId);
WcaGetFormattedString(pwzFormattedFile, &pwzGamePath);
这里WcaGetFormattedString 基本上是MsiFormatRecord 的包装器
仍然没有答案,这是解决问题的正确方法吗?
【问题讨论】:
标签: wix windows-installer custom-action