如何在C#中回滚或取消MSI项目?

时间:2010-12-30 07:32:43

标签: c# windows-services windows-installer

我正在尝试构建一个MSI项目,在安装过程中我正在安装一个Windows服务。如果无法安装该服务,我想启动回滚并取消安装。

我已经构建了一个安装程序类并重写了安装和卸载方法。如何启动回滚?

1 个答案:

答案 0 :(得分:1)

首先,您应该知道使用InstallUtil自定义操作(无论文档和写入方式如何)都不是一个好的选择。把它们丢掉。您正在使用的Visual Studio部署项目也可以采用自定义操作。

最佳解决方案在于利用Windows Installer内置支持来创建和启动服务。使用InstallShield 2010 Limited Edition(免费)或Windows Installer XML(FOSS)。这些工具公开了ServiceControl表,它有一个允许你教MSI的Wait列:

  

<强>等待
  将此字段保留为null或   输入值为1会导致   安装程序最多等待30   服务完成的秒数   在继续之前。等待可以   曾经允许额外的时间   返回失败的关键事件   错误。此字段中的值为0   意味着只等到服务   控制管理器(SCM)报告   此服务处于暂挂状态   继续之前   安装。

ServiceControl Table