While packaging a few Intel drivers (video driver, USB 3.0, chipset, management engine components, etc.) for our HP laptops, I noticed that each of the driver downloads contained a file named “mup.xml”. This file contains, among other things, information about valid command line switches for the setup.exe installer.
A snippet of the mup.xml file for our video driver is below. Some valid command line switches (which I haven’t fully tested) that appear within the file are:
/v = extract drivers (providing a double-quote encapsulated path is optional)
/s = unattended (silent install)
/? = help
/overwrite = force (install over previous installation)
/report = change the log file location from the default (C:\Intel) by providing double-quote encapsulated path
It seems that using a dash/hyphen in place of the forward slash is also acceptable. Ex.: /silent or -silent are both valid.
The mup.xml file also contains information on non-zero exit codes that may be returned by the installer. So far, I’ve encountered exit code 14, REBOOT_REQUIRED, a few times.
<executable> <executablename>setup.exe</executablename> </executable> <behaviors> <behavior name="freshinstall"> <vendoroption> <optionvalue switch="/" requiresvalue="false">s</optionvalue> </vendoroption> </behavior> <!--Driver Only Package, Installer Doesn't need to support <behavior name="driveronly"> <vendoroption> <optionvalue switch="/" requiresvalue="false"></optionvalue> </vendoroption> </behavior> <behavior name="applicationonly"> <vendoroption> <optionvalue switch="/" requiresvalue="false"></optionvalue> </vendoroption> </behavior> --> <behavior name="extractdrivers"> <vendoroption> <container> <containervalue switch="/" requiresvalue="false" valuedelimiter=" " enclose=""">v</containervalue> <optionvalue switch="" requiresvalue="true" valuedelimiter="=" enclose="\"">ExtractDrivers</optionvalue> </container> </vendoroption> </behavior> <behavior name="attended" /> <behavior name="help"> <vendoroption> <optionvalue switch="/" requiresvalue="false">?</optionvalue> </vendoroption> </behavior> <behavior name="unattended"> <vendoroption> <optionvalue switch="/" requiresvalue="false">s</optionvalue> </vendoroption> <!-- The DUP will Restart the system <vendoroption> <optionvalue switch="/" requiresvalue="false">b</optionvalue> </vendoroption> --> </behavior> </behaviors> <parameters> <parametermapping name="force"> <vendoroption> <optionvalue switch="/" requiresvalue="false">overwrite</optionvalue> </vendoroption> </parametermapping> <parametermapping name="logfile"> <vendoroption> <optionvalue switch="/" requiresvalue="true" valuedelimiter=" " enclose=""">report</optionvalue> </vendoroption> </parametermapping> </parameters> <returncodes> <returncodemapping name="REBOOTING_SYSTEM"> <vendorreturncode>15</vendorreturncode> </returncodemapping> <returncodemapping name="PASSWORD_REQUIRED"> <vendorreturncode>2</vendorreturncode> </returncodemapping> <returncodemapping name="NO_DOWNGRADE"> <!--Always able to DownGrade, Installer Doesn't need to support--> <vendorreturncode>9999</vendorreturncode> </returncodemapping> <returncodemapping name="REBOOT_UPDATE_PENDING"> <!--Installer only Reboots Once, Installer Doesn't need to support--> <vendorreturncode>9999</vendorreturncode> </returncodemapping> <returncodemapping name="DEP_SOFT_ERROR"> <vendorreturncode>7</vendorreturncode> </returncodemapping> <returncodemapping name="DEP_HARD_ERROR"> <vendorreturncode>5</vendorreturncode> </returncodemapping> <returncodemapping name="SUCCESS"> <vendorreturncode>0</vendorreturncode> </returncodemapping> <returncodemapping name="ERROR"> <vendorreturncode>10</vendorreturncode> </returncodemapping> <returncodemapping name="REBOOT_REQUIRED"> <vendorreturncode>14</vendorreturncode> </returncodemapping> <returncodemapping name="ERROR_INSTALL_PLATFORM_UNSUPPORTED"> <vendorreturncode>3</vendorreturncode> </returncodemapping> <returncodemapping name="UNKNOWN_OPTION"> <vendorreturncode>1</vendorreturncode> </returncodemapping> <returncodemapping name="ERROR"> <vendorreturncode>9</vendorreturncode> </returncodemapping> <returncodemapping name="ERROR"> <vendorreturncode>6</vendorreturncode> </returncodemapping> <returncodemapping name="ERROR"> <vendorreturncode>4</vendorreturncode> </returncodemapping> </returncodes>
So far, I’ve had good luck with the command: setup.exe /s /overwrite.