加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

.net – 覆盖嵌入到MSI中的app.config设置?

发布时间:2020-12-14 02:18:40 所属栏目:Windows 来源:网络整理
导读:我有一个.NET解决方案,其中包含一个生成MSI的安装程序项目. MSI安装的其中一个项目包含一个App.Config文件.看起来该配置文件的值在编译时嵌入到MSI中.有没有办法在运行时覆盖它们? 例如,我正在使用的App.Config设置安装程序与之对话的Web服务的URL.是否可以
我有一个.NET解决方案,其中包含一个生成MSI的安装程序项目. MSI安装的其中一个项目包含一个App.Config文件.看起来该配置文件的值在编译时嵌入到MSI中.有没有办法在运行时覆盖它们?

例如,我正在使用的App.Config设置安装程序与之对话的Web服务的URL.是否可以在运行时覆盖此URL,以便在URL更改时不必重新编译MSI?

更新:我想我要问的是,我可以将具有特定名称的App.Config文件复制到我的安装程序目录中,以便它在运行时覆盖嵌入到MSI中的设置吗?

我知道我可以重新设计代码以检查其他地方的覆盖,例如注册表或众所周知的文本文件位置,但我的当务之急是在不重新编译的情况下解决此问题. (用户手中有很多安装盘)

解决方法

在开发我目前正在开发的应用程序时,我们遇到了类似的挑战.我们希望能够在第一次预先配置从另一台计算机或配置实用程序移植的设置时启动全新安装.老实说,我不知道我们的解决方案在宏伟计划中有多好,但我现在可以告诉你我们做了什么,这对我们有用.

在我们的示例中,其中许多设置最终都在app.config文件中,建议不要尝试从应用程序本身外部进行操作.它可以做到,但它以几种微妙的方式是危险的.如果不是这种情况,最好的选择可能是为安装项目添加“自定义操作”,将数据注入文件,数据库或我们用于存储设置的任何内容.可以找到in MSDN的起点.

但由于这不是一个选项,我们认为通过安装到应用程序而不将其构建到安装包中的最简单方法是使用“骑行”文件.这是您的安装知道的文件,但不是构建到.MSI中的文件.安装时,它必须简单地位于相对于.MSI的已知位置.您告诉安装项目该文件是什么,它应该在哪里,以及放在哪里.然后您的应用程序可以在启动时检查它的存在,并处理它在那里找到的任何内容.在您的情况下,这将是URL设置覆盖.然后应用程序可以删除该文件,因此每次启动时都不会加载.

在安装项目中,文件需要设置一些属性,以确保它与VS安装项目生成的包的样式一起正常工作.确保你设置这些,或者当排除骑乘文件时你可能会得到错误或其他奇怪的行为,因为它不需要.

>条件:不重新安装
> PacakgeAs:vsdpaLoose
>重要:错误

我们将文件称为AutoImport.Settings.xml.这是一个自定义XML文件,用于存储我们希望能够在安装时初始化应用程序的任何数据.它遵循我们在运行时从应用程序手动导出/导入配置时使用的相同格式,并使用相同的机制.它只是在启动时自动执行,如果它在那里找到文件.这允许我们配置一台“原型”机器,其中包含我们希望它具有的所有特定于网络的设置,导出这些设置,然后发送该导入文件,以便在我们在该网络环境中进行的任何其他安装中自动加载.

正如我所说,感觉应该有一种“更好”的方式.我们可以提出的唯一一个意味着离开app.config和user.config机制,这些机制确实有它们的好处.所以最后我们认为这是摩擦最小的替代品,完全满足了我们的需求.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读