【发布时间】: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