|
|
|
John Robbins
|
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 [hidden email] https://lists.sourceforge.net/lists/listinfo/wix-users |
|
John Robbins
|
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: [hidden email] [mailto:wix-users- >[hidden email]] On Behalf Of John Robbins >Sent: Sunday, December 09, 2007 6:35 PM >To: [hidden email] >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 >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 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 >[hidden email] >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 [hidden email] https://lists.sourceforge.net/lists/listinfo/wix-users |
|||||||||||||||||||
| Free Embeddable Forum Powered by Nabble | Help |