目标:为了支持在一台计算机上可能有多个实例的 Windows 服务,请使用安装项目创建一个能够执行以下操作的 MSI:
- 接收用户输入的服务名称
- 安装服务
- 从 1 开始序列化服务名称(以便在日志记录和卸载时可以使用正确的名称)
我最初的希望是在 App.config 中设置服务名称(然后在实例化 ServiceInstaller 时在卸载期间检索它)。这似乎很天真,因为在安装过程中无法访问它。
如果MyInstaller继承Installer,它可以调用base.Install();但是,我尝试写入 app.config (在 MyInstaller.Install() 内和在 base.Install() 之后)是无效的。
因此,虽然可以使用自定义服务名称安装服务,但该名称不会序列化,安装程序在卸载时会感到非常不满意。
这应该怎么做呢?
您可以为安装程序操作指定参数,因此收集服务名称,并将其作为参数传递给操作。然后,在Installer
类,你可以覆盖Install()
并通过访问它base.Context.Parameters
。这就是你获得价值的方式。获得该值并使用它后,您将其放入stateSaver
IDictionary
参数,以便如果您覆盖Uninstall()
您可以找出安装时使用的值。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)