Установить не удалось или установка завершена - PullRequest
1 голос
/ 27 марта 2020

Я попытался настроить это

$install = Start-Process -FilePath 'path' -ArgumentList '/qn' -Wait -PassThru
if ($install.ExitCode -eq 0) {
    Write-Host "Install Successful"
} else {
    Write-Host "Install Failed"
}

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

Ответы [ 2 ]

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

Вы используете неправильный код ошибки для msiexe c.

0 -> Установка успешно завершена

1602 -> Операция отменена пользователем.

1603 -> Неустранимая ошибка при установке.

1604 -> Установка приостановлена ​​/ не завершена.

Полный список кодов выхода msiexe c доступен здесь: http://docs.netecm.ch/launcher/troubleshooting/msi-exit-codes.html

Фиксированный код:

& msiexec.exe "filepath.msi" /qn
switch ($LastExitCode){
  0 {"Installation completed successfully "}
 1602 {" Operation cancelled by the user."}
 1603 {"Fatal error during the installation."}
 1604 {" Installation suspended/incomplete"}
}
0 голосов
/ 27 марта 2020

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

$software = "My software name";
$installed = (Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* | Where { $_.DisplayName -eq $software }) -ne $null

If(-Not $installed) {
    Write-Host "'$software' NOT is installed.";
} else {
    Write-Host "'$software' is installed."
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...