在Wix安装程序中,如何使安装程序只在启动/运行时启动服务并在更新过程中由安装程序停止服务?
EDIT 为了澄清,我有一个服务,它是我的安装程序的一个组件,它是根据某些参数安装的。我遇到的问题是,如果我设置,那么无论安装之前的状态如何,服务都将启动。我希望它只有在运行wix安装程序之前运行时才会启动。
答案 0 :(得分:1)
我认为您需要使用自定义操作代码执行此操作。我知道WiX或Windows Installer中没有内置功能可以跟踪服务是否在安装开始时运行。因此,您需要使用自定义操作查询服务状态并相应地设置属性。在安装结束时(StartServices标准操作所在的位置),您可以使用自定义操作重新启动该服务。我不会在ServiceControl操作上使用条件来启动服务,因为这会影响您要启动的所有服务。
答案 1 :(得分:1)
如上所述,您需要使用c#运行自定义操作,例如:
ServiceController sc = new ServiceController(SERVICENAME);
switch (sc.Status)
{
case ServiceControllerStatus.Running:
return "Running";
case ServiceControllerStatus.Stopped:
return "Stopped";
case ServiceControllerStatus.Paused:
return "Paused";
case ServiceControllerStatus.StopPending:
return "Stopping";
case ServiceControllerStatus.StartPending:
return "Starting";
default:
return "Status Changing";
}