Я разработал настройку msi с использованием WIX, которая состоит из настольного приложения, а также службы Windows, и оба они работают на базе C# .Net 3.5. Моя служба Windows запускается только тогда, когда любой пользователь входит в систему, которая запускает настольное приложение для запуска. Служба Windows предназначена для работы в качестве локальной системы. Установка msi успешно устанавливается на Win-8, Win-7 и Windows-XP, но при отображении сообщения «Файл в использовании» при удалении даже служба не удаляется из SCM. Я дал ниже коды в методе OnStop() службы и внутри страницы WIX соответственно.Установка Msi, показывающая сообщение об использовании при деинсталляции
OnStop метод():
Process[] workers = Process.GetProcessesByName("filename");
workers[0].WaitForExit(1000);
workers[0].Kill();
workers[0].Dispose();
workers[0].Close();
Product.wxs внутри WIX:
<ServiceInstall Id="ServiceInstaller" Name="Servicename"
DisplayName="service display name" Description="service description"
Start="auto" Account="LocalSystem" ErrorControl="normal"
Type="ownProcess"></ServiceInstall>
<ServiceControl Id="ServiceInstallerControl" Name="Servicename"
Start="install" Stop="both" Remove="uninstall" Wait="yes" />
Услуга не удаляется из SCM на всех и ниже всплывающее сообщение отображения в момент процесс удаления.
Я работал вокруг с WIX, чтобы решить эту проблему, но не в состоянии сделать это.
Любая помощь в этом отношении будет высоко оценена.
Каким образом служба запускает настольное приложение? Если служба запускает процесс настольного приложения синхронно, служба не вернет управление обратно диспетчеру управления службами (SCM) до тех пор, пока приложение рабочего стола не будет завершено. Можете объяснить, почему un-install не может остановить/удалить службу. Запуск удаления с протоколированием может дать некоторое представление о том, что происходит: 'msiexec/l * v Remove.log/x InstallPackage.msi'. – bradfordrg