Unattended MSMQ installation on Windows Vista

Edited on 4/11/2008 to corrected the build numbers in the examples. The correct build number is 6.0.6000.16386.

Vista introduces a new tool for installing and removing Optional Components, called OCSetup.exe. For those of you familiar with Package Manager (pkgmgr.exe), OCSetup is, in part, a wrapper for pkgmgr.

If you want to install MSMQ with the HTTP support feature, you must install IIS and WAS before attempting to install MSMQ HTTP Support. If you do not install IIS and WAS first, the install of MSMQ HTTP Support will fail, but you can recover by installing IIS and WAS, then retrying your install of MSMQ HTTP Support.

Here’s a sample of how to install IIS and WAS:

Command:

ocsetup.exe IIS-WebServerRole /unattendFile:Unattended_WAS_and_IIS.xml /quiet /norestart /log:OCSetup_WAS_and_IIS.log

Unattended_WAS_and_IIS.xml:

<?xml version="1.0"?>

<unattend>

  <servicing>

    <package action="configure">

      <assemblyIdentity name="Microsoft-Windows-Foundation-Package" version="6.0.6000.16386" language="neutral" processorArchitecture="AMD64" publicKeyToken="31bf3856ad364e35" versionScope="nonSxS"/>

  <selection name="WAS-WindowsActivationService" state="true"/>

      <selection name="WAS-ProcessModel" state="true"/>

      <selection name="WAS-NetFxEnvironment" state="true"/>

      <selection name="WAS-ConfigurationAPI" state="true"/>

      <selection name="IIS-WebServerRole" state="true"/>

      <selection name="IIS-WebServer" state="true"/>

      <selection name="IIS-CommonHttpFeatures" state="true"/>

      <selection name="IIS-ApplicationDevelopment" state="true"/>

      <selection name="IIS-HealthAndDiagnostics" state="true"/>

      <selection name="IIS-Performance" state="true"/>

      <selection name="IIS-WebServerManagementTools" state="true"/>

      <selection name="IIS-IIS6ManagementCompatibility" state="true"/>

      <selection name="IIS-StaticContent" state="true"/>

      <selection name="IIS-DefaultDocument" state="true"/>

      <selection name="IIS-DirectoryBrowsing" state="true"/>

      <selection name="IIS-HttpErrors" state="true"/>

      <selection name="IIS-HttpRedirect" state="true"/>

      <selection name="IIS-RequestFiltering" state="true"/>

      <selection name="IIS-NetFxExtensibility" state="true"/>

      <selection name="IIS-HttpLogging" state="true"/>

      <selection name="IIS-LoggingLibraries" state="true"/>

      <selection name="IIS-RequestMonitor" state="true"/>

      <selection name="IIS-HttpTracing" state="true"/>

      <selection name="IIS-HttpCompressionStatic" state="true"/>

      <selection name="IIS-ManagementConsole" state="true"/>

      <selection name="IIS-ISAPIExtensions" state="true"/>

      <selection name="IIS-Metabase" state="true"/>

    </package>

  </servicing>

</unattend>

Notice that with sysocmgr.exe on pre-Vista operating systems, you use “on” and “off” to designate “install” or “don’t install”. With OCSetup.exe, however, you use true/false to designate “install” or “uninstall”. OCSetup is going to try to do something with every component you list in the unattend file. Because of this, all components included in the unattend file must exist on the operating system you’re installing MSMQ on. If you try to install an unsupported component (say, MSMQ HTTP Support on Vista Home Basic, or MSMQ Routing Server on any flavor of Vista), OCSetup will fail. So, make sure you know what the installable components are for the flavor of Vista you’re working with. (See here for more information on installable components by Vista edition.)

You’ve installed IIS, now you’re ready to install MSMQ with HTTP support (among other components):

Command:

ocsetup.exe MSMQ-Server /unattendFile:Unattended_MSMQ.xml /quiet /norestart /log:OCSetup_MSMQ.log

Unattended_MSMQ.xml:

<?xml version="1.0"?>

<unattend>

  <servicing>

    <package action="configure">

<assemblyIdentity name="Microsoft-Windows-Foundation-Package" version="6.0.6000.16386" language="neutral" processorArchitecture="AMD64" publicKeyToken="31bf3856ad364e35" versionScope="nonSxS"/>

      <selection name="MSMQ-Container" state="true"/>

<selection name="MSMQ-Server" state="true"/>

<selection name="MSMQ-Triggers" state="true"/>

<selection name="MSMQ-DCOMProxy" state="true"/>

<selection name="MSMQ-Multicast" state="true"/>

<selection name="MSMQ-ADIntegration" state="true"/>

<selection name="MSMQ-HTTP" state="true"/>

    </package>

  </servicing>

</unattend>

NOTE: In the “assemblyIdentity” elements of your unattend XML files, you must provide the correct values for the “version” and “processorArchitecture” attributes of the Operating System you’re running:

· The “version” will always be “6.0.6000.16386”. This will not change in Service Pack 1. You may notice, upon application of Service Pack 1 once it’s released, that the version of the operating system is no longer “6.0.6000.16386”, but OCSetup.exe will always want 6.0.6000.16386 as the version number for any optional components you install.

· The “processorArchitecture” value will be “x86” for a 32-bit operating system, “AMD64” for a 64-bit operating system, and “IA64” for an Itanium 64-bit operating system.

Gotchas for installing MSMQ on Vista:

1) OCSetup.exe doesn’t block. If you want to use it as part of a batch process, you should prepend “start /wait” to the OCSetup command:

start /wait OCsetup.exe MSMQ-Server /unattendFile:Unattended_MSMQ.xml /quiet /norestart /log:OCSetup_MSMQ.log

2) In Windows Server 2003, if sysocmgr.exe doesn’t recognize a component, it ignores that line in the ini file. OCSetup, however, doesn’t tolerate unknown components. Because of this, including a component such as MSMQ-HTTP in an unattend file for installing on Vista Home Basic will cause the entire install to fail, because MSMQ HTTP isn’t an installable component on Vista Home Basic.

—Jolie Boushey