更新期间维护的C#应用​​程序用户设置

时间:2018-11-19 11:24:21

标签: c# configuration wix installer settings

我有一个C#应用程序,当前将用户设置/配置存储在单独的xml文件中。我的应用程序使用wix安装程序和id来了解是否存在一种方法来保存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目录,但在升级时仍会删除该目录。要实现此目标需要进行哪些更改?

2 个答案:

答案 0 :(得分:0)

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

但是,该文件也将保留在卸载状态。如果需要在这种情况下将其删除,则可以通过条件为Installed AND REMOVE="ALL" AND NOT UPGRADINGPRODUCTCODE

的自定义操作来执行此操作

答案 1 :(得分:0)

对我来说,解决方案是遵循Klaus的建议,但对我的product.wxs文件进行了一些其他更改。我必须在MajorUpgrade部分添加“ AllowSameVersionUpgrades =“ yes””。

    <MajorUpgrade AllowSameVersionUpgrades="yes" DowngradeErrorMessage="A newer version of 
    [ProductName] is already installed." />

感谢克劳斯的所有建议!