2015-05-14 3 views
0

Я разработал настройку 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 на всех и ниже всплывающее сообщение отображения в момент процесс удаления.

enter image description here

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

Любая помощь в этом отношении будет высоко оценена.

+0

Каким образом служба запускает настольное приложение? Если служба запускает процесс настольного приложения синхронно, служба не вернет управление обратно диспетчеру управления службами (SCM) до тех пор, пока приложение рабочего стола не будет завершено. Можете объяснить, почему un-install не может остановить/удалить службу. Запуск удаления с протоколированием может дать некоторое представление о том, что происходит: 'msiexec/l * v Remove.log/x InstallPackage.msi'. – bradfordrg

ответ

0

Я бы рекомендовал вам создать настраиваемое действие, которое обрабатывает удаление. Вы можете создать пакетный файл с данными об удалении, а затем просто выполнить командный файл из пользовательского действия (в виде процесса). создавать и удалять пакетные файлы с вашей службой.

Смежные вопросы