代码之家  ›  专栏  ›  技术社区  ›  sympatric greg

使用安装程序项目安装时指定Windows服务名称

  •  13
  • sympatric greg  · 技术社区  · 17 年前

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

    1. 接收服务名称的用户输入
    2. 正在安装服务
    3. 从1序列化服务名称(以便在日志记录和卸载中使用正确的名称)

    我最初的希望是在app.config中设置服务名(然后在卸载ServiceInstaller时检索它)。这看起来很幼稚,因为在安装过程中无法访问它。

    如果myInstaller扩展了安装程序,它可以调用base.install();但是,我尝试写入app.config(在myInstaller.install()内和base.install()之后)是有效的。

    因此,虽然可以使用自定义服务名称安装服务,但该名称不会序列化,安装程序在卸载时最不满意。

    怎么做?

    1 回复  |  直到 16 年前
        1
  •  9
  •   Neil Barnwell    17 年前

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

    推荐文章