PowerShell Module for MSI Creation

This PowerShell module is a simple wrapper around the open-source project called the “Wix Toolset“. This is an excellent project that creates MSI files for application installs using a series of files that describe how the MSI file should be generated in a complex XML file format. It is well worth considering using the project natively before using this PowerShell module as it has a lot of additional functionality that is not currently covered in the PowerShell module. However, if your needs for creating MSI files is limited to the following components then you can use the scripting module:

  • Files
  • Directories (and all their child directories and files)
  • Registry Entries
  • Shortcuts
  • Icons
  • Windows Services
  • Folder Permissions

Prerequisites

The PowerShell module builds the Wix project (which then builds your MSI), uses MSBuild.exe. The easiest way to get this installed is to install Visual Studio – Any version, including the free community edition – You don’t need to open Visual Studio, but it does need to be installed.

You DO NOT need to install any Wix Toolset software – that magic of modern software development will take care of that and install the necessary Nuget packages just in time to compile the MSI.

Known Issues

  • The GUI we are providing is currently very basic. To allow users to change the installation folder, you would need to include this detail in the command line of MSIEXEC.
  • No support for multi-string registry keys, only DWORD and REG_SZ are currently available.
  • Other stuff we haven’t spotted during our limited internal testing.

Release Notes

V1.0.4 – 2023-06-23 – Finally a GUI arrives!

  • FEATURE – You can now have a very customisable GUI on your installer. Change the graphics and the license text. Hoping to add a “Change the install folder” feature very soon. The MSI is now packaged using the updated code.
  • FEATURE – Configure your own license text in the installer using an RTF (Rich Text File) – Use WordPad for compatibility. Then just use the AddLicenseRFTFile method on the WixProjectV4 object. e.g., $Wix.AddLicenseRFTFile(“.\Joke.rtf”). Alternatively, you can just have a file called License.rtf in the current working directory when compiling the MSI.

V1.0.3 – 2023-06-07

  • FEATURE – Upgraded to using WIX toolset v4.0.1 – Apparently, it’s just bug fixes so shouldn’t affect this module in any way.

v1.0.2 – 2023-05-25

  • FIX – Updated data type from Get-MSIProductCodeFromMSI to String – It way returning an Array of type object.
  • FEATURE – Added Get-MSIProperty function – This should allow any Property value to be returned from an MSI.
  • FEATURE – Add-MSIProperty and Update-MSIProperty functions added to create new properties or update existing properties in MSI files – This should help creating MST transform files (MST)
  • FEATURE – New-MSITransform function added. Create an MSI, update it with the Add-MSIProperty and Update-MSIProperty functions (or ORCA, etc.), and then use the original and modified MSI files to create an MST transform.

v1.0.1 – 2023-05-18

  • FIX – MSI version now updates correctly when version is incremented.
  • FEATURE – Added Get-MSIProductCodeFromMSI function to module.
  • FEATURE – Added support for creating directory properties such as INSTALLFOLDER for use in the MSIExec command line. For example:
    MSIExec.exe /i MyMSIFile.msi INSTALLFOLDER=”C:\StrangeInstallFolder” /qb

v1.0.0

Initial Release

Installation Media

Just unzip the archive below and install the MSI file.

Usage Instructions

Currently we have no formal documentation of the product, but you can see it working with examples and some background information in our initial blog post here.

Leave a Reply