首页 > 解决方案 > 更新期间维护的 C# 应用程序用户设置

问题描述

我有一个 C# 应用程序,当前将用户设置/配置存储在单独的 xml 文件中。我的应用程序使用 wix 安装程序,并且我想知道如果用户在安装应用程序的较新版本时没有先删除旧版本,是否有办法保留 xml 文件。xml 文件存储在 CommonAppData 文件夹中,如果卸载应用程序,则应将其删除。

备份问题 - 有没有比我目前的方法更好的方法?

更新

我已经实现了以下代码:

    <CustomAction Id="Cleanup_Files" Directory="CompanyFolder" ExeCommand="cmd /C RD 
        &quot;[CommonFolder]&quot; /s /q" Execute="deferred" Return="ignore" HideTarget="no" 
       Impersonate="no" />
    <InstallExecuteSequence>
      <Custom Action="Cleanup_Files" Before="RemoveFiles" >
        Installed AND REMOVE="ALL" AND NOT UPGRADINGPRODUCTCODE
      </Custom>
    </InstallExecuteSequence>

这会在卸载时根据需要删除 CommonFolder 目录,但在升级时仍会删除该目录。实现这一目标需要哪些改变?

标签: c#configurationwixinstallationsettings

解决方案


最简单的做法是:不要通过设置安装此 XML 文件,而是让应用程序创建它(如果它不存在)。这样,更新将不会触及文件。在这种情况下,还可以从旧(或新)版本迁移设置。

但是,该文件也将在卸载时保留。如果在这种情况下需要删除它,您可以通过具有如下条件的自定义操作来执行此操作Installed AND REMOVE="ALL" AND NOT UPGRADINGPRODUCTCODE


推荐阅读