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

Example:

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
  Quiet mode, no user interaction
 /passive
  Unattended mode - progress bar only
 /q[n|b|r|f]
  Sets user interface level
  n - No UI
  b - Basic UI
  r - Reduced UI
  f - Full UI (default)
 /help
  Help information
Restart Options
 /norestart
  Do not restart after the installation is complete
 /promptrestart
  Prompts the user for restart if necessary
 /forcerestart
  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
 [PROPERTY=PropertyValue]