Проблема запуска процесса C # для удаления предыдущих версий установки InstallShield - PullRequest
0 голосов
/ 13 апреля 2019

У нас есть около 20 предыдущих версий нашего программного обеспечения, которые могут быть установлены, и их необходимо удалить перед установкой новой версии.Большинство из них были построены как MSI-проекты InstallScript, и это важно, поскольку msiexec /x{*ProductCode*} не работает для этого типа проекта.

Вам необходимо «записать» файл ответов удаления, а затем передать его в вызовмолча удалить.Например, предположим, что я записал файл ответов с именем response.iss.Чтобы удалить это без вывода сообщений, мне нужно запустить C:\Program Files (x86)\InstallShield Installation Information\{*ProductCodeGUID*}\setup.exe и передать в качестве параметра /s /f1"*PathToResponseFile*\response.iss.

Так что в нашем установщике InstallShield я вызываю настраиваемое действие C #, которое выясняет, какая версия установлена, и затем выполняет соответствующие команды.удалить. Он отлично работает для предыдущих 19 версий , но в одной версии (последний проект InstallScript MSI - я перешел к установщику Basic MSI после этой версии) он не работает программно.Если я шагаю по коду и копирую и вставляю process.StartInfo.FileName и process.StartInfo.Arguments в окно CMD и запускаю его, он удаляется нормально, но когда я обрабатываю .Start () и process.WaitForExit (), он просто проходит черезУдаление.

Это почти все, что вам нужно знать.Если вам интересно, вот код:

enter image description here

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