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