Want to win a PS4? Go Premium and enter to win our High-Tech Treats giveaway. Enter to Win


VBScript - Running multiple MSIs with supporting files from different folder in same script

Posted on 2013-05-16
Medium Priority
Last Modified: 2013-05-22
Hey guys,

I am writing a script that is supposed to call two MSIs in two different subfolders. This is necessary because whist these two MSIs are being run (one after the other) there is a splash screen that is displayed that needs to be closed after the MSIs are run.

Each MSI has supporting files and unfortunately because they are from the same application, the supporting file structures are the same, so they can't be put into the same folder to be executed.

The issue I am having is that when I execute an MSI it will start running, but error midway through because it cannot find the supporting files.

Is there a way to run these MSIs and have them recognise where they are being run from to pick up the remaining files (I hope that made sense).

Here's the part of my code that counts here:
Set objWShell = CreateObject("Wscript.Shell")
strFPInst = "C:\Windows\System32\Msiexec.exe /i FP4\ClientUpdate.msi /qn /l c:\build\logs\notesfp4.log"
strHFInst = "C:\Windows\System32\Msiexec.exe /i FP4_Hotfix\ClientUpdate.msi /qn /l c:\build\logs\notesfp4hotfix.log"

errCode = objWShell.Run(strFPInst, 1, True)
WScript.Sleep 10000
errCode = objWShell.Run(strHFInst, 1, True)

Open in new window

Hope someone can help.
Question by:G_M
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 3
  • 3
LVL 42

Expert Comment

by:Meir Rivkin
ID: 39171245
Windows Installer only allows a single MSI to be installing at a time, so u can't run simultaneously multiple MSI installers.
so its gotta be a sequential installation.

Author Comment

ID: 39171277
So this script does wait for on MSI to finish before running the second one. That is not the issue here, but thank you for the reply.
LVL 42

Expert Comment

by:Meir Rivkin
ID: 39171311
what supporting files they are looking for?
can u copy the supporting files to the place the msi is run from?
Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!


Author Comment

ID: 39173112
The supporting files are already in the same folder as the MSI(s). The problem is that the script isn't on the same directory as the MSIs and therefor when the MSIis running, because it's not self contained, it can't find the rest of the files.

If I run  the script to the same directory as the MSI, it will execute fine.
LVL 65

Accepted Solution

RobSampson earned 1500 total points
ID: 39173825
Try inserting this as the second line:
objWShell.CurrentDirectory = "C:\Files\FP4ParentFolder"

to switch the shell to the directory it needs to be in (which should be the parent folder of the FP4 folder).

LVL 42

Expert Comment

by:Meir Rivkin
ID: 39173880
u have few options.
1. u can have the script copy it self to where the supporting files are and execute the MSI installers.
2. u can add installation folder when running the MSI installers.
add this parameter when running the MSI:
3. you can have the script create separate, copy there the supporting files and the MSI installers and run them.

Author Closing Comment

ID: 39187067
@Sediwick, thanks for your response. I tried 2 and 3 of your options; however, they didn't do it for me. To be honest, the 1st option sounded a bit too hard for what it should be.

@robsampson, you were spot on with needing to switch the shell to the directory it needed to be in. I needed to do it twice though in order switch for both programs. I also added the "GetAbsolutePathName" to pck up the directory the script was running from. Thank you :o)

Here's my result:

Set objWShell = CreateObject("Wscript.Shell")
strCurPath = CreateObject("Scripting.FileSystemObject").GetAbsolutePathName(".")
strFPInst = "C:\Windows\System32\Msiexec.exe /i ClientUpdate.msi /qn /l c:\build\logs\notesfp4.log"
strHFInst = "C:\Windows\System32\Msiexec.exe /i ClientUpdate.msi /qn /l c:\build\logs\notesfp4hotfix.log"

objWShell.CurrentDirectory = strCurPath & "\FP4"
errCode = objWShell.Run(strFPInst, 1, True)
WScript.Sleep 10000
objWShell.CurrentDirectory = strCurPath & "\FP4_Hotfix"
errCode = objWShell.Run(strHFInst, 1, True)

Open in new window


Featured Post

Free Tool: Subnet Calculator

The subnet calculator helps you design networks by taking an IP address and network mask and returning information such as network, broadcast address, and host range.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

If you need to start windows update installation remotely or as a scheduled task you will find this very helpful.
With User Account Control (UAC) enabled in Windows 7, one needs to open an elevated Command Prompt in order to run scripts under administrative privileges. Although the elevated Command Prompt accomplishes the task, the question How to run as script…
This Micro Tutorial will go in depth within Systems and Security in Windows 7 and will go into detail regarding Action Center, Windows Firewall, System, etc. This will be demonstrated using Windows 7 operating system.
The viewer will learn how to successfully download and install the SARDU utility on Windows 7, without downloading adware.
Suggested Courses

618 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question