условная установка на основе состояния функции дочернего MSI-пакета - PullRequest
0 голосов
/ 01 июля 2019

Можно ли определить состояние установки функции дочернего 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-пакете?

...