【发布时间】:2015-01-07 13:10:15
【问题描述】:
如何在使用 Orca 完成 msi 安装后运行特定服务?我知道我需要设置自定义操作,但我完全不知道该怎么做。
【问题讨论】:
标签: visual-studio-2010 windows-installer orca
如何在使用 Orca 完成 msi 安装后运行特定服务?我知道我需要设置自定义操作,但我完全不知道该怎么做。
【问题讨论】:
标签: visual-studio-2010 windows-installer orca
您根本不需要自定义操作,您需要 ServiceInstall 和 ServiceControl 表中的行。 FWIW,很少有人真正使用 ORCA 来编写 MSI。它更像是一种检查 MSI 并偶尔创建转换的工具。大多数设置开发人员使用其他工具(例如 Windows Installer XML)来编写内置到 MSI 中的源代码。在这种情况下,您使用ServiceInstall 和ServiceControl 元素告诉编译器将行编写到MSI 中的这些表中。
我维护了一个名为 IsWiX 的 WiX 开源项目。 IsWiX 由充当安装程序脚手架的 Visual Studio 项目模板组成。它还提供了用于创作大部分安装程序逻辑的图形 UI,包括对目录、文件(组件)和服务的支持。 WiX 支持 MSBuild / TFS,使 MSI 的自动化 CI 构建变得轻而易举。
我在 youtube 上有一个视频:Building and Deploying a Windows Service using IsWiX,它展示了使用 Visual Studio Online 进行源代码/构建自动化的过程。这有点过时,因为在视频中我展示了手动创作 ServiceInstall / ServiceControl 元素,但在最新版本的 IsWiX 中,可以使用新的服务设计器以图形方式完成。
【讨论】:
如果您使用的是 VS 安装项目,那么答案是您已经使用安装程序类自定义操作安装服务,因此您覆盖 Install 方法,调用 base.Install() 然后添加您的代码实际启动服务。
正如 Christopher 所提到的,尽管 Windows Installer 提供了支持,但这是 VS 设置项目的方式。
如果您想使用 Visual Studio 设置并使用标准方式来控制服务,这可能会有所帮助:
http://www.installsite.org/pages/en/msi/tips.htm
并向下滚动到在 Visual Studio 中安装服务。
【讨论】: