是否可以检测捆绑软件包中子msi软件包功能的安装状态?
我有这样的捆绑包:
<Chain>
<PackageGroupRef Id="ChildPackage"/>
<PackageGroupRef Id="SecondPackage"/>
</Chain>
我要实现的目标是根据SecondPackage
内部功能的状态来决定是否应安装ChildPackage
。
我尝试了如下所示的注册表项解决方案,但失败了。
<!-- Write RegistryKey within ChildPackage -->
<Feature Id="FeatureName" Title="FeatureName" Level="1" AllowAdvertise="no">
<RegistryKey Root="HKLM"
Key="Software\CompanyName\ProductName\FeatureName"
ForceCreateOnInstall="yes" ForceDeleteOnUninstall="no">
<RegistryValue Type="string" Name="Version" Value="$(var.VersionNumber)"/>
</RegistryKey>
</Feature>
<!-- Search the RegistryKey within Bundle -->
<util:RegistrySearch
Id='FeatureInstalled'
Variable="FeatureInstalled"
Result="exists"
Root="HKLM"
Key="SOFTWARE\CompanyName\ProductName\FeatureName\Version"/>
<MsiPackage
Id="SecondPackage"
SourceFile="SecondPackage.msi"
InstallCondition="FeatureInstalled">
</MsiPackage>
从日志中,我看到变量FeatureInstalled
在安装ChildPackage之前被设置为空,并且在此之后它再也没有机会被重新评估,因此SecondPackage的安装条件评估为False,所以它从未安装。
所以我的问题的第一部分是,是否有一种方法可以在链式软件包安装后安排RegistrySearch
评估?
如果不可能,是否还有另一种解决方案可以在子msi软件包中获取该功能的状态?