安装包无法打开批处理文件

时间:2016-07-14 22:20:10

标签: windows batch-file

我整天都在处理批处理文件,我无法通过GPO开放工作(另一天,另一个问题)。所以我决定用每台电脑手动完成。我有两个exe和一个MSI。 exe的工作非常好。他们安装完毕,一切顺利。然而,MSI并没有。它给了我错误:无法打开安装包。验证程序包是否存在以及是否可以访问它,或与应用程序供应商联系以验证它是否是有效的Windows Installer程序包。

现在,当我访问网络共享并从那里使用它时,它完全正常。所以我的代码一定存在问题。

以下是代码:

@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

非常感谢任何帮助,谢谢。

2 个答案:

答案 0 :(得分:1)

我猜你的问题是powershell在当前位置(由pushd命令设置)和工作目录(不受pushd命令影响)之间的区别。您可以使用[Environment]::CurrentDirectory属性

查看powershell进程的工作目录
# C:\> [Environment]::CurrentDirectory = "c:\"    
# C:\> [Environment]::CurrentDirectory
c:\    
# C:\> pushd C:\Temp    
# C:\Temp> [Environment]::CurrentDirectory
c:\    
# C:\Temp> Get-Location

Path                                                                                                                               
----                                                                                                                               
C:\Temp   

可能发生的事情是msiexec.exe正在使用工作目录(即[Environment]::CurrentDirectory)而不是调用时当前的PowerShell位置。我只想指定msiexec的完整路径:

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

答案 1 :(得分:0)

每当尝试从使用UNC路径而不是映射驱动器号在共享驱动器上访问的批处理脚本尝试安装时,使用较早的WIX实用程序生成的

MSI安装软件包都会引发错误。另一方面,每当使用映射的驱动器号执行批处理文件时,安装将正常进行。

我在这里没有责怪WIX,因为我不确定他们是否负责。我只是在这里描述症状。可能只是调用普通的Windows批处理脚本的结果,而该批处理脚本又通过一堆命令行参数执行msiexec。