Приложение вызова WiX при удалении до того, как пользователь запросит «закрыть вручную» - PullRequest
2 голосов
/ 23 марта 2012

У меня есть установщик, который устанавливает приложение и запускает его сразу после завершения установки.Это работает правильно для меня.

Но теперь я хочу остановить это приложение при удалении приложения, я не хочу, чтобы пользователю предлагалось закрыть приложения вручную.Это должно работать полностью автоматически.

Мне нужно сделать это с помощью пользовательского действия, сообщение WM_CLOSE не будет работать в моем подходе (на самом деле, я пробовал это пару раз).

Я думал, что это не можетбыть таким трудным, но я не заставляю его работать.Что я сделал до сих пор:

Я определил CustomAction:

<CustomAction Id="CloseTrayApp" ExeCommand="-exit" FileKey="TrayApp" Execute="immediate" Return="asyncNoWait" />

и назвал это следующим образом:

<InstallExecuteSequence>
...
    <Custom Action="CloseTrayApp" Before="InstallValidate" />
...
</InstallExecuteSequence>

Но это не работает.Я предполагаю, что я неправильно планирую свое пользовательское действие, но я не могу определить правильное время, чтобы сделать это.

Есть ли какие-либо предложения относительно времени / места, в которое следует запланировать настраиваемое действие?Я совершенно не уверен, является ли

Before="InstallValidate"

правильным местом для этого.

1 Ответ

3 голосов
/ 23 марта 2012

В разделе справки FilesInUse , прежде чем InstallValidate будет правильным местом для планирования пользовательских действий. Но я не понимаю, почему WM_CLOSE не будет работать для вас. Я видел, как вы задали другой вопрос и приняли его как ответ. Возможно, у вашего TrayApp может быть «скрытая» форма, которую пользователь никогда не видит, но использует для получения сообщения WM_CLOSE. Это трюк, который я делал много раз за эти годы.

В противном случае, если вы действительно хотите вызвать свой EXE, я советую никогда не использовать пользовательское действие EXE. Вместо этого используйте Настраиваемое действие тихого выполнения . По некоторым причинам, почему это сделать, см. Препятствия интеграции для пользовательских действий EXE .

...