使用WIX生成补丁 - 基于版本1或版本2的版本3?

时间:2010-07-29 02:24:30

标签: wix upgrade

我正在使用WIX制作“小型升级”软件包。基于升级包,我很困惑。

当我生成补丁时,我总是基于版本1,还是基于版本2的版本3?

简而言之,我无法理解

<UpgradeImage SourceFile="$(var.ProjNew)" Id="Upgrade1_$(var.NewID)">
    <TargetImage SourceFile="$(var.ProjOld)" Order="2" Id="Target1_$(var.NewID)" IgnoreMissingFiles="no" />
</UpgradeImage>

ProjNew应该指向新的MSI,ProjOld应该指向什么?第一个MSI,还是n-1 MSI?

有人可以帮我理解发生了什么以及如何正确地做到这一点?理想情况下,当版本3出现时运行版本1的人可以获得一个更新包,这使我相信我应该始终基于版本1。但是,如果我这样做,如果有人安装了第2版会发生什么?他们敬酒吗?

我认为我的问题的核心是假设我已经构建了三个版本1,2和3.假设每个版本都基于版本1.如果有人安装版本1然后版本2.他们然后获得版本3补丁什么会发生什么?将msiexec删除补丁2,然后应用补丁3?请记住,补丁3基于版本1.

1 个答案:

答案 0 :(得分:4)

首先,除非您绝对必须使用WiX v2,否则请勿使用PatchCreation元素。切换到使用WiX v3的Patch元素。它更容易使用,功能更强大,并且具有更好的错误检查功能。

现在您想要做的是创建一个针对多个产品的补丁。换句话说,您需要一个可以同时针对v1和v2的补丁,将它们转换为v3。实现此目的的方法是创建从v1到v3的转换以及从v2到v3的另一个转换。

首先阅读WiX.chm中的“使用Purely WiX”主题。当您到达“创建产品之间的转换”部分时,请执行该步骤两次以创建v1tov3.wixmst和v2tov3.wixmst。然后在“构建补丁”步骤中,在命令行上提供.wixmst文件。 Pyro将负责其余部分。

Patch元素中有很多选项。如果你不这样做,就不要打开它们。当你按照一步一步地练习一点时,这并不是那么复杂。