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

如何在C#中回滚或取消MSI项目?,c#,windows-services,windows-installer,C#,Windows Services,Windows Installer,我正在尝试构建一个MSI项目,在安装过程中我正在安装一个Windows服务。如果该服务安装失败,我想启动回滚并取消安装 我已经构建了一个installer类并重写了install和uninstall方法。如何启动回滚?首先,您应该知道,使用InstallUtil自定义操作(无论它们的文档和书面形式如何)不是一个好的选择。把它们扔掉。这同样适用于用于使用自定义操作的VisualStudio部署项目 最好的解决方案在于利用Windows Installer内置的支持来创建和启动服务。使用Instal

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


我已经构建了一个installer类并重写了install和uninstall方法。如何启动回滚?

首先,您应该知道,使用InstallUtil自定义操作(无论它们的文档和书面形式如何)不是一个好的选择。把它们扔掉。这同样适用于用于使用自定义操作的VisualStudio部署项目

最好的解决方案在于利用Windows Installer内置的支持来创建和启动服务。使用InstallShield 2010限量版(免费)或Windows Installer XML(FOSS)。这些工具公开ServiceControl表,该表有一个等待列,允许您设定MSI:

等待
将此字段保留为空或 输入值1会导致 安装程序最多等待30分钟 服务完成所需的秒数 在继续之前。等待可以是 用于为一个项目留出额外的时间 返回故障的关键事件 错误。此字段中的值为0 表示仅等待服务完成 控制管理器(SCM)报告: 此服务处于挂起状态 在继续之前 安装


首先,您应该知道,使用InstallUtil自定义操作(无论它们的文档和书面形式如何)不是一个好的选择。把它们扔掉。这同样适用于用于使用自定义操作的VisualStudio部署项目

最好的解决方案在于利用Windows Installer内置的支持来创建和启动服务。使用InstallShield 2010限量版(免费)或Windows Installer XML(FOSS)。这些工具公开ServiceControl表,该表有一个等待列,允许您设定MSI:

等待
将此字段保留为空或 输入值1会导致 安装程序最多等待30分钟 服务完成所需的秒数 在继续之前。等待可以是 用于为一个项目留出额外的时间 返回故障的关键事件 错误。此字段中的值为0 表示仅等待服务完成 控制管理器(SCM)报告: 此服务处于挂起状态 在继续之前 安装


您想从何处启动回滚?这是来自自定义操作吗?是的,我有一个installer类,它已添加到自定义操作的安装过程中,如果安装失败,它将安装windows服务我希望它失败整个安装并删除所有文件。请尝试从自定义操作返回1602:您想从何处启动回滚?这是来自自定义操作吗?是的,我有一个安装程序类,它被添加到自定义操作中的安装过程中,如果安装失败,它将安装windows服务我希望它整个安装失败并删除所有文件。尝试从自定义操作返回1602:似乎我认为2010 LE支持ServiceControl/ServiceInstall表是错误的。一种解决方法是使用WiX创建带有服务的合并模块,然后使用InstallShield表中的合并模块。注意:我认为最近发布的VS2013 ISLE现在支持ServiceInstall/ServiceControl。似乎我认为2010 LE支持ServiceControl/ServiceInstall表是错误的。解决方法是使用WiX创建带有服务的合并模块,然后使用InstallShield表中的合并模块。注意:我相信最近发布的VS2013 ISLE现在支持ServiceInstall/ServiceControl。