Friday, March 25, 2011

Package DirectX for AutoCAD 2012 and Wise Package Studio

I'm currently working on a new book as a follow-up on the previous edition called "The AutoCAD Network Administrator's Bible, 2012 Edition" to focus on changes provided in AutoCAD 2012.  This is an excerpt.

Because Autodesk is still ignoring me (story of my life), the situation with regard to using SCCM to install a network deployment package of AutoCAD 2012 is still hampered by DirectX and also .NET 4.0.  That's life.  There are ways around these road bumps.  First, I will run through packaging the custom DirectX bundle.  .NET 4.0 is easy to push with SCCM, but it has to be done before you deploy the AutoCAD 2012 deployment package.  Otherwise it will crash and burn but still report back "Success!" and laugh at you.

To compile the DirectX component installer package for AutoCAD 2012 using Wise Package Studio version 8.0.   WPS 7.0 is pretty much the same (8.0 is essentially 7.0 SP4 anyway), and these idiotic instructions should work the same.  The process for InstallShield / AdminStudio is roughly the same (you bundle up the files, drop them on the client and run the install with /SILENT and tell it to ignore the exit code).  Ok, that was the spoiler, so you can skip the rest and do it yourself, but if you want more detail, keep reading...

Preparation
  1. Copy the “DirectX” folder from the AutoCAD 2012 installation source (it can be found under “\3rdParty\DirectX”) and place the copy somewhere like C:\Acad2012DX.   The files that are included are:
  • Apr2006_d3dx9_30_x64.cab
  • Apr2006_d3dx9_30_x86.cab
  • Apr2006_MDX1_x86.cab
  • Apr2006_MDX1_x86_Archives.cab
  • Apr2006_D3DCompiler_42_x64.cab
  • Apr2006_D3DCompiler_42_x86.cab
  • Apr2006_d3dx9_42_x64.cab
  • Apr2006_d3dx9_42_x86.cab
  • Apr2006_d3dx10_42_x64.cab
  • Apr2006_d3dx10_42_x86.cab
  • Apr2006_d3dx11_42_x64.cab
  • Apr2006_d3dx11_42_x86.cab
  • DSETUP.dll
  • dsetup32.dll
  • dxdllreg_x86.cab
  • DXSETUP.exe
  • dxupdate.cab
Create a Wise Project

1.       Open Wise Package Studio
2.       Click File / New Project
3.       Fill-out the Project information and Save it
4.       In the left-hand panel, under the “Projects” tab, select “Run” beside “Create Package”
5.       If you have a Wise Share Point server environment, select the top “Change” button and select “Use configuration file on share point”, click OK
6.       Click “Next”
7.       Select “Snapshot”, click “Next”
8.       If prompted to choose “Use initial scan” or “Rerun the initial scan” choose the latter, click “Next”
9.       Click “Next” to begin the snapshot scan
10.   On the “Execute Installation” page, leave all entries blank and click “Next”
11.   Click “Next” again to end the snapshot scan
12.   On the “Inclusions” page, make sure nothing is included (Files, Registry, INI, Shortcuts). If any items are captured, select them and click “Exclude” to remove them.  Click “Next”
13.   On the “Exclusions” page, click “Next”
14.   On the “Finish” page, confirm the package information and click “Finish”

After the base project package is created it will return to the Project menu.  Click “Run” next to “Edit package”
  1. When the “Windows Installer Editor” window appears, click “Files” under “Feature Details”
  2. In the lower left-hand panel, under “Destination Computer”, expand to select \Windows\Temp (highlight the folder)
  3. In the upper panel, expand the drive to access the folder where you placed a copy of the DirectX files (e.g. “C:\Acad2012DX”) and select that folder (highlight it)
  4. Click the “Add Contents” button, confirm and click OK
  5. Save the Project (press CTRL+S)
  6. Click the “MSI Script” tab (at bottom)
  7. Select the “Execute Deferred” tab (bottom right)
  8. Scroll to the bottom of the script editor and click (once) on the “InstallFinalize” line
  9. In the left-hand “Actions” panel, double-click “Execute Program From Installed Files”
  10. Set the Custom Action Properties:
    1. Custom Action Name: “InstallDirectX”
    2. Executable File:  (select DXSETUP.EXE)
    3. Command Line Arguments: /SILENT
  11. Click the “Properties” tab
    1. Set Processing to “Synchronous, Ignore exit code”
  12. Click OK
  13. The new line should read “Execute Installed Program DXSETUP.exe Command Line /SILENT (InstallDirectx)” and appear just above the “InstallFinalize” line.  If you insert it in the wrong place, use CTRL+UP or CTRL+DOWN to move the line up or down in the editor.
  14. Save the Project
  15. Compile the Package (press F7)
Deploying it with SCCM

You have two options, maybe more (but it's Friday and I'm too lazy to think of more than two, so, that's pretty much the deal for now):
  1. Grab the .MSI file and stuff it into SCCM as a new package and advertise it at the Collection which contains the computers that will later on receive AutoCAD 2012 - OR...
  2. Make a .CMD script to run your new DirectX .MSI package and then run the AutoCAD 2012 deployment installation.
As for .NET 4.0

Copy the folder from the AutoCAD 2012 installation media that contains the .NET 4.0 installer files.  This resides under "\3rdParty\NET\4\wcu\dotNetFramework" and paste it into a folder on your SCCM package source share folder structure

Create a new SCCM package that points to that new folder.

Create a new program within that package for x86 and another for x64 (if needed) using one of the commands below (depending on 32 or 64 bit)
  • dotNetFx40_Full_setup.exe /q /x86 /norestart /lang:ENU
  • dotNetFx40_Full_setup.exe /q /x64 /norestart /lang:ENU
Set the program to suppress notifications (advanced tab) and run "whether or not user is logged on" (environment tab)

Advertise it to the same collection (ahead of the AutoCAD 2012 deployment) - OR - drop this into a script and make it all a single SCCM package along with the DirectX installer.  You might want to add a line of code to check if .NET 4.0 is already installed and skip the installation of .NET unless it hasn't been installed.  A pretty good way to check for .NET 4.0 is

if exist "%windir%\Microsoft.NET\Framework\v40.30319" (
   echo dotnet 4.0 is installed
) else (
   echo dotnet 4.0 is not installed
)

Enjoy!


2 comments:

Anonymous said...

Having started a job as a software packager/SCCM administrator about 18 months ago, I'd just like to say I find your blog absolutely invaluable. Unfortunately I have no peers at my workplace to learn from in this arena and without your clear and detailed instructions on topics such as this, it's no exaggeration to say that in some situations I'd have been completely scuppered! Thanks for your continued efforts and PLEASE, keep it up!!

skatterbrainz said...

Wow! Thank you very much! I'm glad I could be of help.