> > The patching scenario is as follows:
> >
> > The product 1.0 is released.
> >
> > The patch 1.01.msp is released and built against 1.0.
> >
> > Another patch is needed, 1.02.msp.  This patch is built against 1.0 so it
> > would include all of the changes since the original release.  (The plan is
> > that 1.02.msp would supercede 1.01.msp and not require 1.01.msp to be
> > installed.)
> >
> > However, if 1.01.msp is already installed, then the installation of 1.02.msp
> > will fail with the error:
> >
> > "The upgrade patch cannot be installed by the Windows Installer service
> > because the program to be upgraded may be missing, or the upgrade patch 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
> > patch."
> >
> > So, as nobody has ever posted a solution to such a problem, is this concept
> > of patching not even supported?  Is the only solution to patch against the
> > last patch, and thus require multiple patches for the product?
>
> AFAIK, this concept of patching  is supported (i do use major upgrade
> scenario with series of patches in my products; using msi 2.0 schema).
> Problem you've described is considered to be an msi 3.0 engine bug. It
> seems that just installing msi 3.1 will fix the problem.
>
> One more thing, you have to author "UpgradeImage" element properly in
> build-my-patch.wxs script:
> add new "TargetImage" element for every version of your product the
> resulting patch must apply to.
> Also, please consider a wix docs for "TargetProductCode" element,
> "AllowMajorVersionMismatches" attribute --
> that information you may find useful.

Thanks Vitaly.  From what I can tell, Windows Installer 3.x no longer
wants major upgrade patches, instead it strongly suggests using the
msi to upgrade.  Therefore, looks like I'm forced to use minor
upgrades for customer product upgrades if I want patches.  The only
thing worse about this is that the minor upgrade msi name for 1.0 and
1.1 releases have to have the same name in order to allow for
upgrading with the msi.

  http://blogs.msdn.com/heaths/archive/2005/08/22/454552.aspx
  http://blogs.msdn.com/windows%5Finstaller%5Fteam/

You were right about needing the additional TargetImage information in
the patch.wxs file.  I figured that out after reading the windows
installer team's blog.

  http://blogs.msdn.com/windows_installer_team/archive/2005/11/04/487044.aspx

If it helps anybody, here is an example of a setup for creating the
first service pack, with the 2nd service pack sections commented out:

=======================================================

<?xml version='1.0' encoding='windows-1252'?>
<Wix xmlns='http://schemas.microsoft.com/wix/2003/01/wi'>

<!-- Increment SP_LEVEL variable to SP number -->
<?define SP_LEVEL="1" ?>

  <!--  <PatchCreation Id='GUIDGUID-2222-2222-2222-222222222222' Guid
for creating 2nd patch-->
  <PatchCreation Id='GUIDGUID-1111-1111-1111-111111111111'
    AllowMajorVersionMismatches='no' AllowProductCodeMismatches='yes'
    CleanWorkingFolder='yes' WholeFilesOnly='no'>

    <PatchInformation Description="Product Foo Service Pack
$(var.SP_LEVEL)" Keywords='Installer'
      Comments='Product Foo Service Pack $(var.SP_LEVEL)'
Manufacturer='Foo, Inc.'
      Languages='1033' Compressed='yes' SummaryCodepage='1252' />

    <PatchMetadata Description="Product Foo Service Pack $(var.SP_LEVEL)"
      DisplayName='Product Foo Service Pack $(var.SP_LEVEL)'
TargetProductName='Product Foo'
      ManufacturerName='Foo, Inc.' MoreInfoURL='www.foo.com'
      Classification='Service Pack' AllowRemoval='yes' />

    <Family Name='FOOPatch' DiskId='2'
MediaSrcProp='FOOPatchProp0$(var.SP_LEVEL)'
SequenceStart='2$(var.SP_LEVEL)00'>
      <UpgradeImage Id='Patch_fixed' src='FIXED\fixed.msi'>
        <TargetImage Id='Patch_fcs' Order='1' IgnoreMissingFiles='no'
src='FCS\fcs.msi' />
        <!--<TargetImage Id='Patch_sp1' Order='2'
IgnoreMissingFiles='no' src='SP1\fixed.msi' />  Use for 2nd patch -->
      </UpgradeImage>
    </Family>

    <TargetProductCode Id='SHIPPEDGUID-XXXX-XXXX-XXXX-XXXXXXXXXXXX' />

    <!--<ReplacePatch Id='GUIDGUID-1111-1111-1111-111111111111' />
Uncomment for 2nd patch-->

  </PatchCreation>
</Wix>

=======================================================

Thanks once again.
-Jon


-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users

Reply via email to