我有windows服务,它将作为wix安装的一部分安装。问题是,当前服务正在生产中,并且由于服务OnStop方法中的一些写得不好的代码,它没有响应停止。
因此,下次用户尝试安装升级版本时,安装将失败,因为当wix尝试停止服务时,服务永远不会停止。
有没有办法让我知道wix是否需要花费太多时间来卸载,如果我收到通知,我可以终止这个过程?
另外,有什么方法可以根据产品版本杀死进程?
谢谢
答案 0 :(得分:0)
我不应该回答这个问题,因为我处理过这样的事情已经很久了,但到底是什么,让我们试试。
我想强调的是,我还没有真正测试过这些杀毒服务的工具,而且我现在还没有时间这么做。在计划运行来自WiX的StopServices
自定义操作之前,可能存在排序CloseApplication
的排序问题。请在编译后使用Orca(在底部)检查InstallExecuteSequence
以查看是否是这种情况。
答案 1 :(得分:0)
我在挖掘一段时间后找到了解决方法。
我正在创建新的C#自定义操作项目,我在InstallInitialize之前对我的操作进行排序。
在我的C#自定义操作方法中,我正在使用读取现有的已安装文件版本 FileVersionInfo.GetVersionInfo(文件路径);
然后我正在检查我想检查的所需版本,如果条件匹配,我正在使用
查杀服务流程 foreach (Process proc in Process.GetProcessesByName("ProcessName"))
{
proc.Kill();
session.Log("Service Killed");
}
为了实现这一点,必须预先安装Wix工具集v3.11.1