Dandy Weyn's blog is now on WWW.ILIKESQL.COM

A query walked into a bar ...saw 2 tables and asked .. "Can I join you?"

How to install a .MSI file unattended

How to install a .MSI file unattended

  • Comments 1
  • Likes

As part of our hands-on-lab builds (www.microsoft.com/sqlserverlabs), I frequently have to install .MSI files.
Using unattended installations for the majority of software installations significantly reduces installation time.

The process below indicates how to install a .MSI unattended.


How to install an MSI file unattended

MSIEXEC /a "product.msi" /qn


MSIEXEC /a "d:\downloads\DataExplorer_1.0.3207.2 (64-bit)" /qn

Typically this installation will not show any user interaction or verbose logging.
Combine with the Full MSI Syntax options as listed below to output installation progress to a log file.


Other installation considerations - passive mode

Another great option to consider is using the /passive parameter.
This parameter will provide UI interaction and show progress graphically.


MSIEXEC /a "product.msi" /passive



Full MSI syntax options


msiexec /Option <Required Parameter> [Optional Parameter]

Install Options
 </package | /i> <Product.msi>
  Installs or configures a product
 /a <Product.msi>
  Administrative install - Installs a product on the network
 /j<u|m> <Product.msi> [/t <Transform List>] [/g <Language ID>]
  Advertises a product - m to all users, u to current user
 </uninstall | /x> <Product.msi | ProductCode>
  Uninstalls the product

Display Options
  Quiet mode, no user interaction
  Unattended mode - progress bar only
  Sets user interface level
  n - No UI
  b - Basic UI
  r - Reduced UI
  f - Full UI (default)
  Help information
Restart Options
  Do not restart after the installation is complete
  Prompts the user for restart if necessary
  Always restart the computer after installation
Logging Options
 /l[i|w|e|a|r|u|c|m|o|p|v|x|+|!|*] <LogFile>
  i - Status messages
  w - Nonfatal 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
  x - Extra debugging information
  + - Append to existing log file
  ! - Flush each line to the log
  * - Log all information, except for v and x options
 /log <LogFile>
  Equivalent of /l* <LogFile>

Update Options
 /update <Update1.msp>[;Update2.msp]
  Applies update(s)
 /uninstall <PatchCodeGuid>[;Update2.msp] /package <Product.msi | ProductCode>
  Remove update(s) for a product

Repair Options
 /f[p|e|c|m|s|o|d|a|u|v] <Product.msi | ProductCode>
  Repairs a product
  p - only if file is missing
  o - if file is missing or an older version is installed (default)
  e - if file is missing or an equal or older version is installed
  d - if file is missing or a different version is installed
  c - if file is missing or checksum does not match the calculated value
  a - forces all files to be reinstalled
  u - all required user-specific registry entries (default)
  m - all required computer-specific registry entries (default)
  s - all existing shortcuts (default)
  v - runs from source and recaches local package

Setting Public Properties



  • I recently created a small hta the pragmatically generates three scripts that silently install the msi and three scripts that silently uninstall the msi. The scripts are generated in Batch, VBS and Power Shell. All switches are queried directly from the MSI installer. The Installation Automation script can be located at https://blassdeploymentsolutions.blogspot.co.il

Your comment has been posted.   Close
Thank you, your comment requires moderation so it may take a while to appear.   Close
Leave a Comment