gpt4 book ai didi

installation - 如何在 Windows 包之间创建依赖关系

转载 作者:行者123 更新时间:2023-12-02 00:28:19 26 4
gpt4 key购买 nike

我们正在使用 WiX 为我们的产品创建两个包。包 A 包括作为包 B 的先决条件的模块和其他组件。我想防止在安装包 B 时卸载包 A。

你能推荐一些技术吗?

(我尝试使用 UpgradeVersion/OnlyDetect 设置属性以及启动条件,但发现 FindRelatedProducts 在卸载过程中被跳过。)

@Cosmin 有一个很好的方法。我所做的是向包含包 A 的 UpgradeCode 的包 B 添加一个注册表值(认为这将允许在将来需要时打破依赖关系。)

 <Component Id="RegistryInfo" Guid="*" Win64="$(var.Win64YesNo)">
<RegistryKey Id="CurrentVersion" Root="HKLM" Key="SOFTWARE\MYCO\PACKAGE_B\CurrentVersion" Action="create">
<RegistryValue Name="ProductVersion" Value="[ProductVersion]" Type="string" />
<RegistryValue Name="PackageAUpgradeCode" Value="$(var.PackageAUpgradeCode)" Type="string" />
</RegistryKey>
</Component>
然后包 A 在卸载期间检查“依赖项”。

<Property Id="PACKAGE_B_DEPENDS_ON">
<RegistrySearch Id="PackageAUpgradeCode" Root="HKLM" Key="SOFTWARE\MYCO\PACKAGE_B\CurrentVersion" Name="PackageAUpgradeCode" Type="raw" />
</Property>

<Condition Message='Package A is installed and requires this package.'>
not REMOVE = "ALL" or not PACKAGE_B_DEPENDS_ON = "$(var.PackageAUpgradeCode)"
</Condition>

最佳答案

一个解决方案是使用注册表项和搜索:

  • 每个包都会在注册表中写入一些信息,例如安装路径和产品版本
  • 每个包使用 registry search检测到其他安装程序
  • 您使用搜索属性来设置 error custom action

  • 如果您不喜欢使用注册表,您还可以使用文件搜索来查找已安装的文件。

    请注意,FindRelatedProducts 会检测同一产品的较旧或较新版本。 Windows Installer 不支持链接两个包。

    此外,在安装过程中通常会跳过启动条件。这就是为什么错误自定义操作是一种好方法的原因。

    关于installation - 如何在 Windows 包之间创建依赖关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7936869/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com