是否可以/建议使用InstallService元素来安装用托管代码(C#)编写的Windows服务? (我尝试了它,它确实安装了服务,但服务无法启动)
或者这需要一个调用Installutil的自定义操作吗?
或者还有另一种方法吗?
答案 0 :(得分:3)
我现在正在研究wix,并且刚刚成功使用标准的ServiceInstall / ServiceControl方式安装/卸载托管服务(如果我们可以只使用sc,为什么不呢) 。 根据我的阅读和同意,使用installutil的自定义任务是considered a bad practice: 我以前在.net安装程序中安装了perf计数器,但现在我只需要wix way for it。
顺便说一下,我必须添加一个ServiceControl元素,以便在安装(Start属性)之后启动服务,对我来说更重要的是,在卸载期间完全卸载(删除属性)。
<ServiceControl Id='ControlStansWinService' Remove='both' Name='StansWinService' Start='install' Stop='both' Wait='yes' />
到目前为止,我已发布了我的调查结果here,希望您能发现它有用。
答案 1 :(得分:0)
您应该使用WIX InstallService元素,因为它执行安装服务以及在安装和卸载时启动和停止/删除服务的所有工作。如果使用自定义操作调用InstallUtil来安装servive,则必须使用CustomAction手动再次启动和停止服务。