That may be one of the longest titles I've used yet. Phew! My fingers hurt already.
So, my current job has me packaging (actually, more correctly: re-packaging) software applications for mass deployment in a WAN environment. This time around I'm using Microsoft System Center Configuration Manager 2007 (aka "SCCM" or some prefer "ConfigMgr", whatever). It's a real mixed bag of experiences and results with all the various MSI and non-MSI applications we deploy. Messy, painful stuff, but it has to be done.
Because there is a known issue with pushing the AdminImage bundle of DirectX 9.0c within the deployment installer with SCCM, you have to package (or run) the DirectX bundle separately and ahead of the actual product installation. If you don’t, the retarded result will be it fails but returns a "successful" code to SCCM and it appears to have installed correctly, when it didn’t. Even the client and network logs won’t clearly state that a missing DirectX install caused it to fail and will look as if it worked just fine. The only physical trace of the failure will be in the Windows Application event log.
In addition, if you don’t have Internet Explorer 7 or later installed on your Windows XP clients, it will abort the installation of Design Review 2011 without causing the entire package to fail. So the package will still return a "successful" result to SCCM, even though only Civil 3D 2011 or AutoCAD 2011, etc. is actually installed. So be careful to lay down IE7 or IE8 prior to deploying the full package if you intend to include Design Review 2011.
So, what about Direct X 9.0c?
The problem is many people are confused to death about how vendors use DirectX installers. There is no "one" DirectX 9.0c. It’s an API framework. The vendors use it to develop their own custom bundles to get their applications to work with the DirectX layer on the client. The proof is to look at the DirectX folder tree under different Autodesk AdminImage deployment shares and compare the contents. No two will be identical. For example, the contents under 3DS Max 2011 and AutoCAD Civil 3D 2011 are entirely different. The only common pieces will be DXSETUP.EXE and a few DLL files. The end result is that you need to run the appropriate DirectX 9.0c installation for each product. You can’t run just one bundle for all products. It won’t work. It doesn’t matter how many DirectX 9.0c bundles you have already installed for whatever products are on the clients already, you have to install the one for the product it goes with.
For more wonderful sleepy-time reading on DirectX go to http://msdn.microsoft.com/en-us/library/ee416994(v=VS.85).aspx
I see so many admins deploying Inventor, Mechanical, and expect 3DS Max to install fine without also installing the DirectX that comes with 3DS Max (when they try to automate an unattended deployment, that is). If you’re doing "manual" installations this is not an issue because the installation wizard walks through and takes care of whatever it needs along the way. But when you push a silent installation through SCCM, it won’t push DirectX with it. Doh!!
(Dear Autodesk: It would be nice if you could develop a universal DirectX bundle for all your products to share and make it a prepared MSI installation as well. Thanks!)
Step 1 - Package or Prepare the DirectX bundle
I use Wise Package Studio and create a new MSI package for the installation. I add the DirectX folder contents from the AdminImage\support\DirectX folder on the deployment share into the WINDOWS\TEMP folder in the package. Then I go to the MSI Script tab and edit the "Execute Deferred" tab to insert an "Execute Program from Installation Files" action just above "InstallFinalize". Configure it to execute the "DXSETUP.EXE" from the files collection in the package. Set the arguments to "/SILENT". On the Properties tab, set the In-Script option to "Deferred execution - System Context" and set Processing to "Synchronous, ignore exit code"
Save the package and compile it to a name like "Civil3D2011_DirectX9"
Now you should have an installer named "Civil3D2011_DirectX9.msi" that you can deploy silently using /qn or whatever you prefer.
Step 2 - Create the SCCM deployment for the DirectX Package
Prepare and Package, Program and Advertisement for the DirectX installer you created to target the computers which will get the Autodesk product it goes with (e.g. AutoCAD Civil 3D 2011). You don't need to add any special command line parameters to this package since they are done inside the Wise package (e.g. "/SILENT") so you can deploy it silently using msiexec.exe /i <packagefile> /qn or whatever. Advertise the package to your target collection and test with a few computers (direct membership is easiest here).
Step 3 - Create the SCCM deployment for the Autodesk Product
Prepare the Package, Program and Advertisement for the Autodesk product as outlined in their deployment documentation. In most cases the program statement will execute the AdminImage "SETUP.EXE" using the /W /Q /I parameters followed by the .INI file for the deployment and the language parameter. So if you created a deployment named "2011network" and your deployment share is on server "Server1" under a shared folder named "Apps\Autodesk" it might look like this…
\Server1\Apps\Autodesk\Civil3D2011\AdminImage\setup.exe /W /Q /I \Server1\Apps\Autodesk\Civil3D2011\AdminImage\2011network.ini /Lang en-US
Deploy to your test collection and fine-tune as necessary. I always use "Whether or not a user is logged on" and "suppress program notifications" since we deploy unattended to everything.
IMPORTANT: Be sure to first make sure the DirectX package deploys successfully before you deploy the rest of it. If you don't, the Autodesk deployment will fail but will still return "Successful" to SCCM. The same is true for Design Review failing within the package because a client doesn't have IE7 yet. It will still say everything deployed successfully. This is boneheaded and seriously flawed, but it has been reported to Autodesk so time will tell how they handle this.
MORE: I have also asked Autodesk if they would consider developing a single, universal DirectX package for all of their products and provide it in MSI form so that it can deploy with their AdminImage bundles through tools like SCCM. It would also reduce the stress packagers and admins already endure on a daily basis.
Step 4 – Drink
As if you need an excuse to drink. Go for it. You deserve it. Autodesk and SCCM have delivered you to the doorstep of insobriety so you might as well take advantage of the opportunity