0

在主要升级工作流程中,是否有任何方法可以查看/迁移从正在删除的安装到新安装的属性?

这应该无关紧要,但这是我的背景。我正在使用 MigrateFeatureStates 来防止用户在重大升级期间重新创建服务。我看到的问题是,如果用户为服务功能指定自定义文件夹位置,则升级失败,因为在文件安装到默认位置时服务仍使用自定义路径。

服务安装/控制

<ServiceInstall Id="MyServiceInstall" Name="MyService" DisplayName="MyService" Account="[user]" Password="[pass]" Type="ownProcess" Start="auto" ErrorControl="normal" />
<ServiceControl Id="MyServiceControl" Name="MyService" Wait="yes" Start="install" Stop="both" Remove="uninstall" />

安装顺序

<MigrateFeatureStates Sequence="1001" />
<RemoveExistingProducts Sequence="1020" />
<StopServices Sequence="1700" />
<DeleteServices Sequence="1750"><![CDATA[(NOT UPGRADINGPRODUCTCODE)]]></DeleteServices>
<InstallServices Sequence="5800"><![CDATA[NOT(MIGRATE)]]</InstallServices>
<StartServices Sequence="5900" />
4

1 回答 1

1

如果您从头开始,您会使用 WiX 记住属性模式,但如果第一个产品已经发布,那就太晚了。

如果安装文件夹保存在注册表中,您可以使用 WiX 注册表搜索来恢复它。否则,您可以使用 WiX 组件搜索。您将使用服务可执行文件的组件 ID,搜索将恢复其路径。您将在自定义操作中使用它来将安装文件夹设置为该位置。

如果您使用的是 WiX 主要升级元素,那么如果您正在升级,它会设置一个名为 WIX_UPGRADE_DETECTED 的属性,因此如果设置了该属性,您可以禁止浏览对话框。

于 2014-06-24T18:41:43.050 回答