使用服务配置
服务配置使 Windows Installer 能够自定义计算机上的服务。 开发人员可以使用 ServiceControl 和 ServiceInstall 表以及 InstallServices、StopServices 和 DeleteServices 操作创作 Windows Installer 包,以在安装过程中安装、停止、启动和删除服务。
从为 Windows Installer 5.0 编写的包开始,开发人员还可以使用 MsiConfigureServices 标准操作和 MsiServiceConfig 表来配置 Windows 7 和 Windows Server 2008 R2 以及 Windows Vista 和 Windows Server 2008 提供的扩展服务自定义选项。 为不包含 MsiServiceConfig 表的 Windows Installer 版本编写的现有安装包仍可使用 Windows Installer 5.0 进行安装。 Windows Installer 的服务配置功能无法配置网络服务帐户、安装共享服务主机 (svchost) 进程,或重启在安装过程中停止的服务。
Windows XP 和 Windows Server 2003 或更早版本:不支持。 从 Windows Installer 5.0(在 Windows 7 和 Windows Server 2008 R2 上运行)和 Windows Installer 4.5(在 Windows Vista 和 Windows Server 2008 上运行)开始,服务配置表和标准操作可供使用。
必须在 InstallExecuteSequence 表中包括 MsiConfigureServices 操作,才能请求在 MsiServiceConfig 表中指定的服务配置。 仅当 MsiConfigureServices 标准操作包含在序列表中时,Windows Installer 才会使用 MsiServiceConfig 表中的信息。 MsiConfigureServices 标准操作还使用 ServiceControl 和 ServiceInstall 表中的信息。
若要请求系统仅向特定服务提供所需的权限,请在 MsiServiceConfig 表中指定服务和 SERVICE_CONFIG_REQUIRED_PRIVILEGES_INFO 配置选项。 从服务的进程令牌中移除不需要的特权。 此选项可用于配置在 LocalSystem、LocalService 或 NetworkService 服务用户帐户的安全上下文中运行的服务。
若要请求系统在所有其他自动启动服务启动后将服务的自动启动延迟一段时间,请在 MsiServiceConfig 表中指定服务和 SERVICE_CONFIG_DELAYED_AUTO_START 选项。 延迟的服务必须由当前包使用 ServiceInstall 表中指定的 SERVICE_AUTO_START 安装,或者必须已将服务安装为自动启动服务。
若要请求系统保留资源以独占使用特定服务,请在 MsiServiceConfig 表中指定服务、服务 SID 类型和 SERVICE_CONFIG_SERVICE_SID_INFO 配置选项。 将服务的 SID 添加到资源的访问控制列表 (ACL) 中。
若要请求服务控制管理器 (SCM) 在向服务发送 SERVICE_CONTROL_PRESHUTDOWN 通知后等待,请执行以下操作。 在 MsiServiceConfig 表中指定服务、SCM 应等待的时间长度以及 SERVICE_CONFIG_PRESHUTDOWN_INFO 配置选项。
若要配置系统在服务发生故障后应何时运行操作,请在 MsiServiceConfig 表中指定服务和 SERVICE_CONFIG_FAILURE_ACTIONS_FLAG 选项。 将要运行的操作添加到 MsiServiceConfigFailureActions 表。
有关 Windows Vista 和 Windows Server 2008 操作系统引入的扩展服务自定义功能的详细信息,请参阅 Windows Vista 的服务更改。