Saturday, August 14, 2010

Packaging & Deployment Autodesk 2011 Products with System Center Configuration Manager 2007

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

Glass_of_beer_with_bottles_in_the_background[1]

16 comments:

Anonymous said...

A while back you threatened to quit making posts to this blog. Thank you for not following through with that threat. Posts like this are invaluable to CAD admins such as myself.

skatterbrainz said...

Thanks! Uhh..."Anonymous". I base my view of keeping the blog alive on how much feedback I get. I get very little feedback. As long as people post comments or ask questions, I will keep posting.

Cykasm said...

Cheers for this.
While not using SCCM it helped with my deployment.

Anonymous said...

very useful article, good job, keep up the good work!!

Unknown said...

Hello,
Thanks so much for the great post. Any chance you can make the DirectX msi for Autocad 2011 available

skatterbrainz said...

@Kiran - Unfortunately, doing that might risk violating the EULA terms included with AutoCAD. There are tools available for making your own MSI package and I have provided fairly good instructions, so you should be able to package it.

Unknown said...

Thanks so much. Will do.

Unknown said...

Thanks so much. Will do.

Anonymous said...

Any other programs for compiling the MSI besides Wise Studio that you recommend (or don't?)

Thanks
Nick

skatterbrainz said...

Wise is effectively "DEAD". Symantec is doing nothing more with it. There's plenty of discussion about that sad state of affairs on their forums and no one from Symantec has rebuffed any of it. Even the instructors that each it seem to agree it's dead. The reigning king/queen of Windows packaging is still Flexera InstallShield Admin Studio. It's not cheap though.

Nick said...

I was able to get AdminStudio to give your process of deployments a go. However, since I have never used any packager including WISE or AdminStudio... can you say how different the process is for creating the DirectX package in AdminStudio versus the description you give for doing it in WISE?

skatterbrainz said...

I wish I could, but at this point my customer is on Wise and getting ready to replace it with AdminStudio/InstallShield soon. That will also entail training for the packagers, so I won't be able to offer you much help until that happens.

Anonymous said...

Thanks so much for this post - it has been invaluable to me in trying to work out how to silently deploy a number of Autodesk 2012 products. One question though - how can one determine if the DirectX components for a particular product have been installed already? I'm using WPKG to do my deployments, and to avoid it trying to do the DirectX install every time for each product (Max, Maya, Mudbox), I need to be able to do a check to see if it's existing - however I have no idea where to find what DirectX files it may uniquely install for each package? Any ideas? Any help would be greatly appreciated! Thanks!

skatterbrainz said...

Thanks, uh "Anonymous". :) The best suggestion I can give you is to diagnose a before and after condition using a virtual machine. Look for the specific Directx DLL files under the C:\Window\System32 folder tree somewhere (I don't have a machine handy to verify this right now) and you should be able to locate them after installation. Use that path and a simple IF EXIST or IF NOT EXIST statement in a .CMD/.BAT script can handle the condition.

Anonymous said...

Another Anon thank you from a sysadmin who has been tearing his hair out over deploying Map 3D 2011/12 with SCCM... = D

Side note, the mind boggles that MS can't be asked making directx 9c work with it's own deployment solution, and that Autodesk couldn't provide a MSI wrapped version with their 'sccm ready' deployment.

skatterbrainz said...

Thank you for the kind words! I'm glad I could help. I too wish that Autodesk would repackage DirectX to support ConfigMgr deployments (as well as making .NET 4 work properly)