防止.NET配置文件在安装过程中被覆盖

问题描述:

我正在使用InstallShield 2010 Express来安装.NET WinForms应用程序。最新的InstallShield项目是一次重大升级,因此我使用升级路径部分允许从我的应用的早期版本进行升级。防止.NET配置文件在安装过程中被覆盖

问题是,在安装最新升级时,初始安装(写入Program Files \ MyCompany \ MyApp \ myapp.exe.config)期间所做的配置设置将被覆盖。这意味着用户必须再次完成所有的配置设置 - 这并不好。

在InstallShield项目中,myapp.exe.config设置为使用Windows Installer Versioning Rules。我甚至尝试设置myapp.exe.config的创建/ mod日期非常旧(1999年1月1日),以便它不应覆盖目标系统上的文件。

除此之外,安装程序工作正常。我怎样才能防止这个文件被覆盖?

Does Installsheild有一个“before_install”脚本部分吗?您可以复制现有的配置文件,并在安装完成后覆盖新的配置文件。

+0

是的,这是可能的,但我希望Windows安装程序会自己处理。在文档中指出: “日期 - 如果目标机器上已存在的文件的修改日期晚于该文件的创建日期,则该文件不会被覆盖。此规则可保护用户偏好文件不被删除在升级或重新安装期间“。 – 2009-07-31 02:42:54

+0

不太确定。 :(我在使用installshield的经验有限的情况下遇到了一些怪癖,也许是这样吗? – 2009-07-31 03:49:49

尝试使用ApplicationSettingsBase.Upgrade()或ApplicationSettingsBase.GetPreviousVersion()

http://msdn.microsoft.com/en-us/library/system.configuration.applicationsettingsbase.upgrade.aspx

设置条件在isxmlinstall顺序与 “正确安装和打补丁” isxmlinstall是升级XML将不会发射功能升级时。

+1

你可以重新说出这个答案吗?你很难说没有标点符号。 – 2012-11-30 18:49:02

检查安装程序中.config文件的属性(如果其标记为项并且用户自安装以来已对其进行了修改,则系统将使用MSI替换它认为它被损坏并且需要修理。