В настройке WIX, которую я получил, при обновлении приложения я установил требование закрывать приложения, которые могут удерживать файлы, которые необходимо обновить:
<util:CloseApplication
Id="CloseMyApp"
Target="[MyAppExe]"
CloseMessage="yes"
Description="!(loc.MyAppStillRunning)"
RebootPrompt="no"
ElevatedCloseMessage="no"
/>
Приложение, с другой стороны, будет захватывать закрытие окна с помощью «удобного для пользователя» диалогового окна, в котором пользователь может подтвердить, что он или она хочет закрыть приложение.
Когда установщик запускает CloseApplication, он обнаруживает, что приложение должно быть остановлено, но не может закрыть мое приложение. Одна из теорий заключается в том, что диалоговое окно останавливает закрытие приложения.
Так что вопрос: это может быть возможной проблемой? Если да - как я могу получить это диалоговое окно подтверждения и при этом вести себя правильно, когда установщик просит закрыть приложение? Должен ли я слушать сообщения Win32 (например, WM_QUIT / WM_CLOSE) или есть .NET API, который я могу использовать для правильного ответа на эти события?
Обновление: Согласно списку рассылки , CloseApplication отправит WM_CLOSE приложению. У меня все еще есть проблема с другим поведением, если пользователь закрывает приложение по сравнению с сообщением о закрытии, отправленным WIX. Не уверен, как определить различные источники закрытия приложения.