Как использовать Wix MSI для выборочной установки MSI - PullRequest
0 голосов
/ 13 января 2020

Как я могу использовать Wix для проверки настроек реестра и в зависимости от этого значения выбрать правильный MSI из 2 MSI для установки? Запись в реестре обозначает x86 или x64. Если x64, то установщик Wix должен установить 64-битную Msi. Если x86, он должен установить 32-битную версию.

Я пробовал это, но я просто получаю ошибку при установке, которая говорит

"Этот установочный пакет не может быть открыт. Обратитесь к поставщику, чтобы проверить что это действительный Windows установочный пакет. "

Оба" цепочечных "MSI работают правильно.

Это файл Bundle.wxs и является единственным файлом в проекте Wix. .

<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
     xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">

  <Bundle Name="SingleInstaller" Version="1.0.0.0" Manufacturer="Microsoft" UpgradeCode="935daa4e-9b25-4fef-a4a1-0cf6af71a939">
    <BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.RtfLicense"/>

    <!--Search the registry entries for each because it may be under Wow6432-->
    <util:RegistrySearch Root="HKLM" Key="SOFTWARE\SomeEntry\" Value="Bitness" Variable="MyRegEntry" Win64="no" />
    <util:RegistrySearch Root="HKLM" Key="SOFTWARE\SomeEntry\" Value="Bitness" Variable="MyRegEntry" Win64="yes" />

    <Chain>
      <!-- TODO: Define the list of chained packages. -->
      <!--<MsiPackage SourceFile="D:\Dev\Cwds_Install\bin\x86\Release\JMPS-CC-CWDS3.0.0.0.msi" InstallCondition="Jmps32Bit = x86" Id="Cwds32"/>-->
      <MsiPackage SourceFile="D:MyProgram.msi" InstallCondition="MyRegEntry = x86" Id="MyProgram32" />
      <MsiPackage SourceFile="D:MyProgram.msi" InstallCondition="MyRegEntry = x64" Id="MyProgram64" />
        </Chain>
    </Bundle>
</Wix>
...