1

我有一个安装程序,它安装了一个最终被 Explorer 使用的 dll。修改或覆盖该 dll 需要重新启动资源管理器,这很丑陋。

如果我增加我的 Wix ProductVersion(例如从 4.0 到 4.1)但不更改与该 dll 相关的任何文件(dll 的版本未更改),我不希望 MSI/Wix 尝试修改该 dll。有没有办法告诉 MSI/Wix 只安装那些改变了最后一个 MSI 和当前正在运行的文件的文件?

目前,我的 msi 最终将通过重新启动管理器重新启动资源管理器,因为资源管理器正在使用 Wix 想要更改的文件(dll),即使该文件实际上没有任何有意义的更改。

谢谢

4

2 回答 2

1

Brian Gillespie 在 如何实施 WiX 安装程序升级中的回答?(关于RemoveExistingProducts之后的安排InstallFinalize)为您解决这个问题?

于 2012-11-16T00:49:16.517 回答
0

你用升级吗?尝试按照MikeBaz 的建议RemoveExistingProducts安排之后。在这种情况下,安装新版本,然后卸载旧版本,因此如果版本没有更改,DLL 应该保持不变。InstallFinalize

如果RemoveExistingProducts是之前安排InstallInitialize的,则完全卸载旧版本,然后安装新版本。在这种情况下,卸载旧版本时必须删除 DLL,并使用新版本再次(重新)安装。

于 2012-11-16T07:31:39.590 回答