c# - 使用安装项目安装时指定 Windows 服务名称

标签 c# windows-services setup-project

目标:为了支持在一台机器上可能有多个实例的 Windows 服务,使用安装项目创建一个 MSI 能够:

  1. 接收用户输入的服务名称
  2. 安装服务
  3. 从 1 开始序列化服务名称(以便在登录和卸载时可以使用正确的名称)

我最初的希望是在 App.config 中设置服务名称(然后在实例化 ServiceInstaller 时在卸载期间检索它。这似乎很天真,因为它在安装期间不可访问。

如果 MyInstaller 扩展 Installer,它可以调用 base.Install();但是,我尝试写入 app.config(在 MyInstaller.Install() 内和 base.Install() 之后)是无效的。

因此,虽然可以使用自定义服务名称安装该服务,但该名称未序列化,安装程序在卸载时非常不高兴。

应该怎么做?

最佳答案

您可以为安装程序操作指定参数,因此收集服务名称,并将其作为参数传递给操作。然后,在 Installer 类中,您可以覆盖 Install() 并通过 base.Context.Parameters 访问它。这就是您获得值(value)的方式。获得该值并使用它后,您将其放入 stateSaver IDictionary 参数中,这样如果您重写 Uninstall() 就可以找出什么值在安装时使用。

关于c# - 使用安装项目安装时指定 Windows 服务名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1070885/

相关文章:

c# - mschart 缩放和滚动

c# - 了解一段 C# 代码

tomcat - 在 Windows 上运行 Clojure 后台进程的最佳实践

c# - 如何在 C# 中创建安装文件

java - 由于 "Could not determine java version"错误,无法在 Mac 上的新项目上运行 grails 命令

c# - 这是状态消息显示的最佳方式吗?

C# 控制台 .exe 文件打开和关闭后立即

c# - 如何从 .NET 中的 Windows 服务获取当前记录的用户名?

c# - 使用 OWIN 将 Web API 托管为 Windows 服务

c++ - 具有独立子项目的 CMake 项目