0
我開發了一個使用WIX的msi安裝程序,它包含一個桌面應用程序以及一個windows服務,並且都在C#.Net 3.5框架上運行。只有當任何用戶登錄到觸發桌面應用程序啓動的系統時,我的Windows服務纔會啓動。 Windows服務作爲本地系統運行。 msi安裝程序在Win-8,Win-7和Windows-XP上成功安裝,但在卸載時顯示「File In Use」消息,即使該服務未從SCM中刪除。我已分別在服務的OnStop()方法和WIX頁面內給出了以下代碼。Msi安裝程序顯示卸載時使用的文件消息
的onStop()方法:
內部WIXProcess[] workers = Process.GetProcessesByName("filename");
workers[0].WaitForExit(1000);
workers[0].Kill();
workers[0].Dispose();
workers[0].Close();
Product.wxs:
<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在所有除去下面彈出消息是在時間顯示卸載過程。
我已經與維克斯周圍的工作來解決這個問題,但未能如願。
在這方面的任何形式的幫助將不勝感激。
該服務如何運行桌面應用程序?如果該服務同步啓動桌面應用程序進程,則在桌面應用程序終止之前,服務不會將控制權返回給服務控制管理器(SCM)。可能會解釋爲什麼卸載無法停止/刪除服務。使用日誌記錄運行卸載可能會提供有關正在進行的操作的一些信息:「msiexec/l * v Remove.log/x InstallPackage.msi」。 – bradfordrg