Please send general support questions to the: 
wix-us...@lists.sourceforge.net<mailto:wix-us...@lists.sourceforge.net> mailing 
list.

This mailing list is used to discuss developing the WiX toolset itself.

_______________________________________________________________
FireGiant  |  Dedicated support for the WiX toolset  |  
http://www.firegiant.com/

From: Kurtis J. Kyle [mailto:kjk...@coolblue.com]
Sent: Thursday, June 12, 2014 6:30 AM
To: wix-devs@lists.sourceforge.net
Subject: [WiX-devs] Problems with WIX Patching approach using Small Updates 
followed by a Minor Update to rollup



Hopefully someone can offer some insight on this as I have been unable to get 
this to do what I want according to my understanding of the documentation.  Is 
it even possible?  Maybe there is a flaw in my approach?  Thank you in advance 
for any help you may provide.

Initially, I am trying to build an Patch1.msp for a Small Update that will 
strictly apply specific files, but I can't seem to accomplish it the way I 
expected.   My goal is to implement a patching approach where I can deliver a 
Small Update patch to only a specific file or related files in my single 
feature product using a Patch1 and then also use additional Patches (multiple 
Patch Families ?) to deliver other unrelated patches to the same 
feature/product.   I'd like to deliver these Small Update patches from a single 
patch source location where the fixes are accumulated. And finally, I want to 
roll up these various patches into a single Minor Update patch.

In my prototype code, I have a baseline Product.msi file that installs 3 text 
files built from the "baseline source location" using my Product.wxs. ( 
File1.txt, File2.txt & File3.txt )

I have a "patch source location" containing copies of these files from the 
baseline where I modified File1.txt and then File2.txt to observe what will 
happen when I try to only apply the change to File1.txt for the first patch and 
then follow up with a second unrelated patch to File2.txt that is contained in 
this same "patch source location".

1. Generated a Product.wixout file from my baseline source
2. Generated a separate Product.wixout from my patch source
3. Used Torch to generate an .mst file between these two .wixout files
4. Built a Patch1.wxs file that explicitly references  ONLY File1.txt within 
its PatchFamily element thinking this is how I can control the patch 
selectively ...
5. Used  Candle & Light on my Patch to product the .wixmsp
6. Finally used Pyro to apply the .wixmst file to the .wixmsp file to produce 
my Patch1.msp file

Although I understand that the .mst file created by Pyro detects the 
differences between the two Product.wixout files, my understanding was that the 
Patch1.wxs could be used to control which exactly files are applied which 
doesn't seem to be the case ???

The problem is when I apply Patch1 that I built from the accumulated patch 
source location, it also applies the change made to the other file which I 
don't want to deliver in Patch1.

Below you see my patch source files where I explicitly reference File1 by its 
ComponentId in the first patch and then File4 in the second patch and no 
explicit file references in the minor update patch source which should default 
to all files.


Patch Family 1 ( small update )

<?xml version="1.0" encoding="UTF-8"?>
<Wix 
xmlns="http://schemas.microsoft.com/wix/2006/wi";><http://schemas.microsoft.com/wix/2006/wi%22%3E>
  <Patch
      AllowRemoval="yes"
      Manufacturer="Dynamo Corp"
      MoreInfoURL="http://www.dynamocorp.com/";<http://www.dynamocorp.com/%22>
      DisplayName="PF1 Sample Patch 1.0.0.100"
      Description="PF1 Small Update Patch 1.0.0.100"
      Classification="Update"
        >
    <Media Id="5000" Cabinet="RTM.cab">
      <PatchBaseline Id="RTM"/>
    </Media>
    <PatchFamilyRef Id="SamplePatchFamily1"/>
  </Patch>
  <Fragment>
    <PatchFamily Id='SamplePatchFamily1' Version='1.0.0.300' Supersede='yes'>

      <ComponentRef Id="cmpFile1"/>

    </PatchFamily>
  </Fragment>
</Wix>

Patch Family 2 ( small update )

<?xml version="1.0" encoding="UTF-8"?>
<Wix 
xmlns="http://schemas.microsoft.com/wix/2006/wi";><http://schemas.microsoft.com/wix/2006/wi%22%3E>
  <Patch
      AllowRemoval="yes"
      Manufacturer="Dynamo Corp"
      MoreInfoURL="http://www.dynamocorp.com/";<http://www.dynamocorp.com/%22>
      DisplayName="PF2 Sample Patch 1.0.0.100"
      Description="PF2 Small Update Patch 1.0.0.100"
      Classification="Update"
        >
    <Media Id="5000" Cabinet="RTM.cab">
      <PatchBaseline Id="RTM"/>
    </Media>
    <PatchFamilyRef Id="SamplePatchFamily2"/>
  </Patch>
  <Fragment>
    <PatchFamily Id='SamplePatchFamily2' Version='1.0.0.100' Supersede='yes'>

      <ComponentRef Id="cmpFile2"/>

      </PatchFamily>
  </Fragment>
</Wix>

Patch Family 3 ( minor update )

<?xml version="1.0" encoding="UTF-8"?>
<Wix 
xmlns="http://schemas.microsoft.com/wix/2006/wi";><http://schemas.microsoft.com/wix/2006/wi%22%3E>
  <Patch
      AllowRemoval="yes"
      Manufacturer="Dynamo Corp"
      MoreInfoURL="http://www.dynamocorp.com/";<http://www.dynamocorp.com/%22>
      DisplayName="PF3 Sample Patch 1.5.0.100"
      Description="PF3 Small Update Patch 1.5.0.100"
      Classification="Update"
        >
    <Media Id="5000" Cabinet="RTM.cab">
      <PatchBaseline Id="RTM"/>
    </Media>
    <PatchFamilyRef Id="SamplePatchFamily1"/>
    <PatchFamilyRef Id="SamplePatchFamily2"/>
  </Patch>
  <Fragment>
    <PatchFamily Id='SamplePatchFamily1' Version='1.5.0.000' Supersede='yes'>
    </PatchFamily>
    <PatchFamily Id='SamplePatchFamily2' Version='1.5.0.000' Supersede='yes'>
    </PatchFamily>
  </Fragment>
</Wix>



My baseline Product.wxs source

<?xml version="1.0" encoding="UTF-8"?>
<Wix 
xmlns="http://schemas.microsoft.com/wix/2006/wi";><http://schemas.microsoft.com/wix/2006/wi%22%3E>
  <Product Id="48C49ACE-90CF-4161-9C6E-9162115A54DD"
      Name="WiX Patch Example Product"
      Language="1033"
      Version="1.0.0"
      Manufacturer="Dynamo Corporation"
      UpgradeCode="48C49ACE-90CF-4161-9C6E-9162115A54DD">
    <Package Description="Installs a file that will be patched."
        Comments="This Product does not install any executables"
        InstallerVersion="405"
        Compressed="yes" />
    <Media Id="1" Cabinet="product.cab" EmbedCab="yes" />
    <FeatureRef Id="SampleProductFeature"/>
  </Product>
  <Fragment>
    <Feature Id="SampleProductFeature" Title="Sample Product Feature" Level="1">

      <ComponentGroupRef Id="SampleProductFiles" />
    </Feature>
  </Fragment>
  <Fragment>
    <DirectoryRef Id="SampleProductFolder">

      <Component Id="cmpFile1" Guid="B935F8C0-61CE-4FC9-9FA0-B4BF366E7F59">
        <File Id="File1" Name="File1.txt" Source=".\$(var.Version)\File1.txt" />
      </Component>

      <Component Id="cmpFile2" Guid="F82A9628-B327-4DD9-BBFB-59B099AE775D">
        <File Id="File2" Name="File2.txt" Source=".\$(var.Version)\File2.txt" />
      </Component>

      <Component Id="cmpFile3" Guid="89C7B165-AAE1-4942-B9A7-B5F169A81480">
        <File Id="File3" Name="File3.txt" Source=".\$(var.Version)\File3.txt" />
      </Component>

    </DirectoryRef>
  </Fragment>

  <Fragment>
    <ComponentGroup Id="SampleProductFiles">
      <ComponentRef Id="cmpFile1" />
      <ComponentRef Id="cmpFile2" />
      <ComponentRef Id="cmpFile3" />
    </ComponentGroup>
  </Fragment>

  <Fragment>
    <Directory Id="TARGETDIR" Name="SourceDir">
      <Directory Id="ProgramFilesFolder" Name="PFiles">
        <Directory Id="SampleProductFolder" Name="Patch Sample Directory">
        </Directory>
      </Directory>
    </Directory>
  </Fragment>
</Wix>


Minor Update Product.wxs source  ( added 2 new files )


<?xml version="1.0" encoding="UTF-8"?>
<Wix 
xmlns="http://schemas.microsoft.com/wix/2006/wi";><http://schemas.microsoft.com/wix/2006/wi%22%3E>
  <Product Id="48C49ACE-90CF-4161-9C6E-9162115A54DD"
      Name="WiX Patch Example Product"
      Language="1033"
      Version="1.5.0"
      Manufacturer="Dynamo Corporation"
      UpgradeCode="48C49ACE-90CF-4161-9C6E-9162115A54DD">
    <Package Description="Installs a file that will be patched."
        Comments="This Product does not install any executables"
        InstallerVersion="405"
        Compressed="yes" />
    <Media Id="1" Cabinet="product.cab" EmbedCab="yes" />
    <FeatureRef Id="SampleProductFeature"/>
  </Product>
  <Fragment>
    <Feature Id="SampleProductFeature" Title="Sample Product Feature" Level="1">

      <ComponentGroupRef Id="SampleProductFiles" />
    </Feature>
  </Fragment>
  <Fragment>
    <DirectoryRef Id="SampleProductFolder">

      <Component Id="cmpFile1" Guid="B935F8C0-61CE-4FC9-9FA0-B4BF366E7F59">
        <File Id="File1" Name="File1.txt" Source=".\$(var.Version)\File1.txt" />
      </Component>

      <Component Id="cmpFile2" Guid="F82A9628-B327-4DD9-BBFB-59B099AE775D">
        <File Id="File2" Name="File2.txt" Source=".\$(var.Version)\File2.txt" />
      </Component>

      <Component Id="cmpFile3" Guid="89C7B165-AAE1-4942-B9A7-B5F169A81480">
        <File Id="File3" Name="File3.txt" Source=".\$(var.Version)\File3.txt" />
      </Component>

      <Component Id="cmpNewFile" Guid="D565D522-1388-4347-993D-F6D973652929">
        <File Id="NewFile" Name="NewFile.txt" 
Source=".\$(var.Version)\NewFile.txt" />
      </Component>

      <Component Id="cmpAnotherNewFile" 
Guid="D565D522-1388-4347-993D-F6D973652929">
        <File Id="AnotherNewFile" Name="AnotherNewFile.txt" 
Source=".\$(var.Version)\AnotherNewFile.txt" />
      </Component>

    </DirectoryRef>
  </Fragment>

  <Fragment>
    <ComponentGroup Id="SampleProductFiles">
      <ComponentRef Id="cmpFile1" />
      <ComponentRef Id="cmpFile2" />
      <ComponentRef Id="cmpFile3" />
      <ComponentRef Id="cmpNewFile" />
      <ComponentRef Id="cmpAnotherNewFile" />
    </ComponentGroup>
  </Fragment>

  <Fragment>
    <Directory Id="TARGETDIR" Name="SourceDir">
      <Directory Id="ProgramFilesFolder" Name="PFiles">
        <Directory Id="SampleProductFolder" Name="Patch Sample Directory">
        </Directory>
      </Directory>
    </Directory>
  </Fragment>
</Wix>




------------------------------------------------------------------------------
HPCC Systems Open Source Big Data Platform from LexisNexis Risk Solutions
Find What Matters Most in Your Big Data with HPCC Systems
Open Source. Fast. Scalable. Simple. Ideal for Dirty Data.
Leverages Graph Analysis for Fast Processing & Easy Data Exploration
http://p.sf.net/sfu/hpccsystems
_______________________________________________
WiX-devs mailing list
WiX-devs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-devs

Reply via email to