在安装程序主要升级中迁移属性

时间:2014-06-24 17:52:32

标签: wix windows-installer wix3.8 major-upgrade

有没有办法在主要升级工作流程中查看/迁移正在删除的安装中的属性到新安装?

这不应该太重要,但这是我的背景。我使用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" />

1 个答案:

答案 0 :(得分:1)

如果您是从头开始,那么您将使用WiX记忆属性模式,但如果第一个产品已发货,则为时已晚。

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

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