Looking for tips on how to best handle Windows Installer MSI minor/small upgrades/updates (vomus) for Application objects in SCCM 2012 ? Really hoping Microsoft has started to support their own Windows Installer MSI techniques better.
Some background about scenario we are trying to solve. If we leave SCCM out of the picture and do this manually it would look like this. Get the MSI install media files (MyApp v1.0.0), run 1st time install:
» msiexec.exe /i MyApp.ini /qb-! ALLUSERS=2
A new minor upgrade appears for MyApp, upping ProductVersion to v1.0.1 (ProductCode GUID same, PackageCode changed). But not a major upgrade with changed ProductCode GUID. To save processing/time (not full uninstall /x and then /i), we install it by doing a
command-line reinstall/repair. Two variants possible with identical result:
» msiexec.exe /i MyApp.ini /qb-! ALLUSERS=2 REINSTALL=ALL REINSTALLMODE=vomus
» msiexec.exe /fvomus MyApp.ini /qb-! ALLUSERS=2 REINSTALL=ALL
Works fine. As long as the MSI is authored correctly. The biggest hitch has always been that you cannot, as far as previous history goes, have identical command-line for 1st time install of MSI and possible succeeding reinstall/repairs. Meaning, you have to
detect if MSI/ProductCode is installed already, then decide what command-line to use. This behavior is 100% part of Windows Installer MSI logic (Applying Small Updates
(or Minor Upgrades)).
In the past in SCCM (Package Model) we have either had wrapper/passthrough utilities before msiexec.exe that performs a check. Or had different advertisements/collections depending on MSI already installed or not on machine. In those cases, we just updated the source path contents for package, updated DP's, re-run advertisement. Then it got executed with correct command-line.
Now we have SCCM 2012 and Application Model. How do we handle this scenario most correctly/efficiently ?
We have tried to research in a test environment. But only way we seem to get it to work is to create a separate new Application object for v1.0.1, then supersede the v1.0.0 Application object. But it feels like total overkill and a waste of time. It should be possible in some way to update existing MSI deployment type in Application object. Then force some action that results in a "re-run" of command-line on clients, with correct reinstall/repair (vomus) depending on MSI installed or not.
Early days for us and SCCM 2012, so really hope we have overlooked something :-)Any pointers in correct direction would be appreciated. Even if it is a confirmation of SCCM 2012 still not supporting this core Windows Installer MSI technique.