2012-04-02 14 views
0

ここでは、次のパッチXMLにアップグレード/ターゲットイメージを含めますか?私は以前のXML構造を使用できない理由である、ProductIdのValidate要素を含める必要があります。WiX 3.6パッチファイルXML

以下は私の以前のパッチ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

btw、インストールに使用する正確なGUIDを共有しないでください。誰かがあなたのサンプルを文字通りそのまま持ち歩くことができ、通常よりもGUIDの競合の可能性が少し高くなります。 –

答えて

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)ファイルを使用してdiffを生成します。それが役に立つと願っています。私はあなたに「純粋にWiX」というアプローチをもう一度見て、それをより良く理解することを提案します。

+0

Yan!もう1つは – aherrick

+0

です。以前のパッチ適用方法(パッチ作成プロパティ)を使用してマルチインスタンスを修正できますか? – aherrick

+0

どうしてですか?マニュアルのTargetProductCode要素の説明によると、 "PatchCreation要素を使用する場合、Id属性値が '*'であるか、この要素がオーサリングされていない場合、TargetImages要素によって参照されるすべての製品の製品コードが使用されます。しかし、私は正直言ってこのアプローチを試していませんでした。まずはそれを試してみなければなりません –

関連する問題