【发布时间】:2021-07-25 13:12:17
【问题描述】:
我有一个通用合并模块作为 Wix 安装程序 MySetup1.msi 的一部分,它应该始终交付文件并安装服务,但只有在满足条件时才应卸载合并模块文件/服务。条件是只有在传递特定属性时才应卸载公共文件。 合并模块也是 MySetup2.msi 的一部分。
我知道这可以通过跨组件使用相同的 GUID 或使用合并模块来完成,但是 MySetup1.msi 不应卸载合并模块组件,如果通过特定 FLAG 则可以卸载预期案例模块,否则应通过 MySetup2 卸载合并模块
这里有点复杂,因为我们使用通用 GUID 共享组件,MSI 安装程序服务保持对共享对象的引用 如果我们在 MySetup1.MSI 中跳过卸载,我认为一个引用计数将处于未决状态。 在 MySetup2.msi 卸载时,此文件不会被删除,因为总会有 refcount 1。
任何提示线索都非常感谢, 我知道参考计数保存在注册表 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\Component 但对操纵 reg 条目持怀疑态度。
这是我在原始安装程序中合并此模块的代码片段,但不幸的是没有真正得到任何帮助。
<Feature Id="MyMergedFeature" Title="My Merged Feature" Level="0" AllowAdvertise="no" Absent="disallow">
<MergeRef Id='MyModule' />
<Condition Level="0">
<![CDATA[REMOVE ~<> "ALL"]]>
</Condition>
</Feature>
【问题讨论】:
标签: wix windows-installer