1

我已经使用 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>

请帮助解决问题。

4

1 回答 1

0

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

于 2013-11-07T19:31:43.237 回答