2009-07-01 144 views
13

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

  1. 接收用户输入对于服务名称
  2. 安装服务
  3. 序列化服务名称从1

我最初的愿望就是设置服务(以便正确的名称可以在日志和卸载使用)在App.config中命名(然后在实例化ServiceInstaller时在卸载时检索它。这似乎太天真了,因为它在安装过程中无法访问。

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

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

应该怎么做?

回答

9

您可以为安装程序操作指定参数,因此收集服务名称并将其作为参数传递给操作。然后,在Installer课程中,您可以覆盖Install()并通过base.Context.Parameters访问它。这就是你如何获得价值。获得该值并使用该值后,将其放入stateSaverIDictionary参数中,以便如果覆盖Uninstall(),则可以找出安装时使用的值。

+0

隐藏在普通的网站!谢谢尼尔。 – 2009-07-20 05:49:18