Выполнить команду Если не удается, затем запустить другую, если успех, а затем конец - PullRequest
2 голосов
/ 10 марта 2020

Я пытаюсь найти способ удалить maya2019 со всех рабочих станций студии. У нас есть 3 версии maya2019 с различными командами удаления:

"C:\Program Files\Autodesk\Maya2019\Setup\Setup.exe" /P {D4BE10F2-3E2D-4120-863A-765623D53264} /M MAYA /LANG en-us /q

"C:\Program Files\Autodesk\Maya2019\Setup\Setup.exe" /P {77067FD9-800C-48B4-803D-569642ADABC5} /M MAYA /LANG en-us /q

"C:\Program Files\Autodesk\Maya2019\Setup\Setup.exe" /P {1DB1AEB7-EDBD-4BB1-87DB-26C72576DA42} /M MAYA /LANG en-us /q

Мне нужно сделать скрипт, который запускает команды, если одна из них не получается, она запускает следующую, если она завершается успешно, она завершается с завершено и останавливается.

Прямо сейчас у меня есть это:

if "C:\Program Files\Autodesk\Maya2019\Setup\Setup.exe" /P {D4BE10F2-3E2D-4120-863A-765623D53264} /M MAYA /LANG en-us /q; then
    echo success && exit
else
if "C:\Program Files\Autodesk\Maya2019\Setup\Setup.exe" /P {77067FD9-800C-48B4-803D-569642ADABC5} /M MAYA /LANG en-us /q; then
    echo success && exit
else
if "C:\Program Files\Autodesk\Maya2019\Setup\Setup.exe" /P {77067FD9-800C-48B4-803D-569642ADABC5} /M MAYA /LANG en-us /q; then
    echo success && exit

, но я не уверен, что я иду в правильном направлении?

Спасибо за ваш помощь

1 Ответ

0 голосов
/ 10 марта 2020

Как предложено Тео в комментариях к вопросу, более эффективным решением было бы запросить в реестре на HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall запрос командной строки для удаления на основе идентификаторов GUID в ваших командах.

В этом ответе содержатся указания относительно того, как это сделать.

Если это не вариант, вот решение PowerShell:

foreach ($guid in '{D4BE10F2-3E2D-4120-863A-765623D53264}', 
                  '{77067FD9-800C-48B4-803D-569642ADABC5}', 
                  '{1DB1AEB7-EDBD-4BB1-87DB-26C72576DA42}') {

  $exe = 'C:\Program Files\Autodesk\Maya2019\Setup\Setup.exe'

  $ps = Start-Process -PassThru -Wait $exe "/P $guid /M MAYA /LANG en-us /q"

  if ($ps.ExitCode -eq 0) { "Success"; exit 0 }

}

Write-Warning "Uninstallation failed."
exit $ps.ExitCode

Start-Process -PassThru -Wait запускает процесс установки, ожидает его завершения и затем возвращает System.Diagnostics.Process экземпляр, представляющий завершенный процесс, чей код выхода (.ExitCode) может быть затем исследован. Код выхода 0 сигнализирует об успехе, об ошибке любого другого значения.

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