维克斯补丁创建



我使用 wix 创建了安装程序。现在我想修补它。我成功地创建了补丁 1,它将示例 exe 更改为另一个 exe,并将产品版本号从 1.0.0.0 增加到 1.0.0.1。在此之前,它工作正常。
现在我想要第二个补丁,它将进行一些小的更改。并且仅当安装了补丁 1 并将版本更改为 1.0.0.2 时,才应安装此补丁。
我指的是本教程 http://wix.tramontana.co.hu/tutorial/upgrades-and-modularization/patchwork
现在的问题是我的第二个补丁正在更改它应该做的事情。但即使没有安装补丁 1,它也会安装。
注意:
1> 所有 3 个基线的产品代码/升级代码都相同。
2> 第一个、第二个和第三个基线的版本号不同,例如第一个基线的版本号

为 1.0.0.0,第二个基线的版本号为 1.0.0.1,第三个基线的版本号为 1.0.0.2

补丁 1 代码:

<?xml version='1.0' encoding='windows-1252'?>
<Wix xmlns='http://schemas.microsoft.com/wix/2006/wi'>
<Patch AllowRemoval="yes" Manufacturer="NSS" MoreInfoURL="www.abcdxyz.com"
DisplayName="NSS 1.0.0.1" Description="Small Update Patch" Classification="Update">
<Media Id='5000' Cabinet='Sample.cab'>
<PatchBaseline Id='Sample'/>
</Media>
<PatchFamily Id='SamplePatchFamily' Version='1.0.0.1'>
<PropertyRef Id="ProductVersion"/>
<ComponentRef Id='NSSTestAPP'/>
</PatchFamily>
</Patch>
</Wix>

补丁 2 代码:

<?xml version='1.0' encoding='windows-1252'?>
<Wix xmlns='http://schemas.microsoft.com/wix/2006/wi'>
<Patch AllowRemoval="yes" Manufacturer="NSS" MoreInfoURL="www.abcdxyz.com"
DisplayName="NSS 1.0.0.2" Description="Small Update Patch" Classification="Update">
<Media Id='5000' Cabinet='Sample.cab'>
<PatchBaseline Id='Sample'/>
</Media>
<PatchFamily Id='SamplePatchFamily' Version='1.0.0.2'>
<PropertyRef Id="ProductVersion"/>
  <ComponentRef Id = 'NSSTestAPP'/>
  <ComponentRef Id = 'TestDll'/>
</PatchFamily>

</Patch>
</Wix>

请帮助解决问题。

另一种选择是针对 1.0.0.0 和 1.0.0.2 运行火炬并设置 patchFamily 属性 Supersede="yes"。(假设 .1 代码也在 .2 版本中)这也将包括 .2 补丁中的 .1 文件。如果安装了 .1 补丁,它将被 .2 取代,如果未安装 .1,则无关紧要,因为 .2 已经包含它。

最新更新