Как определить, успешно ли завершился установщик (в частности InstallShield)? - PullRequest
1 голос
/ 13 мая 2010

Я запускаю установщик из своего приложения, а затем синхронно ожидаю его завершения.

Process installerProcess = Process.Start("TheProcessName");

// Must EnableRaisingEvents before calling synchronous method WaitForExit 
// according to MSDN documentation.
installerProcess.EnableRaisingEvents = true;

installerProcess.WaitForExit();

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

Я попробовал свойство ExitCode процесса, думая, что «0» будет означать успех, а все другие коды будут означать сбой, но он показал тот же код завершения для успешной или неудачной установки, так что теперь я в тупике. Есть идеи? Или есть лучший способ сделать это, чем я сейчас делаю?

Ответы [ 2 ]

1 голос
/ 14 мая 2010

Какой тип проекта InstallShield вы используете? MSI или скрипт управляемый? У меня всегда были msixec и setup.exe возвращающие значимые коды выхода. Что-то здесь не так.

0 голосов
/ 14 мая 2010

Я полагаю, что подход, используемый Windows для проверки совместимости установщика, заключается в отслеживании количества ключей в ключе реестра Uninstall . Если это увеличивается, велика вероятность, что установка прошла успешно. В вашем случае вы, вероятно, могли бы искать какой-либо соответствующий ключ реестра, установленный конкретным установщиком, который вы запускаете, но его ключ удаления может быть хорошим выбором.

...