【问题标题】:wshshell.run(InstallPath, 0, true) not waiting to finish the installation and continues the scriptwshshell.run(InstallPath, 0, true) 不等待完成安装并继续执行脚本
【发布时间】:2010-11-23 10:57:37
【问题描述】:

下午好,

我正在为我的公司开展一个项目,以在员工工作站上运行更新。该文件位于我们域的网络服务器上。用户将单击一个链接并启动脚本。

我做了两个函数,一个是下载文件到 C:\,另一个是运行安装程序。该文件是一个 .exe(我希望它是一个 .msi)。

'' //executes the file at the location: installPath
Function launchUpdate(installPath)
    dim wshShell
    Set wshShell = WScript.CreateObject ("WSCript.shell")
    errReturn =  wshshell.run(installPath, 6, true)
End function

我正在使用 wshshell.run(installPath, 0, true) 来执行文件。据我了解,这应该隐藏安装窗口并等待执行完成。

它会启动它,但它不会等待完成安装,因为 .exe 中有两个步骤。一旦“准备安装”完成,脚本就会继续其工作。

我可以放置 Wscript.sleep。但是,并非所有机器都具有相同的处理速度。所以,我不知道要等多久。

你有什么建议吗?

谢谢,

布赖恩

【问题讨论】:

    标签: vbscript


    【解决方案1】:

    安装过程通常会产生多个进程(例如 setup.exe、msiexec.exe、install.exe、idriver.exe 等),并且看起来您的 setup.exe 在第一步(“准备安装”)之后退出启动另一个完成安装的进程。在这种情况下,WshShell.Run 不会帮助等待安装完成。

    不过,您应该可以使用 WMI 执行此操作。即,您可以订阅进程创建和进程删除 WMI 事件,这样可以监视进程的创建并等待它们结束。这里有几篇关于这个主题的 Hey, Scripting Guy! 文章:

    【讨论】:

    • 我只需要找到启动的进程就可以了。它非常有帮助,也写得很好。谢谢! -布赖恩
    【解决方案2】:

    听起来您的安装文件正在生成另一个进程,然后退出。如果是这种情况,除了编写一个等待两个进程终止并调用它的“包装器”可执行文件之外,您无能为力。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-24
      • 2016-05-23
      • 1970-01-01
      相关资源
      最近更新 更多