Microsoft Windows Installer.
Syntax MSIEXEC /Option RequiredParameter [OptionalParameter] Install Options: Install or configure a product: MSIEXEC /package Product.msi MSIEXEC /i Product.msi Administrative install, Install a product on the network: MSIEXEC /a Product.msi Advertise a product to all users: MSIEXEC /j m Product.msi [/t TransformList] [/g LanguageID] Advertise a product to current user: MSIEXEC /j u Product.msi [/t TransformList] [/g LanguageID] Uninstall the product: MSIEXEC /uninstall Product.msi MSIEXEC /x Product.msi MSIEXEC /uninstall ProductCode MSIEXEC /x ProductCode Extract files from an MSI: MSIEXEC /a MSIFile /qb TARGETDIR=DestinationDirectory Display Options: Quiet mode, no user interaction /quiet Unattended mode - progress bar only /passive Set user interface level: None /qn Set user interface level: Basic UI /qb Set user interface level: Reduced UI /qr Set user interface level: Full UI (default) /qf Help information /help Restart Options: Do not restart after the installation is complete: /norestart Prompt the user for restart if necessary: /promptrestart Always restart the computer after installation: /forcerestart Logging Options: /le Logfile Log All error messages /lw Logfile Log Non-fatal warnings /li Logfile Log Status messages /la Logfile Log Start up of actions /lr Logfile Log Action-specific records /lu Logfile Log User requests /lc Logfile Log Initial (UI) parameters /lm Logfile Log Out-of-memory or fatal exit information /lo Logfile Log Out-of-disk-space messages /lp Logfile Log Terminal properties /lv Logfile Log Verbose output /lx Logfile Log Extra debugging information /l* Logfile Log all information, except for v and x options /log Logfile Equivalent of /l* LogFile /l+ Logfile Append to an existing log file. /l! Logfile Flush each line to the log. Update Options: Apply update(s) /update Update1.msp[;Update2.msp] Remove update(s) for a product: /uninstall PatchCodeGuid[;Update2.msp] /package Product.msi | ProductCode Repair Options: /fp Repair/fix - replace missing files /fo Repair/fix - replace Older files(default) /fe Repair/fix - replace older or Equal date files /fd Repair/fix - replace Different version files /fc Repair/fix - replace files based on Checksum differences /fa Repair/fix - replace All files /fu Repair/fix - rewrite HKCU registry(default) /fm Repair/fix - rewrite HKLM registry(default) /fs Repair/fix - recreate shortcuts(default) /fv Repair/fix - rewrite local cache from source Set Public Properties [PROPERTY=PropertyValue]
All Command-line options are case insensitive. Windows installer (and msiexec) have been updated with each major release of Windows, Installer redistributables are available at the Microsoft Download Center.
Msiexec sets an error level on return that corresponds to System Error Codes.
Do not use the domain controller SYSVOL folder as a Windows Installer installation point, doing so can result in the following error when you attempt to run the Windows Installer (.msi) package:
This installation package could not be opened. Verify that the package exists and that you can access it, or contact the application vendor to verify that this is a valid Windows Installer package.
This is because the SYSVOL folder is created with the SHI1005_FLAGS_RESTRICT_EXCLUSIVE_OPENS attribute, which prevents it from being exclusively locked by Windows Installer. Having locked files on a SYSVOL will create Active Directory directory service synchronization problems.
x64 bit installer, per-machine install:
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstallx64 bit installer, per-user install:
HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstallx86 bit installer, per-machine install:
HKLM\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstallx86 bit installer, per-user install:
HKCU\SOFTWARE\ WOW6432Node\Microsoft\Windows\CurrentVersion\UninstallTo query these in PowerShell, more here:
$Apps = @()
$Apps += Get-ItemProperty "HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*" |
Select-Object DisplayName, DisplayVersion, Publisher, InstallDate$Apps += Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*" |
Select-Object DisplayName, DisplayVersion, Publisher, InstallDate$Apps
Install an application from a .MSI file:
msiexec /i "C:\Install\windevclusterapp.msi"
List the GUID's of all software installed via Windows Installer, using PowerShell:
PS C:\> Get-CimInstance -computername workstation64 Win32_Product | Format-Table IdentifyingNumber, Name, LocalPackage -AutoSize
UnInstall a program, using its GUID:
msiexec /uninstall "{5AFF6499-63BA-4A36-83B2-8D256404AC3D}" /log "C:\install\windevclusterapp.txt"
or remotely with psexec
psexec \\$workstation -s msiexec /uninstall "{5AFF6499-63BA-4A36-83B2-8D256404AC3D}" /log "C:\install\windevclusterapp.txt"
Extract the files from a .MSI installer:
msiexec /a proginstall.msi /qb TARGETDIR=C:\demo\extractedprog
“People don’t resist change. They resist being changed!” ~ Peter Senge.
CHANGE - Terminal Server session install mode.
MSIinfo -
Edit or display the summary information stream of an MSI database. (Windows Installer SDK).
ORCA - A database table editor for creating and editing Windows Installer packages and merge modules. (Windows Installer SDK).
REGSVR32 - Register or unregister a DLL.
RunDll32 - Uninstall DLL’s e.g. MS Java.
WINGET - Windows Package Manager.
Get-CimInstance Win32reg_AddRemovePrograms
docs.microsoft.com - Released Versions of Windows Installer.
Q310747 - System File Checker (Sfc.exe).
Q974524 - Win32_Product will perform a repair of all installed applications.
PowerShell: Get-Package -Name SomeProduct
Equivalent bash command (Linux): RPM - Rpm Package Manager.