wshshell.run (InstallPath, 0, true) не ждет завершения установки и продолжает сценарий - PullRequest
2 голосов
/ 27 августа 2009

Добрый день,

Я работаю над проектом для моей компании по обновлению рабочих станций сотрудников. Файл находится на веб-сервере нашего домена. Пользователь нажимает на ссылку и запускает скрипт.

Я сделал две функции: одну для загрузки файла в 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. Однако не все машины имеют одинаковую скорость обработки. Поэтому я не буду знать, как долго ждать.

У вас есть предложения, что я мог бы сделать?

Спасибо,

Brian

Ответы [ 2 ]

2 голосов
/ 27 августа 2009

Процедуры установки обычно порождают несколько процессов (например, setup.exe, msiexec.exe, install.exe, idriver.exe и т. Д.), И похоже, что ваш setup.exe завершает работу после первого шага («Подготовка к установке») запустил еще один процесс, который завершает установку. В этом случае WshShell.Run не поможет дождаться завершения установки.

Вы можете сделать это, используя WMI . А именно, вы можете подписаться на события WMI создания и удаления процессов и таким образом контролировать создание процессов и ожидать их завершения. Вот пара Привет, сценарист! статей на эту тему:

0 голосов
/ 27 августа 2009

Похоже, ваш установочный файл порождает другой процесс, а затем завершается. Если это так, вы ничего не можете сделать, кроме как написать исполняемый файл-обертку, который ожидает завершения обоих процессов, и вместо этого вызвать его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...