MsiExec.exe Command-Line Parameters

InstallShield 2019

MsiExec.exe is the executable program of the Windows Installer used to interpret installation packages and install products on target systems. After you build your release, you can install your Windows Installer package (.msi) from the command line.

Your Windows Installer package can be accessed from the folder that contains your built release. The default location is as follows:

C:\InstallShield 2019 Projects\ProjectName\ReleaseName\DiskImages\Disk1\ProductName.msi

After building a release of your product, you can install it from the command line:

msiexec /i "C:\InstallShield 2019 Projects\ProjectName\ReleaseName\DiskImages\Disk1\ProductName.msi"

The table below provides a detailed description of MsiExec.exe command-line parameters.

MsiExec.exe Command-Line Parameters



/i <package> or <product code>

Use this format to install the product Othello:

msiexec /i "C:\InstallShield 2019 Projects\Othello\Trial Version\Release\DiskImages\Disk1\Othello Beta.msi"

Product Code refers to the GUID that is automatically generated in the Product Code property of your product’s project view.

/f [p|o|e|d|c|a|u|m|s|v] <package> or <product code>

Installing with the /f option will repair or reinstall missing or corrupted files.

For example, to force a reinstall of all files, use the following syntax:

msiexec /fa "C:\InstallShield 2019 Projects\Othello\Trial Version\Release\DiskImages\Disk1\Othello Beta.msi"

Use the aforementioned syntax in conjunction with the following flags:

p reinstalls a file if it is missing
o reinstalls a file if it is missing or if an older version of the file is present on the user’s system
e reinstalls a file if it is missing or if an equivalent or older version of the file is present on the user’s system
c reinstalls a file if it is missing or if the stored checksum of the installed file does not match the new file’s value
a forces a reinstall of all files
u or m rewrite all required user registry entries
s overwrites any existing shortcuts
v runs your application from the source and re-caches the local installation package

/a <package>

The /a option allows users with administrator privileges to install a product onto the network.

/x <package> or <product code>

The /x option uninstalls a product.

Project • For InstallScript MSI projects in which the InstallScript UI style is the new style (which uses the InstallScript engine as an embedded UI handler): If you try to uninstall the product through the command line using the statement Msiexec.exe /x {ProductCode}, the uninstallation may be successful. However, the Windows Installer displays an error dialog near the end of the uninstallation. The error dialog indicates that the Windows Installer service could not be accessed.

To perform an uninstallation from the command line in this scenario, the current recommended method is to use one of the following:

msiexec.exe /i {ProductCode} REMOVE=ALL

msiexec.exe /x {ProductCode} /qn

This is not necessary if your InstallScript MSI project is using the traditional style for the InstallScript UI (which uses the InstallScript engine as an external UI handler).

To learn more, see Using the InstallScript Engine as an External vs. Embedded UI Handler for InstallScript MSI Installations.

/j [u|m] <package>

/j [u|m] <package> /t <transform list>

/j [u|m] <package> /g

/j <language ID>

Building with the /j <package> option advertises the components of your application on the end user’s computer

u advertises components only to the current user
m advertises components to all users of the computer
g specifies language ID
t applies a transform to your advertised product

Transforms allow the synchronization of applications across different languages. For example, if you upgrade the English version of your product, you could apply a transform to automatically upgrade the French version of your product.

/L[i|w|e|a|r|u|c|m|o|p|v|x|+|!|*] <log file>

Use the /L option to specify the path to the log file. Optionally include one or more of the following flags to indicate which information to record in the log file:

i logs status messages.
w logs non-fatal warning messages.
e logs any error messages.
a logs the commencement of action sequences.
r logs action-specific records.
u logs user requests.
c logs initial user interface parameters.
m logs out-of-memory messages.
o logs out-of-disk-space messages.
p logs all of the properties and their values at the end of the installation.
v logs verbose output.
x logs extra debugging information.
+ appends the information to an existing log file.
! flushes each line to the log.
* is a wild-card character that enables you to log all information (excluding the verbose output that v provides and the extra debugging information that x provides).

For example, to generate a log file that logs everything verbosely, use the following:

/L*v "C:\MyLogFiles\package.log"

/p <patch package>

Use the /p option to apply a patch to an installed product. To patch an installed administrative image, combine this option with /a as shown:

/p PatchPackage /a Package

/q [n|b|r|f]

The /q option is used to set the user interface level in conjunction with the following flags:

q or qn creates no user interface
qb creates a basic user interface

The following user interface settings display a modal dialog box at the end of installation:

qr displays a reduced user interface
qf displays a full user interface
qn+ displays no user interface
qb+ displays a basic user interface

/? or /h

Either command displays Windows Installer copyright information

/y <file name>

This command calls the DllRegisterServer entry-point function of the DLL or OCX file specified in <file name>.

/z <file name>

This command calls the DllUnregisterServer entry-point function of the DLL or OCX file specified in <file name>.

/n {product code}

The /n <product code> option is available for patches that are created in the Patch Design view for Basic MSI projects that support the installation of multiple instances of a product.

Use the /n option with the /p option to specify the product code of the instance to which you want to apply a patch. For example:

msiexec /p mypatch.msp /n {00000001-0002-0000-0000-624474736554}


Use the TRANSFORMS command-line parameter to specify any transforms that you would like applied to your base package. Your transform command-line call might look something like this:

msiexec /i "C:\InstallShield 2019 Projects\Othello\Trial Version\Release\DiskImages\Disk1\Othello.msi" TRANSFORMS="New Transform 1.mst"

You can separate multiple transforms with a semicolon. Because of this, it is recommended that you do not use semicolons in the name of your transform because the Windows Installer service will interpret those incorrectly.


All public properties can be set or modified from the command line. Public properties are distinguished from private properties by the fact that they are in all capital letters. For example, COMPANYNAME is a public property.

To set a property from the command line, use the following syntax: PROPERTY=VALUE. If you wanted to change the value of COMPANYNAME, you would enter:

msiexec /i "C:\InstallShield 2019 Projects\Othello\Trial Version\Release\DiskImages\Disk1\Othello.msi" COMPANYNAME="My Software Company"

For information on passing MsiExec.exe command-line parameters through Setup.exe, see Setup.exe and Update.exe Command-Line Parameters.

See Also