Закрыть приложение при удалении - wix
Я использую Wix 3.6. У меня есть проблема, при удалении которой, если какое-либо окно открыто и отображается на панели задач (это окно является частью моей MSI, которую я пытаюсь удалить), оно отображает диалоговое окно с просьбой закрыть приложение (" Следующее приложение должно быть закрыто перед продолжением установки ").
Я попробовал следующее, но не повезло.
<InstallExecuteSequence>
<Custom Action="WixCloseApplications"
Before="InstallInitialize">Installed</Custom>
<Custom Action="StartMonitor"
After="StartServices">NOT Installed</Custom>
</InstallExecuteSequence>
<util:CloseApplication Id="CloseMonitor" Target="Monitor.exe"
CloseMessage="yes" RebootPrompt="no">
Installed
</util:CloseApplication>
Я хочу, чтобы wix обнаружил приложения и закрыл их как часть процесса удаления. Нет необходимости показывать диалоговое окно. Может кто-нибудь, пожалуйста, помогите мне реализовать это.
Он работает нормально, он устанавливается из командной строки с ключом /qn, но без ключа /qn я получаю диалоговое окно ("Следующее приложение должно быть закрыто перед продолжением установки"). Может кто-нибудь, пожалуйста, помогите мне, как это исправить.
1 ответ
Добавить C#
пользовательское событие и добавить сделать его первым событием на InstallUISequence
и используйте следующий код для уничтожения процесса:
try
{
Process proc = Process.GetProcessesByName("MyApplication");
proc.Kill();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message.ToString());
}
и если ваше приложение поддерживает несколько экземпляров, то считать нет. из первых экземпляров:
int count = 0;
Process[] process = Process.GetProcessesByName("MyApplication");
foreach (Process pr in process)
{
if (pr.MainModule.FileName.Equals(Assembly.GetExecutingAssembly().Location, StringComparison.OrdinalIgnoreCase))
{
count++;
}
}
И если вы вообще не используете и DllEntry
затем перейдите по этой ссылке