在 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.ZAssemblyInfo 版本号,它与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

实战:基于 Spring 的应用配置如何迁移至阿里云应用配置管理 ACM

安装可以由非管理员用户启动的 Windows 服务

Exchange Server 2016管理系列课件07.用户在不同数据库的迁移