我正在尝试构建一个MSI项目,在安装过程中我正在安装一个Windows服务。如果无法安装该服务,我想启动回滚并取消安装。
我已经构建了一个安装程序类并重写了安装和卸载方法。如何启动回滚?
答案 0 :(得分:1)
首先,您应该知道使用InstallUtil自定义操作(无论文档和写入方式如何)都不是一个好的选择。把它们丢掉。您正在使用的Visual Studio部署项目也可以采用自定义操作。
最佳解决方案在于利用Windows Installer内置支持来创建和启动服务。使用InstallShield 2010 Limited Edition(免费)或Windows Installer XML(FOSS)。这些工具公开了ServiceControl表,它有一个允许你教MSI的Wait列:
<强>等待强>
将此字段保留为null或 输入值为1会导致 安装程序最多等待30 服务完成的秒数 在继续之前。等待可以 曾经允许额外的时间 返回失败的关键事件 错误。此字段中的值为0 意味着只等到服务 控制管理器(SCM)报告 此服务处于暂挂状态 继续之前 安装。