在升级期间手动迁移功能状态

Manually migrate feature states during upgrade

我们有一个产品,其功能树在不同版本之间发生了很大变化,因此 UpgradeVersion 元素上的 MigrateFeatures="yes" 选项似乎不起作用。

我将如何手动将旧功能转换为新功能?我是否需要自定义操作,如果需要,我该如何从那里执行此操作?

据我所知,功能树结构不相关 - 它与功能中的名称匹配 table,因此如果它们都匹配,您仍然可以进行一些迁移。请注意,它是名称,而不是标题,因此如果名称相同也可以,但 UI 中的标题不同。所以这取决于到底发生了什么变化,是只是布局还是许多 Name 值。

否则,您需要自定义操作来设置 ADDLOCAL 以设置已安装列表中的功能列表,您需要使用 MsiEnumFeatures 和 MsiQueryFeatureState 进行查询。或者代码可能位于外部启动器中,该启动器会查找已安装的功能,然后使用功能的 ADDLOCAL 命令行启动 MSI,大概不会提供功能对话框。我认为这是唯一的方法。