Install and Uninstall multiple MSI Files in one application

If you have multiple MSI files which belong to one application, then you have problems to install them as single application in SCCM 2012. First of all it’s important that you check these MSI files are really one software and not components which could also be used from other applications. When there are components you have to create multiple applications and define requirements in SCCM.

Now the question is how to install multiple MSI files? Mostly you would create a simple install script(CMD, VBS…). But then you have mostly not solved these problems:

  • What does happen when one MSI fails during installation?
  • What does happen when SCCM restarts the Installation after an error occurred and some MSI are already installed?
  • Are log files written for every MSI installation?

To solve all these problems we created the multipleMSIInstaller script which can handle multiple MSI, MSP and MST files. The installations are transaction oriented and resistant against installation errors.

You can download the multiMSIInstaller here.

Configuration

You have to configure the following variables in the script:


$Manufacturer  = "Microsoft"
$Product       = "Office"
$Version       = "15.456.123"
$PkgVersion    = "001"
$Configuration = "" # Leave blank if no configuration, do not delete line
$PkgType       = "P" #Type P(Physical)/V(Virtual)
$Language      = "EN"
$Architecture  = "x86"

$LogDirectory  = "C:\Windows\Logs\SCCM\Apps\"

$applications = @(
@("Application1.msi", @(),@("App1_custom.mst"),@("PARAM1=123","PARAM2=123")),
@("Application2.msi", @(),@(),@("PARAM1=123")),
@("Application3.msi", @("App3_patch.msp"),@("App3_custom.mst"),@())
)

The first nine variables don’t need an explanation. But the variable $applications need one:

In this array all install information is stored. With these examples you should see how it works:

  • The first value of the array contains the MSI files:
    @(@(“MsiFilename”,@(),@(),@()))
  • The second value is an array and contain one or more MSP Files:
    @(@(“MsiFilename”,@(“MSPFilename”),@(),@()))
    or
    @(@(“MsiFilename”,@(“MSPFilename1”,”MSPFilename2”),@(),@()))
  • The third value is an array too and can contain one or more MST Files:
    @(@(“MsiFilename”,@(),@(“MSTFilename”),@()))
    or
    @(@(“MsiFilename”,@(),@(“MSTFilename1”,”MSTFilename2”),@()))
  • In the last array you can define properties which are attached to the executing process:
    @(@(“MsiFilename”,@(),@(),@(“PROPERTY1=123”)))
    or
    @(@(“MsiFilename”,@(),@(),@(“PROPERTY1=456”,”PROPERTY2=123”)))

Install/Uninstall package

To install the applications configured in the PowerShell script you have only to run the script as an administrator. To uninstall this package you have to start the script with the parameter “/uninstall”

Operating/Troubleshooting

When you install an application with this script a log files for every MSI file is generated. There is also a log file of the script which can help you troubleshooting problems with exit codes or the multiMSIInstaller script.

Thomas Kurth

Thomas Kurth

I’m a consultant, trainer and architect formodern workplace and enterprise mobility projects with Microsoft Technologies in the past eight years. I love to push and design the modern workplace based on Windows 10, EM&S and O365 for my customers which is the only answer for the current security threats, agile world and the fast-changing business requirements of my customers. Important for me is to simplify and automate the operational processes, because there are the highest costs.
Enterprise Adminstrator ExpertMCTCMCE

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Subscribe
Hosting sponsored by:
Archive