2012-04-02 1 views
0

어디에서 다음 패치 XML에 업그레이드/대상 이미지를 포함합니까? ProductId 요소 유효성 검사를 포함시켜야합니다. 따라서 이전 XML 구조를 사용할 수 없습니다.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! 대단히 감사합니다! – aherrick

+0

한 가지 더. 이전 패치 방식 (패치 생성 속성)을 사용하여 다중 인스턴스를 패치 할 수 있습니까? – aherrick

+0

왜 안 되니? 설명서의 TargetProductCode 요소 설명에 따르면 "PatchCreation 요소를 사용할 때 Id 속성 값이 '*'이거나이 요소가 제작되지 않은 경우 TargetImages 요소에서 참조하는 모든 제품의 제품 코드가 사용됩니다." 그러나 솔직히 말해서 나는 그 접근법을 시도하지 않았습니다 - 먼저 그걸 가지고 놀아야 할 것입니다. –