[wix-users] Patch installation

Robert Goodridge robert.goodridge at lansa.com.au
Wed Aug 3 21:37:26 PDT 2016

Hi Stephanie,

Executable objects are installed based on the Version number in the executable being greater than the currently installed version of the executable. That's it. No workarounds, Its not date based or difference based. Just version. This is a Windows Installer behaviour, not WiX.

So its not earlier or later, its just version number. (And I'm pretty sure that goes for the entire Patch too. That is an msp version less than the currently installed latest msp will be skipped). We match the msp version to the DLL version, hence its testing my memory back 5 years ago when we worked this all out.

If the DLL is version and the currently installed DLL is, the DLL will not be installed.

FYI: We only use patches for "Small Updates" as defined by Rule 46 in the following link.

This link http://www.evernote.com/l/AA1cY9zyX-NOvIHtOXzUtARpOTakERv6ifU/ (the original link is no longer accessible hence a link to my copy. Of the page)

Warm regards

Rob Goodridge | CloudArchitect | LANSA Product Centre

-----Original Message-----
From: wix-users [mailto:wix-users-bounces at lists.wixtoolset.org] On Behalf Of Stephanie Lutz (Plumbline)
Sent: Wednesday, 3 August 2016 11:06 PM
To: 'wix-users at lists.wixtoolset.org' <wix-users at lists.wixtoolset.org>
Subject: [wix-users] Patch installation

I'm working with update patches on our product and am trying to find a solution to ensure the order of patch installation.

There was a "cumulative update" done to our main product.  It was delivered as a Patch, and it contained several executables and .dlls as Components, all of which were included in a single PatchFamily:  e.g.:

      Manufacturer="My Company"
      DisplayName="Product Cumulative Update"
      Description="Cumulative Update 1"

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

    <!--Server Files-->
    <PatchFamily Id="CU1_Server" Version='$(var.Version)' Supersede='yes' ProductCode='$(var.ProductCode)'>
      <?include $(env.INETROOT)\ HotFix\$(env.HOT_FIX_LOCATION)\HotFixComponentRef.wxi?>
      <ComponentRef Id="_app1.exe"/>
      <ComponentRef Id="_app2.exe"/>
      <ComponentRef Id="_app3.exe"/>
      <ComponentRef Id="_app4.exe"/>
      <ComponentRef Id="_app5.exe"/>
      <ComponentRef Id="_app6.exe"/>
      <ComponentRef Id="_app7.exe"/>

The GUID is being generated for us.

We then deliver additional hotfixes to the individual executables.   Each will have a version based on when it was created (i.e. the month and day are used as part of the version).
 So, if a hotfix for app1 was built earlier than a hotfix for app2, if the app2 hotfix is installed first - and both are built with the PatchFamily id of CU1_Server (as the cumulative update above), then the update for app1 will not be installed since the version is earlier than the app2 hotfix, even though different executables are being updated.

Also, some of our hotfixes were defined and built with a different PatchFamily specified.  While this addressed the "version" issue, this caused failures since the GUIDs were auto-generated - and it would not install new patches with a GUID less than a previously-installed patch.

Am I interpreting the order of installation correctly - and is there a way to ensure that patches that contain different components can be installed, even if built earlier?

I'm also working with our next cumulative update and need to ensure that all previous patches for this product are overwritten.
I've seen suggestions that a component can be in multiple patch families.  I wondered if that would be an option and would help this issue - but was unsure of how it determines the order of installation in that instance.

Thank you for any advice or help.

WiX Toolset Users Mailing List provided by FireGiant http://www.firegiant.com/

More information about the wix-users mailing list