在.NET生产环境中部署windows服务

在.NET生产环境中部署windows服务,.net,windows-services,service,.net,Windows Services,Service,我已经为一个用.NET编写的Windows服务创建了一个安装项目。该服务依赖于App.config中的几个元素,这些元素在开发环境中与生产环境中不同(例如:文件夹路径) 我现在有了MSI文件,可以在生产环境中运行以安装该服务。但是,如何更改配置元素的值 我不确定最佳实践是什么。我已经有一段时间没有使用过了,但它确实是创建安装程序的一个很棒的工具集。它的功能比VisualStudio内置的msi功能多得多。特别是它支持您所要求的内容,我建议您将安装程序移到WiX并使用xmlconfig功能。没有神

我已经为一个用.NET编写的Windows服务创建了一个安装项目。该服务依赖于
App.config
中的几个元素,这些元素在开发环境中与生产环境中不同(例如:文件夹路径)

我现在有了MSI文件,可以在生产环境中运行以安装该服务。但是,如何更改配置元素的值


我不确定最佳实践是什么。

我已经有一段时间没有使用过了,但它确实是创建安装程序的一个很棒的工具集。它的功能比VisualStudio内置的msi功能多得多。特别是它支持您所要求的内容,我建议您将安装程序移到WiX并使用xmlconfig功能。

没有神奇的代码,也没有设计师的帮助

我所做的是创建一个.net安装程序类,并使用该类访问已安装的服务app.config:

ConfigurationManager.OpenExeConfiguration(Context.Parameters["assemblypath"]);
然后,您可以使用configuration manager进行更改并将其保存回中。如果需要,您可以设计一个对话框,并在自定义操作中从安装程序运行它


尽管有乐趣,MSI是邪恶的。建议您完全忽略有关卸载以前版本、更新版本等的任何选项。这些选项无法按您预期的方式工作,升级您的服务将给您带来严重的痛苦。我现在正在经历这种情况,我们的解决方案有12项服务需要管理…

斯宾塞关于MSI格式是邪恶的说法是正确的。当我的客户无法卸载我的服务时,给我带来了一些愤怒:))看看。我使用它们来构建我的一个服务的安装程序。到目前为止,在测试中一切看起来都正常。如果我的客户在一个月左右的时间内对这个exe安装程序没有任何问题,我计划完全使用exe格式。

这不是一个最佳做法,而是我所做的,以防您觉得有趣


我复制App.config,比如App.config.debug和App.config.production,然后打开App.config和相应的其他文件,然后根据需要复制/粘贴到App.config中。是的,这并不理想,如果您有多个生产部署目标,这肯定会很糟糕,但我还没有找到我更喜欢的。如果您使用的是源代码管理,您可能会选择不使用App.config,因为按照我的约定,它只是其他文件之一的副本。

因此,在.NET中安装项目时不可能这样做:(+1用于使用WiX创建安装程序。这是一个学习曲线,但它非常好,可以做很多事情。