假设您有一个名为programVersion
. 我们使用此变量在注册表上发布我们在 HKLM 中的应用程序版本。
我们有一些条件来检查我们的机器上是否安装了特定版本的另一个程序,检查此注册表值:
<Property Id="ANOTHER_APP_INSTALLED">
<RegistrySearch Id="AnotherAppInstalled" Root="HKLM"
Key="$(var.keyPathProgram)$(var.AnotherProgramVersion)"
Name="Path"
Type="raw" />
</Property>
但是现在我创建了 OTHER 程序的新版本,我想检查旧版本或新版本是否存在于我的 NEW 应用程序的注册表中。所以我需要像这样检查两个版本:
<Property Id="ANOTHER_APP_INSTALLED">
<RegistrySearch Id="AnotherAppInstalled" Root="HKLM"
Key="$(var.keyPathProgram)$(var.AnotherProgramVersion)"
Name="Path"
Type="raw" />
</Property>
<Property Id="ANOTHER_APPV11_INSTALLED">
<RegistrySearch Id="AnotherAppV11Installed" Root="HKLM"
Key="$(var.keyPathProgram)$(var.AnotherProgramVersion11)"
Name="Path"
Type="raw" />
</Property>
有没有办法在变量后面加上星号,它后面接受任何值?像这样的东西:
<Property Id="ANOTHER_APP_INSTALLED">
<RegistrySearch Id="AnotherAppInstalled" Root="HKLM"
Key="$(var.keyPathProgram)$(var.AnotherProgramVersion)*"
Name="Path"
Type="raw" />
</Property>
这是我检查是否安装了它们的方法:
<![CDATA[ ANOTHER_APP_INSTALLED or ANOTHER_APPV11_INSTALLED ]]>
回顾:
所以我在我的机器上安装了一个程序,它检查是否在任何版本中安装了另一个应用程序,而不是我自己的应用程序。我需要它来检查其他应用程序是否安装在任何可能的版本中。
编辑:我需要检查是否安装了 v1、v1.1、v1.2、v1.3...。但我需要让它们都成为可能的安装版本,而不仅仅是其中一个。我需要检查产品存在的每个版本。
我知道这不是 WiX 的常规行为,但我需要它表现得像那样。