Script to wrap around an application and wait for app to finish

5,018

Updated version

The following will execute your setup program, then wait for there to be no more instances of setup.exe running. There is a maximum timeout value you can set (so that it doesn't hang forever).

Please note that this can't detect whether setup is done, only whether or not a setup.exe process is running. It's a minor distinction, but an important one.

Option Explicit

Const PROC_NAME = "setup.exe"
Const RUN_CMD = "setup.exe /qb /I Autocad2010.ini /language en-us"
Const SLEEP_INTERVAL_MS = 1000
Const WAIT_TIMEOUT_MS = 1500000 ' = 1000 * 60 * 25 ms = 25 mins

Dim objWshShell, objWMIService
Dim colProcesses, objProcess
Dim intWaited, blnProcessTerminated

Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
Set objWshShell = WScript.CreateObject("WScript.Shell")
objWshShell.Run RUN_CMD

intWaited = 0
blnProcessTerminated = False
While intWaited < WAIT_TIMEOUT_MS And Not blnProcessTerminated
    Set colProcesses = objWMIService.ExecQuery(_
        "Select * from Win32_Process where Name='" & PROC_NAME & "'")

    blnProcessTerminated = True
    For Each objProcess In colProcesses
        blnProcessTerminated = False
    Next

    WScript.Sleep(SLEEP_INTERVAL_MS)
    intWaited = intWaited + SLEEP_INTERVAL_MS
Wend

This is relatively straightforward:

Option Explicit

Dim objWshShell
Set objWshShell = WScript.CreateObject("WScript.Shell")
objWshShell.Run "setup.exe /qb /I Autocad2010.ini /language en-us", 1, True

The parameters to the Run method are described in greater detail on the MSDN site. Most importantly, True causes the script to wait until setup.exe has terminated.

Share:
5,018

Related videos on Youtube

JohnyV
Author by

JohnyV

Updated on September 18, 2022

Comments

  • JohnyV
    JohnyV over 1 year

    I need a vb script that will wrap around an applcation which will stay open until the application finishes. I want to be able to call the following command

    "setup.exe /qb /I Autocad2010.ini /language en-us"

    But I need the vb script to stay running until the setup has finished.

    Is there anyone out there that can assist with this.

    Much appreciated in advance

    • Admin
      Admin about 14 years
      Are you trying to use VB to deploy Autocad to a bunch of computers? If that's what you're trying to accomplish you may want to have a look at wpkg.org. They will provide you a app deployment mechanism that can run pre and post install commands or scripts.
    • Admin
      Admin about 14 years
      I am trying to deploy autocad with MDT but the apps keep trying to start before the other finishes. So i was told that if I run a vbscript around the apps that MDT will see it as an app and wait for it to finish. The packages I have are from the deployment on the autocad discs.
  • JohnyV
    JohnyV about 14 years
    I tried this script but the script stops before the setup.exe is finsihed. Therefore MDT thinks that the application has stopped installing and continues on its task sequence.
  • fission
    fission about 14 years
    The script waits until that setup.exe finishes – but it could be that setup.exe launches another instance of itself. I'll update my answer with a version that waits until no setup.exe is detected to be running on the system.