Запустите x86 или x64 MSI из загрузчика MSBuild

Итак, у меня есть MSI на основе WiX, который устанавливает несколько драйверов устройств, и поэтому у меня есть версии x64 и x86. Пакет также имеет зависимость от .NET 3.5, поэтому я создаю загрузчик для этого, а затем запускаю MSI. Мой вопрос: знает ли кто-нибудь способ создания загрузчика, который будет определять платформу, на которой он работает, и запускать соответствующий MSI. Я искал такое решение и пока ничего не нашел. Спасибо!


person MattB    schedule 02.10.2009    source источник
comment
хорошо, я когда-то читал, что MSI зависят от платформы по дизайну   -  person zvolkov    schedule 02.10.2009
comment
Верно, поэтому есть два отдельных MSI. Однако, скажем, я распространяю это на компакт-диске и у меня есть autorun.inf, который запускает мой загрузчик setup.exe - в настоящее время я могу указать только на один .msi, который будет запущен загрузчиком после того, как он закончит установку предварительных требований.   -  person MattB    schedule 02.10.2009


Ответы (3)


К сожалению, для установщика Windows требуется отдельный пакет MSI для x86 и x64.

В WiX v3.6+ Burn предоставляет функциональность для «объединения» двух пакетов вместе в одну установку (управляемую исполняемым файлом Burn). Вы можете сделать это с помощью файла .wxs, который будет выглядеть примерно так:

<Bundle ...>
  <BootstrapperApplicationRef Id='WixStandardBootstrapperApplication.RtfLicense' />

  <Chain>
    <MsiPackage InstallCondition='NOT VersionNT64' SourceFile='path\to\x86.msi' />
    <MsiPackage InstallCondition='VersionNT64' SourceFile='path\to\x64.msi' />
  </Chain>
</Bundle>

Это только поверхностное знакомство со всем, что может сделать Burn, но оно показывает, как объединить два архитектурных пакета в один процесс установки.

person Rob Mensching    schedule 17.03.2013

Если вы устанавливаете .Net перед запуском msi, вы также можете включить исполняемый файл, написанный на С#, который определяет вашу платформу, а затем передает ответ вашему загрузчику.

Я использовал исполняемый файл, который обнаружил платформу, создал регистрационный ключ, который я проверял, чтобы решить, что запускать.

пример C#

person Gabriel    schedule 09.10.2009

Вероятно, вам нужно использовать dotNetInstaller: вы можете создавать различные конфигурации "настройки", которые будут запускаться, только если правильное сочетание ОС, платформы и языка. Вы также можете встроить любые файлы MSI, предварительные условия и т. д. в исполняемый файл установки, чтобы у пользователей был только один файл для загрузки/запуска.

person BCran    schedule 03.09.2010