Thomas Hutton
Thomas Hutton

Reputation: 803

the installation package could not be open batch file

I've been working on a batch file all day, that I can't get to work open through GPO (another day, another question). So I decided to do it manually with every computer. I have two exe's and one MSI. The exe's work perfectly fine. They get installed, and it all works out. The MSI, however, doesn't. It gives me the error: the installation package could not be opened. Verify that the package exists and that you can access it, or contact the application vendor to verify that this is a valid Windows Installer package.

Now when I go to the network share and use it from there, it works perfectly fine. So there must be an issue with my code.

Here's the code:

@echo off
IF NOT EXIST "C:\Program Files (x86)\Citrix\ICA Client\" (
 pushd "\\KOPI-DC01\ACCURO Cloudwerx\ACCURO\1\"
 .\CitrixReceiver-4.4.1000.exe /silent
)
IF NOT EXIST "C:\Program Files (x86)\triCerat\Simplify Printing\ScrewDrivers Client v4\" (
 pushd "\\KOPI-DC01\ACCURO Cloudwerx\ACCURO\2\"
 msiexec.exe /i ".\Screwdriver.msi"
)
IF NOT EXIST "C:\Program Files\Cloudwerx\CloudwerxPlugin\" (
 pushd "\\KOPI-DC01\ACCURO Cloudwerx\ACCURO\3\"
 .\cloudwerx-setup.exe /silent
)
pause

Any help would be greatly appreciated, thanks.

Upvotes: 1

Views: 1809

Answers (2)

PatMunits
PatMunits

Reputation: 41

MSI installation packages build with an older WIX utility would throw the error whenever installation was attempted from a batch script that was accessed on a shared drive using UNC path instead of a mapped drive letter. On the other hand whenever the batch file was executed with a mapped drive letter the installation would work normally.

I'm not blaming WIX here because I'm not certain whether they are responsible. I'm just describing symptoms here. It might just be the result of invoking plain vanilla Windows batch script that in turn executes msiexec with a bunch of command line parameters.

Upvotes: 0

zdan
zdan

Reputation: 29450

I am guessing that your problem is the distinction in powershell between the current location (set by the pushd command) and the working directory (unaffected by the pushd command). You can see the working directory of the powershell process using the [Environment]::CurrentDirectory property:

# C:\> [Environment]::CurrentDirectory = "c:\"    
# C:\> [Environment]::CurrentDirectory
c:\    
# C:\> pushd C:\Temp    
# C:\Temp> [Environment]::CurrentDirectory
c:\    
# C:\Temp> Get-Location

Path                                                                                                                               
----                                                                                                                               
C:\Temp   

WHat is probably happening is that msiexec.exe is using the working directory (i.e. [Environment]::CurrentDirectory) and not the current powershell location at invocation. I would just specify the full path to msiexec:

msiexec.exe /i "\\KOPI-DC01\ACCURO Cloudwerx\ACCURO\2\\Screwdriver.msi"

Upvotes: 1

Related Questions