2010-07-29 85 views
2

我正在使用WIX进行'小升级'包。基于升级包,我很困惑。生成补丁WIX - 版本3关闭版本1或版本2?

当我生成补丁总是我基地起飞版本1,或做I类基础版本3关闭的版本2?

总之

,我无法理解

<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版。

回答

4

首先,除非你绝对必须使用维克斯V2不使用PatchCreation元素。切换到使用WiX v3的Patch元素。它使用起来更容易,功能更强大,并具有更好的错误检查。

现在,这听起来像你想要做的是创建一个针对多种产品的补丁。换句话说,你需要一个可以同时定位v1和v2的补丁来将它们变成v3。你完成这个任务的方式是创建一个从v1到v3的转换,另一个从v2转换到v3。

要通过读取WiX.chm“使用纯维克斯”主题做开始。当您看到“创建您的产品之间的转换”部分时,请执行该步骤两次以创建v1tov3.wixmst和v2tov3.wixmst。然后在“构建补丁”步骤中,在命令行中提供两个.wixmst文件。 Pyro将负责其余的事情。

Patch元素中有很多选项。如果你不这样做,不要打开它们。当你循序渐进地练习一点点时,它确实不那么复杂。

+0

感谢罗!你知道工作做得正确吗?我很想创建一些积极的失败案例,所以我可以向自己证明我知道我在做什么:) – stuck 2010-08-07 05:53:55

+0

我通常使用Orca查看应用于有问题的MSI(即手动验证)的修补程序。我没有做足够的补丁来证明构建工具能够以自动化的方式进行验证。 – 2010-08-07 19:00:54