Wix补丁创建

时间:2013-09-12 07:59:18

标签: wix patch wix3.6

我使用wix创建了Installer。现在我想为它修补。我成功创建了补丁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 GT;产品代码/升级代码在所有3个基准中都是相同的 2 - ;版本号对于第一,第二和第三基线是不同的,如第一基线1.0.0.0,第二1.0.0.1和第三基线1.0.0.2

Patch1代码:

<?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)

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