There is a 'hacky' way to do it but bear in mind that once you follow
the 'hacky' method, all future patches will be required to be built the
same way. Also because you've 4 Products, your patches are going to be
around 4 times as big as each Product will have it's own CAB (since it
has it's own transforms).

You need a Patch Family for each unique Product (in your case 4). To get
the new admin image for each one take a copy of the one you already
have, open it in an MSI editor like InstEd! or Orca, set the Product
Code to the same as one of the other versions & regenerate the Package
code. Save your MSI & you now have a version which will update another
Product. Do this another 2 times for the other 2 Products, set up your
Patch Family's accordingly & add TargetProductCode elements for your 4
Products & it should create an MSP containing the transforms for each
Product up to the new one (open the MSP in InstEd! or Orca & you should
see a bunch of .mst files

It is a horrible horrible hack though & as stated before, you'll need to
keep doing the same for each subsequent patch which is neither fun nor
quick to create & test each time. Personally I'd release a Major Upgrade
in which you define your Product Code rather than using an
auto-generated one & patch from that basis as it's more reliable & way
less hassle.

Moral of the story: Using * for Product Id isn't always a good idea.

Palbinder Sandher 
Software Deployment & IT Administrator
T: +44 (0) 141 945 8500 
F: +44 (0) 141 945 8501 

http://www.iesve.com 
**Design, Simulate + Innovate with the <Virtual Environment>**
Integrated Environmental Solutions Limited. Registered in Scotland No.
SC151456 
Registered Office - Helix Building, West Of Scotland Science Park,
Glasgow G20 0SP
Email Disclaimer
 

-----Original Message-----
From: Tom Crozier [mailto:tcroz...@rackwise.com] 
Sent: 03 February 2011 20:13
To: General discussion for Windows Installer XML toolset.
Subject: [WiX-users] Patching multiple major upgrade releases with
different product codes

All -
                I have multiple versions of a product released in the
field that I need to upgrade with a patch. The installer that all the
versions are all based on can perform a major upgrade from a previous
version. I believe they should have used the same product id but they
don't because the wxs file has '*' for the product id. All the versions
are basically the same except for a few additional files from the
original version to the latest one. The version numbers of the
installers only differ in the fourth place (e.g. 1.5.0.120, 1.5.0.147,
1.5.0.162 and 1.5.0.188)and they all use the same upgrade code.

My question is how do I go about creating a patch that can upgrade all
four versions and bring them up to the same version so they can be
updated in the future?

I seem to be able to create a patch against a single version but against
multiple versions I get the following error.
  ERROR: Since MSI 3.0 will block installation of major upgrade patches
with sequencing information, creation of such patches is blocked.

The following is the start of my patch creation file which worked until
I put the second TargetImage line in.

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

  <?define var.Manufacturer = "Acme, Inc."?>
  <?define var.PRODUCTNAME  = "App" ?>
  <?define var.ReleaseNumber= "1.5.0" ?>

  <PatchCreation Id='{01865DA7-1DE1-45ab-BB7C-7B89CA10CBCC}'
    AllowMajorVersionMismatches='no'
    AllowProductCodeMismatches='yes'
    CleanWorkingFolder='yes'
    WholeFilesOnly='yes'>

    <PatchInformation
      Description="App SP 1"
      Keywords='Installer,MSI,Database'
      Comments='App SP 1'
      Manufacturer='$(var.Manufacturer)'
      Languages='1033'
      Compressed='yes'
      SummaryCodepage='1252'
      ShortNames="no" />

    <PatchMetadata
      Description="1st service pack for App"
      DisplayName='App SP 1'
      TargetProductName='$(var.PRODUCTNAME) v$(var.ReleaseNumber)'
      ManufacturerName='$(var.Manufacturer)'
      MoreInfoURL='www.acme.com'
      Classification='Service Pack'
      AllowRemoval='no' />

    <Family
      Name='APP150'
      DiskId='3'
      MediaSrcProp='APP150Src'
      SequenceStart='2000'>

      <UpgradeImage
        Id='PatchedImage'
        SourceFile='C:\Official Releases\1.5.0.227\AdminVer\App.msi'>

        <TargetImage
          Id='OrigImage'
          Order='2'
          IgnoreMissingFiles='no'
          SourceFile='C:\Official Releases\1.5.0.120\AdminVer\App.msi'/>

        <TargetImage
          Id='OrigImage2'
          Order='3'
          IgnoreMissingFiles='no'
          SourceFile='C:\Official Releases\1.5.0.147\AdminVer\App.msi'/>


      </UpgradeImage>

    </Family>

  </PatchCreation>
</Wix>

Thanks for your help
Tom

------------------------------------------------------------------------
------
The modern datacenter depends on network connectivity to access
resources and provide services. The best practices for maximizing a
physical server's connectivity to a physical network are well understood
- see how these rules translate into the virtual world? 
http://p.sf.net/sfu/oracle-sfdevnlfb
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users



------------------------------------------------------------------------------
The modern datacenter depends on network connectivity to access resources
and provide services. The best practices for maximizing a physical server's
connectivity to a physical network are well understood - see how these
rules translate into the virtual world? 
http://p.sf.net/sfu/oracle-sfdevnlfb
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users

Reply via email to