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.