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