我整天都在处理批处理文件,我无法通过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
非常感谢任何帮助,谢谢。
答案 0 :(得分:1)
我猜你的问题是powershell在当前位置(由pushd
命令设置)和工作目录(不受pushd
命令影响)之间的区别。您可以使用[Environment]::CurrentDirectory
属性
# 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)
MSI安装软件包都会引发错误。另一方面,每当使用映射的驱动器号执行批处理文件时,安装将正常进行。
我在这里没有责怪WIX,因为我不确定他们是否负责。我只是在这里描述症状。可能只是调用普通的Windows批处理脚本的结果,而该批处理脚本又通过一堆命令行参数执行msiexec。