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