There are several ways to install software and also a number of different solutions to create the setup file for end users to get the product installed onto their systems. Inno Setup, InstallShield and Null Scriptable Install System (NSIS) are software that help create a setup installer, another is Microsoft’s own Windows Installer. Known as MSI files because of the file extension, Windows Installer files are used extensively by Microsoft for updating and installing Windows and other related software, they also have issues such as MSI files not being usable in Safe Mode.
Windows Installer software components are integrated into Windows as standard and MSI packages can be used by system administrators and over networks for remote installations. Many other developers also use MSI installers to pack their programs, often an MSI is embedded inside an executable setup installer so it’s usage is invisible to the end user. Sometimes even when the program itself might not necessarily need installation because there’s only a few files, an MSI is used.
If you are having issues installing a software package as an MSI file or want to get at the files inside, perhaps to make the program portable, there are ways to do it.
View and Extract MSI Files with an Archiver
Although an MSI installer file is more of a database than an archive, such as Zip or RAR, some archiving software can still read and extract the contents of an MSI file.
Probably the most popular free archiving utility, 7-Zip is able to read and extract the contents of an MSI file. As it behaves just like any other readable archive, you can simply right click on the file and choose 7-Zip -> Open archive to open the MSI for viewing.
With the 7-Zip window open, it’s easy to extract the whole MSI or individual files/folders by dragging and dropping them from the window or using the Extract button. You can also do similar with the 7-Zip -> Extract context menu commands and extract the whole contents of the installer to a folder.
HaoZip is a free archiver from China and looks a little like WinRAR in it’s layout. It also includes several features like checksum viewer, batch picture converter, image viewer, trojan scanner, virtual disk and batch file renamer.
An MSI can be opened and extracted using the same methods as 7-Zip (context menu or drag and drop etc). We found that HaoZip is better at opening slightly trickier MSI installers, for example, the kavkis.MSI from Kaspersky Anti Virus includes an “external.cab” which contains a single DLL file. 7-Zip only shows you the DLL and nothing else, HaoZip on the other hand shows you the CAB itself and several other files from inside the MSI installer.
Other free archiving software such as Bandizip and paid offerings like WinRAR or PowerArchiver can also open MSI installer files but they don’t really show or allow you to extract anything differently to the two archivers above.
View an MSI and Extract with a Dedicated Tool
A specialist tool to extract the contents of windows Installer files should be the most compatible and give the best results, here we look at some dedicated MSI extractors.
Universal Extractor is a tool we’ve mentioned many times before because it’s great for unpacking many different types of installer file, including NSIS, InstallShield, Inno Setup and of course Windows installer (MSI). A Russian based fork has updated the interface and third party unpackers used by the original program. After installing Universal Extractor unpack an MSI file by using the right click menu entry or drop the file onto the main window.
It will prompt you that it supports 4 extract methods; MSI Administrative Installer (standard Command Line argument), MsiX extraction (Microsoft command line tool), MSI TC Packer extraction (Total Commander plugin) and JSWare unpacker Extension (Oneclick MSI Unpacker script from JSWare). If the selected method does not seem to work, simply rerun Universal Extractor and select an alternative method. Universal Extractor only extracts all the files in an MSI package and doesn’t allow you to view what is inside the MSI package.
A portable and free utility which is designed specifically for the task of viewing and extracting files from MSI packages is Less MSIérables, also known as LessMSI. In addition to extracting files, the program also has a couple of other tabs, one to view the data tables from the package, and another tab to view the summary information stored inside the package (dates, languages, version numbers, publisher etc).
Simply browse or drop an MSI onto the window and the contents will be shown. All files can be selected for extraction or you can multi select with the mouse and the Shift or Ctrl keys. We found LessMSI very effective at reading and extracting more tricky MSI files where archivers and tools like Universal Extractor all failed to read the whole contents. An option to add a right click context menu entry to Explorer is in Edit -> Preferences.
MSI Unpacker by JSWare
JSWare make a few useful MSI related tools to aid in their viewing and unpacking. In addition to the MSI Unpacker tool portable executable mentioned here, they also have an HTA webpage based script and also a VBScript which is used as one of the options in Universal Extractor. Simply run the program and drop an MSI onto the window or click the button to browse for a file.
Pressing “Get Installer info” will populate the bottom pane with all the names and file versions inside the MSI, “Unpack Installer file” extracts all the files to the default or a custom chosen folder. As MSI packages can add to or edit the system registry, the “Show Registry Settings” button will display a list of all registry entries that would be affected by running the install, the list of entries can be copied to the clipboard from the right click or Edit menu. A list of files in the MSI can be copied the same way.
Extract an MSI File Using the Command Line
Because Windows Installer files are built to allow silent installations and administrative installs, it make sense to have a good command line interface. Windows has the ability to allow the MSI file contents to be extracted using the Command Prompt or via a script. Simply open the Run box (Win+R) or a Command Prompt and type msiexec to get a list of arguments.
Thankfully the syntax to unpack an MSI file is pretty simple, the following can be inserted into the Run box, Command Prompt or your own script.
msiexec /a pathtoMSIfile /qb TARGETDIR=pathtotargetfolder
The “/qb” argument tells the installer to display a simple UI while unpacking, if you wish to make the process completely silent use “/qn” instead.
If you find yourself needing to extract MSI files fairly regularly, it’s also easily possible to add an entry into the Windows Explorer Context Menu so you can extract the file at the click of a button. Download the Zip file below, open it and double click the Add_MSI_Extract_Context.reg file to import the data into your registry.
Now right click on an MSI and you’ll get a new option in the Explorer menu. To remove this menu entry again use the Remove_MSI_Extract_Context.reg in the Zip.
The contents will be extracted to a new folder at the same location as the MSI file with the name “[MSIfilename] Extracted”. If you receive an error while trying to use Windows Installer from the command line, you may have to use one of the dedicated tools above instead.
Editor’s Note: Although all of these above methods can extract most MSI files with ease, getting all the files from packages with embedded CAB files and other slightly tricky methods causes most tools to miss some or even all of the files contained inside. We found Less MSIérables to produce the best results and get more files than any other method. If you can’t seem to get the files you expect, try LessMSI.