1

我有一个大问题:

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

解决问题的尝试失败了:

- 使用 BeforeInstall 事件读出旧配置,保存到上下文参数并在 Afterinstall 事件中写入新配置。- BeforeInstall 读出新的配置(旧的被删除)。- 不要复制新的 Appconfig,而是复制一个具有不同名称的文件,例如包含新 appconfig 的 AppConfigUpdate.config。在安装后事件中,我使用 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 天,我真的需要你的帮助。我没有想法如何解决这个问题,也许你们中的任何人都遇到过类似的问题?

对不起,我的英语不好。此致

4

2 回答 2

2

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

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

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

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

于 2011-09-07T14:52:35.583 回答
0

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

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

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

于 2011-09-07T13:50:05.327 回答