Autodesk makes it very easy to create installation packages for deploying Revit software. The problem is that when executing these deployment packages through SMS/SCCM or integrating them into a build process, the package returns erroneous data and if it is in a build process, it causes errors because the build proceeds to install the next application when the Autodesk has not completed. This is caused because the setup.exe opens another instance of itself and then closes the original setup.exe, thereby making the deployment server or installation script think the installation is complete, when in essence, it is just beginning the installation.
To get around this, I wrote the following installation VBScript that executes the setup.exe, waits for 5 seconds, which is enough time for the new setup.exe to have appeared and the old one to have closed. That 5 seconds may need to be changed if it is an older machine. At that point, the script waits for the setup.exe process to disappear before it ends so the deployment server receives correct information as to when the deployment is complete.
You can download the script from here.
To get around this, I wrote the following installation VBScript that executes the setup.exe, waits for 5 seconds, which is enough time for the new setup.exe to have appeared and the old one to have closed. That 5 seconds may need to be changed if it is an older machine. At that point, the script waits for the setup.exe process to disappear before it ends so the deployment server receives correct information as to when the deployment is complete.
You can download the script from here.
'*******************************************************************************
' Program: Install.vbs
' Author: Mick Pletcher
' Date: 08 November 2010
' Modified:
'
' Program: Autodesk Revit
' Version: 2012
' Description: This will install Autodesk Revit Structural
' 1) Define the relative installation path
' 2) Create the Log Folder
' 3) Install Current Version of Revit
' 4) Install Workstation Monitor
' 5) Cleanup Global Variables
'*******************************************************************************
Option Explicit
REM Define Constants
CONST TempFolder = "c:\temp\"
CONST LogFolderName = "RevitStruct2012"
REM Define Global Variables
DIM LogFolder : Set LogFolder = Nothing
DIM RelativePath : Set RelativePath = Nothing
DIM ReturnCode : ReturnCode = "0"
REM Initialize Global Variables
LogFolder = TempFolder & LogFolderName & "\"
REM Define the relative installation path
DefineRelativePath()
REM Create the Log Folder
CreateLogFolder()
REM Install Current Version
InstallCurrentVersion()
REM Install Workshare Monitor
InstallWorkshareMonitor()
REM Cleanup Global Variables
GlobalVariableCleanup()
'*******************************************************************************
'*******************************************************************************
Sub DefineRelativePath()
REM Get File Name with full relative path
RelativePath = WScript.ScriptFullName
REM Remove file name, leaving relative path only
RelativePath = Left(RelativePath, InStrRev(RelativePath, "\"))
End Sub
'*******************************************************************************
Sub CreateLogFolder()
REM Define Local Objects
DIM FSO : Set FSO = CreateObject("Scripting.FileSystemObject")
If NOT FSO.FolderExists(TempFolder) then
FSO.CreateFolder(TempFolder)
End If
If NOT FSO.FolderExists(LogFolder) then
FSO.CreateFolder(LogFolder)
End If
REM Cleanup Local Variables
Set FSO = Nothing
End Sub
'*******************************************************************************
Sub InstallCurrentVersion()
REM Define Local Constants
CONST Timeout = 3000
CONST Timepoll = 500
CONST FileName = "setup.exe"
REM Define Local Objects
DIM oShell : Set oShell = CreateObject("Wscript.Shell")
DIM SVC : Set SVC = GetObject("winmgmts:root\cimv2")
REM Define Local Variables
DIM sQuery : sQuery = "select * from win32_process where name=" & Chr(39) & FileName & Chr(39)
DIM cproc : Set cproc = Nothing
DIM iniproc : Set iniproc = Nothing
DIM Install : Set Install = Nothing
DIM Parameters : Set Parameters = Nothing
REM Initialize Local Variables
Parameters = Chr(32) & "/qb /I" & Chr(32) & RelativePath &_
"AdminImage\RST_64bit.ini"
Install = RelativePath & "AdminImage\" & FileName & Parameters
REM Install Autodesk
oShell.Run Install, 1, True
REM Wait until Second Setup.exe closes
Wscript.Sleep 5000
Set cproc = svc.execquery(sQuery)
iniproc = cproc.count
Do While iniproc = 1
wscript.sleep 5000
set svc=getobject("winmgmts:root\cimv2")
sQuery = "select * from win32_process where name=" & Chr(39) & FileName & Chr(39)
set cproc=svc.execquery(sQuery)
iniproc=cproc.count
Loop
REM Cleanup Local Variables
Set cproc = Nothing
Set iniproc = Nothing
Set Install = Nothing
Set oShell = Nothing
Set Parameters = Nothing
Set sQuery = Nothing
set svc = Nothing
End Sub
'*******************************************************************************
Sub InstallWorkshareMonitor()
REM Define Local Objects
DIM oShell : SET oShell = CreateObject("Wscript.Shell")
REM Define Local Variables
DIM MSI : MSI = Chr(32) & "workshare_monitor\worksharingmonitorforautodeskrevit2012_20110316_1624.msi"
DIM Log : Log = "WorkshareMonitor.log"
DIM Logs : Logs = Chr(32) & "/lvx" & Chr(32) & LogFolder & Log
DIM Parameters : Parameters = Chr(32) & "/qn /norestart"
DIM Install : Install = "msiexec.exe /i" & MSI & Logs & Parameters
oShell.Run Install, 1, True
REM Cleanup Local Variables
Set Install = Nothing
Set Log = Nothing
Set Logs = Nothing
Set MSI = Nothing
Set oShell = Nothing
Set Parameters = Nothing
End Sub
'*******************************************************************************
Sub GlobalVariableCleanup()
Set LogFolder = Nothing
Set RelativePath = Nothing
Set ReturnCode = Nothing
End Sub
0 comments:
Post a Comment