正如我在标题中提到的,问题是 Wix 如何决定安装特定文件?
所以我有 exe 文件,当我更改 exe 文件中的某些内容并重建它时,如果我不更改版本,它将不会被重新安装。但是,如果我更改了资源文件中的某些内容,即使我不更改应用程序的版本,资源文件也会被替换。那么 wix 如何决定他是否需要在升级期间替换文件。
我正在使用wix3.9。MajorUpgrade 是在InstallFinalize 之后安排的。
正如我在标题中提到的,问题是 Wix 如何决定安装特定文件?
所以我有 exe 文件,当我更改 exe 文件中的某些内容并重建它时,如果我不更改版本,它将不会被重新安装。但是,如果我更改了资源文件中的某些内容,即使我不更改应用程序的版本,资源文件也会被替换。那么 wix 如何决定他是否需要在升级期间替换文件。
我正在使用wix3.9。MajorUpgrade 是在InstallFinalize 之后安排的。
版本化文件会根据文件版本被替换,是的,但数据文件会根据您是否指定文件哈希来替换。我认为WiX默认生成文件hases,所以这是覆盖规则:
https://msdn.microsoft.com/en-us/library/aa370532(v=vs.85).aspx
这是适用于所有 MSI 设置的 Windows Installer 规则,而不是 WiX 决定。
PS afterInstallFinalize 不是一个理想的地方。afterInstallExecute 更安全,并且总体结果相同。问题是InstallFinalize之后意味着安装了新产品。如果旧产品的卸载失败并回滚,您最终将安装新旧产品,否则称为一团糟。afterInstallExecute 使所有事务都成为事务的一部分,因此如果卸载失败,您可以安装原始产品。