Создание MSI: завершить работу приложения перед обновлением - PullRequest
4 голосов
/ 27 февраля 2011

Я использую Microsoft Visual Studio 2010 для создания простого установщика .MSI для моего простого приложения .EXE.

Проблема в том, что все идет не так (до перезагрузки), если вы устанавливаете обновление, пока .EXE все еще работает.

Я бы хотел, чтобы установщик .MSI завершил мой процесс перед установкой / обновлением.

Может кто-нибудь сказать мне, как это сделать в Orca?

РЕДАКТИРОВАТЬ: я видел, что это произошло из-за моего использования .EXE, но я также видел это, потому что файл справки .CHM был открыт также во время обновления, поэтому одного завершения процесса недостаточно чтобы решить эту проблему.

Ответы [ 3 ]

3 голосов
/ 28 февраля 2011

Вы должны добавить диалог MsiRMFilesInUse в программу установки.

1 голос
/ 28 февраля 2011

Вы можете попробовать создать пользовательское действие , которое останавливает ваше приложение (пользовательский EXE или DLL, написанный вами).Например, вы можете отправить WM_CLOSE в главное окно приложения (ваше приложение должно обработать это сообщение).

Это пользовательское действие должно быть запланировано до действия InstallValidate в таблице InstallExecuteSequence.

0 голосов
/ 07 марта 2011

Вы можете написать пользовательское действие, которое закроет ваше приложение и файл справки.

Вы должны быть в состоянии найти дескрипторы окон для обоих из них, используя FindWindow: http://msdn.microsoft.com/en-us/library/ms633499(v=vs.85).aspx

Для исполняемого файла вы должны иметь возможность использовать соответствующий класс окна или заголовок для FindWindow. Для файла справки вы должны использовать заголовок соответствующего окна справки для FindWindow.

Надеюсь, это поможет!

...