I'm trying to figure out the best way to patch our product using the new
Wix patching method or using the PCP/PatchWiz method.  

 

Right now I'm trying to accomplish everything using the new Pure Wix
patch method.  I'm using the patch samples from the Wix help file for
testing.

My goal right now is to create a baseline install 1.0.0, then create
1.0.1 full install along with a patch.  Then create 1.0.2 along with a
patch.  I'm able to get the same 1.0.2 patch to apply to 1.0.0 and 1.0.0
that's been patched with 1.0.1 patch, but I can't get the same 1.0.2
patch to update 1.0.1 that was installed directly from the .msi.

 

The reason is the patches are using the MinorUpdateTargetRTM flag so
that I could get the 1.0.2 patch to apply to both 1.0.0 and 1.0.0
patched to 1.0.1.  So 1.0.2 won't target a baseline of 1.0.1 this way.

 

I remember in the PCP method you could target multiple baselines to
accomplish this.  So from reading the minimal patch documentation in
Wix, I tried creating multiple Media entries in the patch.wxs file with
different cabinet names.  When I try to pass the wixmsp file to pyro,
pyro crashes:

 

Pyro.exe 1.0.2\patch.wixmsp -out 1.0.2\patch.msp -t RTM
1.0.2\1.0.0.wixmst -t _1.0.1 1.0.2\1.0.1.wixmst

 

pyro.exe : error PYRO0001 : Item has already been added. Key in
dictionary: 'SampleFile'  Key being added: 'SampleFile'

 

Exception Type: System.ArgumentException

 

Stack Trace:

   at System.Collections.Hashtable.Insert(Object key, Object nvalue,
Boolean add)

   at System.Collections.Hashtable.Add(Object key, Object value)

   at
Microsoft.Tools.WindowsInstallerXml.Binder.UpdateFileInformation(Output
output, FileRowCollection fileRows, MediaRowCollection mediaRows,
IDictionary`2 infoCache)

   at Microsoft.Tools.WindowsInstallerXml.Binder.BindDatabase(Output
output, String databaseFile)

   at Microsoft.Tools.WindowsInstallerXml.Binder.Bind(Output output,
String file)

   at Microsoft.Tools.WindowsInstallerXml.Tools.Pyro.Run(String[] args)

 

Here is my patch.wxs file:

<?xml version="1.0" encoding="utf-8"?>

<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi";>

  <Patch

      AllowRemoval="yes"

      Manufacturer="Dynamo Corp"

      MoreInfoURL="http://www.dynamocorp.com/";

      DisplayName="Sample Patch"

      Description="Small Update Patch"

      Classification="Update"

      MinorUpdateTargetRTM="yes" 

        >

 

    <Media Id="5000" Cabinet="RTM.cab">

      <PatchBaseline Id="RTM"/>

    </Media>

 

    <Media Id="6000" Cabinet="_1.0.1.cab">

      <PatchBaseline Id="_1.0.1"/>

    </Media>

 

    <PatchFamilyRef Id="SamplePatchFamily"/>

  </Patch>

 

  <Fragment>

    <PatchFamily Id='SamplePatchFamily' Version='$(var.Version)'
Supersede='yes'>

      <ComponentRef Id="SampleComponent"/>

    </PatchFamily>

  </Fragment>

</Wix>

 

Is this just unsupported at this time, or is there a better way to
accomplish this?  I've been using MSI since it was in beta of Windows
2000, and I always thought .msp's were really cool if you build them
manually, but I could never find a good method of using them in a real
world build scenario that doesn't require a ton of time to get every
release just right.  I know Microsoft releases .msp patches for hotfixes
or service packs once in a while, but a lot of companies have regular
full releases of products every month or two. Being able to release
small patches for existing customers along with the full installs for
new customers every month would be great, but the amount of effort to
build .msp files for each release is too significant.  So I think most
companies just release full .msi's.

 

Thanks,

Mike Ballou

 

 

-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users

Reply via email to