2012-04-02 117 views
0

我在哪里在以下补丁XML中包含升级/目标映像?我需要包含Validate ProductId元素,这就是为什么我不能使用我以前的XML结构。WiX 3.6补丁文件XML

<Patch AllowRemoval="yes" 
    Classification="Update" 
    Comments="Patch" 
    Description="Patch" 
    DisplayName="Patch" 
    Manufacturer="..." 
    MoreInfoURL="http://..." 
    TargetProductName="Szenario Rechner" 
    Codepage="1252"> 

    <Media Id="1000" 
      Cabinet="Patch.cab" 
      EmbedCab="yes" 
      Source="Cab1" > 
     <PatchBaseline Id="RTM"> 
      <Validate ProductId="no" /> 
     </PatchBaseline> 
    </Media> 
    <PatchFamily Id='pf1' 
       Version='1.2.7.0' 
       Supersede='yes'> 

     <ComponentRef Id="Szenariorechner" /> 
    </PatchFamily> 
</Patch> 

下面是我以前的补丁XML。

<PatchCreation Id="224C316C-5894-4771-BABF-21A3AC1F75FF" 
       CleanWorkingFolder="yes" 
       WholeFilesOnly="yes"> 
    <PatchInformation Description="Patch 1.0.4475.23974" 
         Comments="Patch 1.0.4475.23974" 
         ShortNames="no" 
         Languages="1033" 
         Compressed="yes" 
         Manufacturer="..." /> 
    <PatchMetadata AllowRemoval="yes" 
        Description="Patch 1.0.4475.23974" 
        ManufacturerName="..." 
        TargetProductName="Update" 
        MoreInfoURL="http://" 
        Classification="Update" 
        DisplayName="Patch 1.0.4475.23974" /> 
    <Family DiskId="2" 
      MediaSrcProp="Sample" 
      Name="Update" 
      SequenceStart="600"> 

     <UpgradeImage SourceFile="C:\new.msi" 
         Id="PatchUpgrade"> 
      <TargetImage SourceFile="C:\old.msi" 
         Order="2" 
         Id="PatchUpgrade" 
         IgnoreMissingFiles="no" /> 
     </UpgradeImage> 
    </Family> 
    <PatchSequence PatchFamily="SamplePatchFamily" 
        Sequence="1.0.4475.23974" 
        Supersede="yes" /> 
</PatchCreation> 
+1

顺便说一句,不要分享你的安装使用的确切的GUID - 有人可以按照字面原样接受你的示例,并且比平常有更高的GUID冲突的机会:) – 2012-04-03 19:19:57

回答

1

您的旧补丁创作是指创建补丁using Patch Creation Properties。你正在引用的一个新的uses purely WiX。如您所见,UpgradeImage/TargetImage对不需要对后者。

相反,你应该在Patch根目录下直接编写一个TargetProductCodes元素,并添加了一些TargetProductCode元素作为它的直接孩子:

<TargetProductCodes> 
    <TargetProductCode Id="PUT-PRODUCT-CODE-HERE" /> 
    <TargetProductCode Id="PUT-PRODUCT-CODE-HERE" /> 
    <TargetProductCode Id="PUT-PRODUCT-CODE-HERE" /> 
    ... 
    <TargetProductCode Id="PUT-PRODUCT-CODE-HERE" /> 
</TargetProductCodes> 

当你创建一个补丁,你喂同时与torch.exe基地和更新MSI(或WIXPDB)文件生成差异。希望它有帮助。我建议你再次通过“纯粹的WiX”方法来更好地理解它。

+0

非常感谢你严! – aherrick 2012-04-03 21:20:34

+0

还有一件事。你可以使用旧的修补方法修补多个实例吗(修补程序创建属性)? – aherrick 2012-04-03 22:02:47

+0

为什么不呢?根据手册中的TargetProductCode元素描述,“使用PatchCreation元素时,如果Id属性值为'*'或未创作此元素,则使用TargetImages元素引用的所有产品的产品代码。”但是,我没有尝试这种方法,说实话 - 你必须先玩 – 2012-04-04 07:33:38