Wednesday, August 31, 2011

Patching AutoCAD Civil 3D 2011 and 2012

imageMost Autodesk patches are published as .exe files.  Many (most) of them contain embedded .msp "patch" files for the base MSI installation.  Occassionally, the accompanying "readme" documentation will describe how to properly (successfully) extract the .msp file.  Other times it does not. 

Fear not.

 

 

Download the update .exe file to your hard drive

  1. Open a CMD console and CD to the folder where the .exe file resides
  2. Extract the .msp using the following syntax:
    UpdateFileName.exe /e UpdateFileName.msp
  3. Then apply the patch using the following msiexec syntax:
    msiexec /p UpdateFileName.msp /quiet /norestart

And if you want to wrap update 1 and update 2 into a single operation, you can easily do that with a few lines of script code within a single script file.  The example below is only that: an example.  You should probably embellish it before using it.  For this example I named the extracted .msp patch files "c3d2011_win32_update1.msp" and "c3d2011_win32_update2.msp", if you have different names, then just modify the commands as needed.

I recommend grabbing a copy of my standard .bat/.cmd template (here), to help you get started.  If you already have your own, that's fine and you can just modify the example below to suit your needs.  This little snippet below doesn't use that template I posted, it's just a little snotty-nozed punk hanging around the alley and needs its ass kicked real bad.  Enjoy!

@echo off
setlocal
set LOG=%tmp%\Civil3d2011_update2.log
echo searching for civil 3d 2011 installation... >>%LOG%
if exist "%programfiles%\Autodesk\AutoCAD Civil 3D 2011\acad.exe" (
    echo installing update 1... >>%LOG%
    msiexec /p "%~dp0c3d2011_win32_update1.msp" /quiet /norestart
    echo exit code is %errorlevel% >>%log%
    echo installing update 2... >>%LOG%
    msiexec /p "%~dp0c3d2011_win32_update2.msp" /quiet /norestart
    echo exit code is %errorlevel% >>%LOG%
) else (
    echo installation not found >>%LOG%
)
endlocal
exit %errorlevel%

No comments: