Windows 10批处理以运行.msi

时间:2018-03-28 17:11:11

标签: vbscript windows-10

我对批处理文件相当新,尤其是在我被要求这样做的情况下。

我们在网络上有很多运行“.kix”文件的旧批处理文件,它们已经运行了很多年。我的公司虽然正在转向Windows 10,但由于Windows 10增强的安全性,很多这些旧的批处理文件都无法运行。

我环顾四周并为此找到了补救办法,但我遇到了麻烦。我有一个运行“.msi”文件的批处理文件。我对.kix文件的修复是:

Set "kixCommand=\\abc123\Scripts\KIX\kix32.exe"    *(abc123 is the network server name)*  
Set "kixFile=\\abc123\Scripts\Apps\My Program\MyProgram.kix"

:UACPrompt
   echo Set UAC = CreateObject^("Shell.Application"^) > "C:\ICS_Tools\Temp\getadmin.vbs"  
   echo UAC.ShellExecute "cmd.exe", "/c %kixCommand% %kixFile%", "", "runas", 1 >> "C:\ICS_Tools\Temp\getadmin.vbs"  
   "C:\ICS_Tools\Temp\getadmin.vbs"
   del "C:\ICS_Tools\Temp\getadmin.vbs"  
  exit /B

批处理创建一个本地vbs脚本,据说用管理员权限运行它,然后删除它。

我尝试对.msi文件使用相同的方法。 .vbs文件如下所示:

Set UAC = CreateObject("Shell.Application")   
UAC.ShellExecute "msiexec.exe /i \\abc123\Scripts\Apps\My Program2\setup.msi", "", "runas", 1  

出于某种原因,它说它无法找到命令(见附图)。

msi_error_pic

我真的很感谢一些专家的帮助。我尝试过使用引号(因为文件夹名称“My Program2”中的空格),但似乎没有任何效果。

1 个答案:

答案 0 :(得分:1)

您的新代码将两个参数合并到可执行路径中。确实没有名为msiexec.exe /i \\abc123\Scripts\Apps\My Program2\setup.msi的可执行文件,因此预计会失败。

相反,请尝试:

UAC.ShellExecute "msiexec.exe", "/i", "\\abc123\Scripts\Apps\My Program2\setup.msi", "", "runas", 1 

您的原始代码(以及新代码的尾随部分)是正确的。