【问题标题】:Update Installation: How to save the app.config?更新安装:如何保存 app.config?
【发布时间】:2011-09-07 13:41:01
【问题描述】:

我有一个大问题:

我有一个旧应用程序 App1.0.exe。对于这个应用程序,有一个名为 App1.0.exe.config(App config)的文件。现在我制作了 2.0 版,新版本现在 Appconfig 中有不同的 Appsettings。我的问题是:在进行更新安装时如何保存旧的 Appconfig?

本次尝试解决问题失败:

-使用 BeforeInstall 事件读出旧配置,保存到上下文参数并在 Afterinstall 事件中写入新配置。 - BeforeInstall 读出新的配置(旧的被删除)。 - 不要复制新的 Appconfig,而是复制具有不同名称的文件,例如AppConfigUpdate.config 包含新的 appconfig。在安装后事件中,我使用 File.Move() 保存旧配置。现在谁有:

-Appconfig.exe.config_Original

-AppconfigUpdate.config

然后我读出 .config_Original 并将参数写入 AppConfigUpdate.config 并将其重命名为 Appconfig.exe.config

我的问题是在执行我的自定义操作后执行的 msi 中有一个标准操作:RemoveExistingProducts。所以现在当我调试安装程序时,我可以在我的自定义操作结束时看到旧配置 .config_original 和新配置 .config 以及旧配置中的正确参数。但是在我的自定义操作之后,安装删除了 .config,只剩下 .config_original。

我认为 RemoveExistingProducts 会删除所有未随更新包一起提供的文件。但是我无法提供 .config,因为它会覆盖原始配置并且所有参数都丢失了。

我现在在这个问题上工作了 3 天,我真的需要你的帮助。我想不出如何解决这个问题,也许你们中的任何人都遇到过类似的问题?

对不起,我的英语不好。 最好的问候

【问题讨论】:

  • 为什么需要保存旧的 App.config?自从您部署 V1 以来,不应以任何方式更改其中的值,因此您应该非常清楚其中的内容,因为用户更改的所有设置都保存在 AppData 下的 user.config...
  • 为什么不呢?如果用户安装了 v1,为什么在与 v1 中的设置相同的情况下需要配置 v2 new?是的,我知道我不应该更改设置,这是一个巨大的错误:(。但问题是:它已经发生了,现在我正在尝试解决这个问题。问题是有一些通往其他程序的路径,例如所以他们可以与众不同

标签: c# installation windows-installer orca


【解决方案1】:

正确的方法是使用两个自定义操作来备份和恢复您的旧配置文件。备份自定义操作将在 RemoveExistingProducts 操作之前执行。还原自定义操作将在 InstallFiles 之后执行。一些简单的脚本自定义操作就可以完成这项工作。

有关自定义操作的更多详细信息,请参阅:

http://msdn.microsoft.com/en-us/library/aa368066(VS.85).aspx

很遗憾,Visual Studio 设置没有很好的计划支持自定义操作。您将不得不使用另一个免费或商业的 msi 创作工具。

【讨论】:

  • 这个想法很棒,但问题是:当我将配置添加到输出时,它会在我保存旧配置之前覆盖新配置。如果我调用配置 update.exe.config 保存旧的并将更新重命名为 exe.config:msi 安装程序卸载旧配置
  • 不要重命名配置文件,您应该将其移动到另一个位置,例如 Temp 文件夹。还要确保在 RemoveExistingProducts 之前安排备份自定义操作。
  • 不,这就是问题所在。我保存旧的配置文件 Appconfig.exe.config 并将其重命名为 Appconfig.exe.config_original,而不是将 AppconfigUPDATE.exe.config 重命名为 Appconfig.exe.config,所以我有 .exe.config 和 .exe.config_original。当我的自定义操作结束时,两个配置都在那里,我可以在调试安装时看到它。但是在我的自定义操作之后,Standart Action RemoveExistingProducts 开始我认为并删除了 Appconfig.exe.config(新配置),因为我没有在新安装中提供这个 Appconfig.exe.config 文件。解决不了这个
  • 你的方法太复杂了。只需备份文件并让新软件包的安装覆盖它。然后恢复它。
  • 是的,但是如何在单文件安装中做到这一点?这就是我想要的,但我不能:(。而且我不敢相信没有办法通过微软功能将旧的应用程序配置保存在 msi 安装中。我经常看到基本功能被保存在应用程序配置中,如果用户或程序更改了这一点,那么为什么您不能应用旧的配置设置。
【解决方案2】:

也许可以解决安装程序的行为?

与其在安装期间重新编写配置,不如让您的应用程序在启动时测试配置是否为“版本 1”格式。如果是这样,它会在此时执行更新。

这里有更新 app.config 的(旧的但有效的)详细信息:http://geekswithblogs.net/akraus1/articles/64871.aspx

【讨论】:

  • 这听起来不错,但我希望用新的安装程序解决这个问题。也许我找到了一个解决方案,否则我会在你的路上解决这个问题。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-05
  • 2016-08-07
相关资源
最近更新 更多