I finally found the barely documented MinorUpdateTargetRTM='1' attribute you can add to the PatchMetadata element to make my 1.00 to 1.02 scenario work.
John Wintellect http://www.wintellect.com 877-968-5528 >-----Original Message----- >From: [EMAIL PROTECTED] [mailto:wix-users- >[EMAIL PROTECTED] On Behalf Of John Robbins >Sent: Sunday, December 09, 2007 6:35 PM >To: wix-users@lists.sourceforge.net >Subject: [WiX-users] Patching Pain > >Hello, > >Using WiX 2.0, I'm trying to set up a patching scheme where if the user >has installed a 1.00 version of the product they can apply patches they >come out for that version. However, I'm missing something big because I >can only get a single patch to work and no subsequent patches as they >fail with error 1642. > >Scenario: > - The user has installed 1.00. > - A 1.01 patch is released and they apply it. > - A 1.02 patch that contains the 1.01 fixes is released and the >user can apply it. > - A 1.03 patch that contains both 1.01 and 1.02 fixes is >released, they *skip* that patch. > - A 1.04 patch that sums up 1.01-1.03 fixes is released, and >when applied, gets them all fixes up through 1.04. > > In other words, I want the patches to be cumulative so whenever >the client feels like upgrading as patches are released, the install >accounts for whatever patch level version they have on the machine and >brings them to the latest and greatest. If I create separate patches for >each version, they can all be properly applied in order, but I want a >single patch file that will > >Here's what I've done: > 1. Created the 1.00, 1.01, and 1.02 full installs with the same >GUIDs for product codes and upgrade codes. The full installs properly >upgrade the existing older installations. > 2. Using the steps from the tutorial >(http://www.tramontana.co.hu/wix/lesson4.php), I've created two .WXS >files, Patch1.0-1.01.wxs and Patch1.0-1.02.wxs. > 3. Key parts of Patch1.0-1.01.wxs: > > <PatchCreation Id='F3F065D3-45CE-4B24-8759-925608FCE97F' > AllowMajorVersionMismatches='no' > AllowProductCodeMismatches='no' > CleanWorkingFolder='no' > WholeFilesOnly='no'> > ... > <UpgradeImage Id='Patch_fixed' > src='.\ADMIN1.01\Version1.01.msi'> > <TargetImage Id='Patch_error' > Order='1' > IgnoreMissingFiles='no' > SourceFile='.\ADMIN1.0\Version1.00.msi' /> > </UpgradeImage> > </Family> > <TargetProductCode Id='549A9B54-40DD-46DC-A960-5F76BB921BFF' /> > ... > > 4. Doing the tutorial steps, I created the .MSP and it properly >updates from 1.00 to 1.01. > 5. Key parts of Patch1.0-1.02.wxs (notice that I'm building the >patch from 1.00 sources and the 1.02 sources): > > <PatchCreation Id='A5B7EB6F-427A-485C-A9AE-D5B033CF05B3' > AllowMajorVersionMismatches='no' > AllowProductCodeMismatches='no' > CleanWorkingFolder='no' > WholeFilesOnly='no'> > ... > <UpgradeImage Id='Patch_fixed' > src='.\ADMIN1.02\Version1.02.msi'> > <TargetImage Id='Patch_error' > Order='1' > IgnoreMissingFiles='no' > SourceFile='.\ADMIN1.0\Version1.00.msi'/> > </UpgradeImage> > </Family> > > <TargetProductCode Id='549A9B54-40DD-46DC-A960-5F76BB921BFF' /> > <ReplacePatch Id ='F3F065D3-45CE-4B24-8759-925608FCE97F'/> > ... > > 6. When applying the 1.02 patch to the updated 1.01 the log >reports: >MSI (c) (F4:F4) [17:24:39:546]: Final Patch Application Order: >MSI (c) (F4:F4) [17:24:39:546]: {F3F065D3-45CE-4B24-8759-925608FCE97F} - > >MSI (c) (F4:F4) [17:24:39:546]: Other Patches: >MSI (c) (F4:F4) [17:24:39:546]: Unknown\Absent: >{A5B7EB6F-427A-485C-A9AE-D5B033CF05B3} - >C:\Junk\Cruft\patching\Test\Patch1.0-1.02.msp >The upgrade cannot be installed by the Windows Installer service because >the program to be upgraded may be missing, or the upgrade may update a >different version of the program. Verify that the program to be upgraded >exists on your computer and that you have the correct upgrade. >C:\Windows\Installer\bea84f0.msi >MSI (c) (F4:F4) [17:24:39:547]: Product: Foobar 1.0 - Update >'{A5B7EB6F-427A-485C-A9AE-D5B033CF05B3}' could not be installed. Error >code 1642. Additional information is available in the log file >C:\Junk\Cruft\patching\Test\log.log. >MSI (c) (F4:F4) [17:24:39:548]: Windows Installer installed an update. >Product Name: Foobar 1.0. Product Version: 1.0.0. Product Language: >1033. Update Name: {A5B7EB6F-427A-485C-A9AE-D5B033CF05B3}. Installation >success or error status: 1642. >MSI (c) (F4:F4) [17:24:39:548]: Product: Foobar 1.0 -- Installation >failed. >MSI (c) (F4:F4) [17:24:39:549]: Windows Installer installed the product. >Product Name: Foobar 1.0. Product Version: 1.0.0. Product Language: >1033. Installation success or error status: 1642. > >Any help greatly appreciated. > >John >Wintellect >http://www.wintellect.com >877-968-5528 > > >----------------------------------------------------------------------- - >- >SF.Net email is sponsored by: >Check out the new SourceForge.net Marketplace. >It's the best place to buy or sell services for >just about anything Open Source. >http://sourceforge.net/services/buy/index.php >_______________________________________________ >WiX-users mailing list >WiX-users@lists.sourceforge.net >https://lists.sourceforge.net/lists/listinfo/wix-users ------------------------------------------------------------------------- SF.Net email is sponsored by: Check out the new SourceForge.net Marketplace. It's the best place to buy or sell services for just about anything Open Source. http://sourceforge.net/services/buy/index.php _______________________________________________ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users