在 WIX 迁移中管理用户配置
Posted
技术标签:
【中文标题】在 WIX 迁移中管理用户配置【英文标题】:Managing User config in WIX migrations 【发布时间】:2020-06-10 03:54:02 【问题描述】:我们正在制作一个主要是 Windows 服务 EXE 的项目。
我们正在使用 WIX(使用 heat
)创建安装程序,该安装程序会创建相关文件并将 EXE 注册到 Windows 服务。
我们已经到了实现安装程序升级逻辑的地步,这主要是 JustWorks(TM) 通过在.wxs
文件中设置Product
标记的Version
属性。
我看不出如何管理的一个问题是该工具的配置文件。
该工具有各种配置设置,可以在工具内进行修改。 我们正在使用 ASP.NET,它内置了设置/配置管理,并且被更改的配置设置被声明为“用户”设置。当我们运行保存配置更改时,它会创建一个辅助配置文件,它会覆盖主配置文件中的默认设置。
主配置文件位于<installRoot>\MyCustomService.exe.config
,辅助配置文件位于<complicated\Path>\vX.Y.Z\user.config
。
其中X.Y.Z
是AssemblyInfo
版本号,它与WIX Version
号保持同步。
当我们安装新版本时,该工具开始寻找 user.config 的新路径......但找不到它。因此,从功能上讲,安装新版本会重置用户的所有配置 :( .
获取 WIX 升级安装以维护现有配置的适当方法是什么?
【问题讨论】:
【参考方案1】:ASP.NET 配置支持使用.Upgrade()
方法将用户设置从一个版本升级到下一个版本。你最好使用它而不是在安装程序中管理它。
这个问题有关于如何管理的详细信息:How do you keep user.config settings across different assembly versions in .net?
但核心解决方案是:
if (Settings.Default.UpgradeRequired)
Settings.Default.Upgrade();
Settings.Default.UpgradeRequired = false;
Settings.Default.Save();
已创建 UpdateRequired
作为仅用于管理此过程的用户属性
【讨论】:
以上是关于在 WIX 迁移中管理用户配置的主要内容,如果未能解决你的问题,请参考以下文章
Wix 安装程序中的文件夹(在安装期间创建)对所有用户不可见
域内计算机迁移到其他域,自动脚本运行,继承原用户配置文件管理员权限不变
PC迁移与管理上海道宁为每个用户和每个 PC 传输和迁移场景提供解决方案——PCmover