c# - 更新期间维护的 C# 应用程序用户设置
问题描述
我有一个 C# 应用程序,当前将用户设置/配置存储在单独的 xml 文件中。我的应用程序使用 wix 安装程序,并且我想知道如果用户在安装应用程序的较新版本时没有先删除旧版本,是否有办法保留 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 目录,但在升级时仍会删除该目录。实现这一目标需要哪些改变?
解决方案
最简单的做法是:不要通过设置安装此 XML 文件,而是让应用程序创建它(如果它不存在)。这样,更新将不会触及文件。在这种情况下,还可以从旧(或新)版本迁移设置。
但是,该文件也将在卸载时保留。如果在这种情况下需要删除它,您可以通过具有如下条件的自定义操作来执行此操作Installed AND REMOVE="ALL" AND NOT UPGRADINGPRODUCTCODE
推荐阅读
- python-sphinx - 在 reStructuredText 表列中添加一些空格
- haskell - 函数 rem1 :: Eq a => [a] -> a -> [a],从第一个参数中删除第二个参数中提到的 elem
- flutter - 如何配置传感器(加速度计或陀螺仪)以在用户摇晃或旋转手机时执行某些操作?
- sql-server - 无法使用 SQL Server 代理 Powershell CmdExec 步骤处理 Power BI Premium 模型中的分区
- reactjs - 在 React 中,根据初始获取的结果获取数据
- php - number_format() 宽度为 100%
- python-3.x - Matplotlib xticks 隐藏图形光标信息
- laravel - 如何在 Laravel+Vue 应用中使用本地化
- python - 如何以类似于 Python 和 Pyenv 的方式从 shell 管理多个版本的 R
- android - Xamarin.Android 上是否有任何应用事件?