util: Закрыть приложение из службы Windows - PullRequest
0 голосов
/ 08 июня 2018

Я пытаюсь закрыть «Приложение для лотка» во время обновления моего приложения.Функциональность закрытия лотка из «Службы Windows» выглядит следующим образом:

<util:CloseApplication 
  Id="CloseTrayAgent"
  Target="$(var.TrayAgentBinName).exe"
  RebootPrompt="no"
  CloseMessage="yes"
  Description="Tray application is still running"/>

<InstallExecuteSequence>
  <Custom Action="WixCloseApplications" Before="RemoveFiles" />
</InstallExecuteSequence>

Этот сценарий работает, если обновление вызывается из «Пользователь» (только из консоли пользователя), но не работает, если оно вызывается из «Служба Windows ".Я проверил журнал MSI, но мне кажется, что ошибок нет.

Где моя ошибка?Спасибо.

1 Ответ

0 голосов
/ 08 июня 2018

Службы работают в нулевом сеансе, который изолирован от сеанса интерактивного рабочего стола.В этой статье прямо указывается на проблему со службами, которые используют API, такие как SendMessage, для отправки сообщения приложению, запущенному в интерактивном сеансе:

https://blogs.technet.microsoft.com/askperf/2007/04/27/application-compatibility-session-0-isolation/

Изоляция сеанса поиска -services- или -сессия 0- даст больше информации.

...