【问题标题】:Prevent .NET config file being overwritten during install防止在安装过程中覆盖 .NET 配置文件
【发布时间】:2010-11-15 15:13:51
【问题描述】:

我正在使用 InstallShield 2010 Express 安装 .NET WinForms 应用程序。最新的 InstallShield 项目是一次重大升级,因此我使用了升级路径部分来允许从我的应用程序的早期版本进行升级。

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

在 InstallShield 项目中,myapp.exe.config 设置为使用 Windows Installer Versioning Rules。我什至尝试将 myapp.exe.config 的创建/修改日期设置得很旧(1999 年 1 月 1 日),这样它就不会覆盖目标系统上的文件。

除此之外,安装程序工作正常。如何防止此文件被覆盖?

【问题讨论】:

    标签: .net windows-installer app-config installshield


    【解决方案1】:

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

    【讨论】:

    • 是的,这是可能的,但我希望 Windows Installer 能够自行处理。在文档中它指出:“日期 - 如果目标计算机上已经存在的文件的修改日期晚于该文件的创建日期,则该文件不会被覆盖。此规则可保护用户首选项文件在升级或重新安装。”
    • 不太确定。 :( 在我有限的 installshield 经验中,我遇到了一些怪癖。也许就是这样?
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      在 isxmlinstall 中按“未安装且未修补”的顺序设置条件 isxmlinstall 是升级的功能 xml 升级时不会启动。

      【讨论】:

      • 能否请您改写这个答案?如果没有标点符号,您要表达的内容非常不清楚。
      【解决方案4】:

      检查安装程序中 .config 文件的属性,如果它被标记为 key 项并且用户在安装后对其进行了修改,系统将使用 MSI 替换它,相信它损坏并需要维修。

      【讨论】:

      • MSI 比较创建日期和最后修改日期以确定是否应覆盖非版本控制文件。根据 InstallShield 在安装期间对 xml 文件所做的操作,您可能会遇到一个大问题 - 如果在放置后对其进行编辑,该文件将永远不会被覆盖。
      猜你喜欢
      • 1970-01-01
      • 2010-09-22
      • 1970-01-01
      • 2015-08-26
      • 2014-05-26
      • 1970-01-01
      • 2022-11-17
      • 1970-01-01
      • 2011-01-27
      相关资源
      最近更新 更多