Windows 服务安装程序不读取 App.Config 文件

发布于 2024-12-07 21:50:01 字数 243 浏览 1 评论 0原文

我已经在我的项目中添加了 App.Config 。 我有一个安装程序类(ProjectInstaller.cs),它需要从 App.config 读取值。 我正在提供钥匙。 下面是示例代码:

ConfigurationManager.AppSettings["CONFIG_FILE"]

当在 Installer 类中调用时,我按照上面的代码获取空值。 但在 App.Config 文件中存在上述键的值。

I have added App.Config in my project.
I have a installer class(ProjectInstaller.cs) which needs to read values from App.config.
I am providing the keys .
Below is the sample Code :

ConfigurationManager.AppSettings["CONFIG_FILE"]

I am getting null values as per above code ,when invoked in Installer class.
But in App.Config file the value for the above key exists.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

用心笑 2024-12-14 21:50:01

尝试:

public string GetServiceNameAppConfig(string serviceName)
{
    var config = ConfigurationManager.OpenExeConfiguration(Assembly.GetAssembly(typeof(MyServiceInstaller)).Location);
    return config.AppSettings.Settings[serviceName].Value;
}

Try:

public string GetServiceNameAppConfig(string serviceName)
{
    var config = ConfigurationManager.OpenExeConfiguration(Assembly.GetAssembly(typeof(MyServiceInstaller)).Location);
    return config.AppSettings.Settings[serviceName].Value;
}
彡翼 2024-12-14 21:50:01

谷歌帮助:http://social.msdn.microsoft.com/Forums/ar/winformssetup/thread/896e110e-692d-4934-b120-ecc99b01c562

要点是您的安装程序不是 单独作为 exe 运行,并且默认情况下不会加载名为您想象的任何名称的 app.config,因为运行安装程序的 exe 是InstallUtil.exe,它最终会从文件 InstallUtil.exe.config 中搜索 appSettings,该文件不是您的,也不是您想要的,请阅读以下内容并检查链接。 ..

如果您通过InstallUtil调用它,那么配置文件是
定义为InstallUtil.exe.config,这不是您想要的。你
可以使用 Configuration 手动加载配置文件,但它会
可能有点乱

诀窍在于安装程序类的执行上下文。如果你
使用 InstallUtil 安装您的应用程序,所有代码将在
与InstallUtil.exe 相同的进程。如果您需要将一些数据传递给
在部署期间,安装程序类应该使用安装参数。
它们在执行 Install、Commit、
执行环境的回滚和卸载方法
(installutil、Windows 安装程序...)。您可以访问那里的参数
使用安装程序类的 InstallContex 属性。

CodeProject 上有一篇关于安装项目的优秀文章
和参数:
http://www.codeproject.com/dotnet/SetupAndDeployment.asp

查看
http://msdn2.microsoft.com/en-us /library/system.configuration.install.installcontext.aspx

Google helps: http://social.msdn.microsoft.com/Forums/ar/winformssetup/thread/896e110e-692d-4934-b120-ecc99b01c562

the point is that your installer is NOT running as exe alone and an app.config called whatever you imagine will not be loaded by default as the exe running your installer is InstallUtil.exe and it would eventually search appSettings from the file InstallUtil.exe.config which is not yours and is not what you want, read the following and check the links...

If you invoke it through InstallUtil then the configuration file is
defined as InstallUtil.exe.config which is not what you want. You
could manually load the config file using Configuration but it will
probably be a little messy

The trick is in the execution context of the installer classes. If you
install your app using InstallUtil all code will be executed in the
same process as InstallUtil.exe. If you need to pass some data to the
Installer class during deployment you should use install parameters.
They are passed to the installer during execution of Install, Commit,
Rollback and Uninstall methods by the execution enviroment
(installutil, windows instller...). You can access there parameters
using InstallContex property ot the installer class.

There is a excellent artiicle on CodeProject regarding Setup projects
and parameters:
http://www.codeproject.com/dotnet/SetupAndDeployment.asp

Check out
http://msdn2.microsoft.com/en-us/library/system.configuration.install.installcontext.aspx

等风也等你 2024-12-14 21:50:01

Davide Piras 解释得很好,为什么你不能使用你的 app.config 并建议将你的值作为参数传递。

我发现了一篇不错且有用的文章,介绍了如何将参数传递给 installutil.exe 并在 serviceInstallerprojectInstaller 中使用它们:

第 1 部分: 使用参数InstallUtil

第 2 部分:使用 InstallUtil 中的参数配置 Windows 服务

它非常简短地解释了如何传递参数以及如何读取它们。

Davide Piras explained very well, why you can't use your app.config and suggests to pass your values as parameters.

I found a nice and helpful article on how to pass parameters to the installutil.exe and use them in the serviceInstaller or projectInstaller:

Part 1: Using Parameters with InstallUtil

Part 2: Configuring Windows Services with Parameters from InstallUtil

It explains very shortly how to pass arguments and how to read them.

夜无邪 2024-12-14 21:50:01

对我来说,最简单的解决方案是创建 InstallUtil.exe.config 文件,并用应用程序配置文件中的内容填充它。服务安装程序已成功从此配置文件读取。

我按照以下描述的步骤创建了服务: 在托管 Windows 服务中托管 WCF 服务

For me the easiest solution was to create InstallUtil.exe.config file, and fill it up with content from application config file. Service installer successfully read from this config file.

I created my service by following steps described in: Host a WCF Service in a Managed Windows Service

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文