Platform SDK: Windows Installer

Command Line Options

The executable program that interprets packages and installs products is Msiexec.exe. Note that Msiexec also sets an error level on return that corresponds to system error codes. The following table describes the command-line options for this program.

Option Parameters Meaning
/I Package|ProductCode Installs or configures a product.
/f [p|o|e|d|c|a|u|m|s|v] Package|ProductCode Repairs a product. This option ignores any property values entered on the command line. The default argument list for this option is 'pecms'. This option shares the same argument list as the REINSTALLMODE property.

p - Reinstall only if file is missing

o - Reinstall if file is missing or if an older version is installed.

e - Reinstall if file is missing or an equal or older version is installed.

d - Reinstall if file is missing or a different version is installed.

c - Reinstall if file is missing or the stored checksum doesn't match the calculated value. Only repairs files that have msidbFileAttributesChecksum in the Attributes column of the File table.

a - Force all files to be reinstalled.

u - Rewrite all required user specific registry entries.

m - Rewrite all required computer-specific registry entries.

s - Overwrite all existing shortcuts.

v - Run from source and re-cache the local package. Do not use the v reinstall option for the first installation of an application or feature.

/a Package Administrative installation option. Installs a product on the network.
/x Package|ProductCode Uninstalls a product.
/j [u|m]Package

or

[u|m]Package /t Transform List

or

[u|m]Package /g LanguageID

Advertises a product. This option ignores any property values entered on the command line.

u - Advertise to the current user.

m - Advertise to all users of machine.

g - Language ID

t - Applies transform to advertised package.

/L [i|w|e|a|r|u|c|m|o|p|v|+|!]Logfile Specifies path to log file and the flags indicate which information to log.

i - Status messages

w - Non-fatal warnings

e - All error messages

a - Start up of actions

r - Action-specific records

u - User requests

c - Initial UI parameters

m - Out-of-memory or fatal exit information

o - Out-of-disk-space messages

p - Terminal properties

v - Verbose output

+ - Append to existing file

! - Flush each line to the log

"*" - Wildcard, log all information except for the v option. To include the v option, specify "/l*v".

/m filename Generates an SMS status .mif file. Must be used with either the install (-i), remove (-x), administrative installation (-a), or reinstall (-f) options. The ISMIF32.DLL is installed as part of SMS and must be on the path.

The fields of the status mif file are filled with the following information:

Manufacturer - Author

Product - Revision Number

Version - Subject

Locale - Template

Serial Number - not set

Installation - set by ISMIF32.DLL to "DateTime"

InstallStatus - "Success" or "Failed"

Description - Error messages in the following order: 1) Error messages generated by installer. 2) Resource from Msi.dll if install could not commence or user exit. 3) System error message file. 4) Formatted message: "Installer error %i", where %i is error returned from Msi.dll

/p PatchPackage Applies a patch. To apply a patch to an installed administrative image you must combine options as follows:

/p <PatchPackage> /a <Package>

/q n|b|r|f Sets user interface level.

q , qn - No UI

qb - Basic UI . Use qb! to hide the Cancel button.

qr - Reduced UI with no modal dialog box displayed at the end of the installation.

qf - Full UI and any authored FatalError, UserExit, or Exit modal dialog boxes at the end.

qn+ - No UI except for a modal dialog box displayed at the end.

qb+ - Basic UI with a modal dialog box displayed at the end. The modal box is not displayed if the user cancels the installation. Use qb+! or qb!+ to hide the Cancel button.

qb- - Basic UI with no modal dialog boxes. Please note that /qb+- is not a supported UI level. Use qb-! or qb!- to hide the Cancel button.

Note that the ! option is available with Windows Installer version 2.0 and works only with basic UI. It is not valid with full UI.

/? or /h   Displays copyright information for the Windows Installer.
/y module Calls the system API DllRegisterServer to self-register modules passed in on the command line. For example, msiexec /y my_file.dll.

This option is only used for registry information that can't be added using the registry tables of the .msi file.

/z module Calls the system API DllUnRegisterServer to unregister modules passed in on the command line. For example, msiexec /z my_file.dll.

This option is only used for registry information that can't be removed using the registry tables of the .msi file.


The options /i, /x, /f[p|o|e|d|c|a|u|m|s|v], /j[u|m], /a, /p, /y and /z should not be used together. The one exception to this rule is that patching an administrative installation requires using both /p and /a. The options /t and /g should only be used with /j. The options /l and /q can be used with /i, /x, /f[p|o|e|d|c|a|u|m|s|v], /j[u|m], /a, and /p.

To install a product from A:\Example.msi, install the product as follows:

msiexec /i A:\Example.msi 

Only public properties can be modified using the command line. All property names on the command line are interpreted as uppercase but the value retains case sensitivity. If you enter MyProperty at a command line, the installer overrides the value of MYPROPERTY and not the value of MyProperty in the Property table. For more information, see About Properties.

To install a product with PROPERTY set to VALUE use the following syntax on the command line. You can put the property anywhere except between an option and its argument.

Correct syntax:

msiexec /i A:\Example.msi PROPERTY=VALUE 

Incorrect syntax:

msiexec /i PROPERTY=VALUE A:\Example.msi 

Property values that are literal strings must be enclosed in quotation marks. Include any white spaces in the string between these marks.

msiexec /i A:\Example.msi PROPERTY="Embedded White Space"

To clear a public property using the command line, set its value to an empty string.

msiexec /i A:\Example.msi PROPERTY="" 

For sections of text set apart by literal quotation marks, enclose the section with a second pair of quotation marks.

msiexec /i A:\Example.msi PROPERTY="Embedded ""Quotes"" White Space"

The following is an example of a complicated command line.

msiexec /i testdb.msi INSTALLLEVEL=3 /l* msi.log COMPANYNAME="Acme ""Widgets"" and ""Gizmos."""

The following example illustrates advertisement options. Note that switches are not case-sensitive.

msiexec /JM msisample.msi /T transform.mst /LIME logfile.txt