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

Reply via email to