我有一个C#应用程序,当前将用户设置/配置存储在单独的xml文件中。我的应用程序使用wix安装程序和id来了解是否存在一种方法来保存xml文件,如果用户在安装时未先删除旧版本就安装了该应用程序的新版本。 xml文件存储在CommonAppData文件夹中,如果卸载了应用程序,则应将其删除。
备份问题-是否有比当前方法更好的方法?
更新
我已经实现了以下代码:
<CustomAction Id="Cleanup_Files" Directory="CompanyFolder" ExeCommand="cmd /C RD
"[CommonFolder]" /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目录,但在升级时仍会删除该目录。要实现此目标需要进行哪些更改?
答案 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." />
感谢克劳斯的所有建议!