Итак, у меня есть MSI на основе WiX, который устанавливает несколько драйверов устройств, и поэтому у меня есть версии x64 и x86. Пакет также имеет зависимость от .NET 3.5, поэтому я создаю загрузчик для этого, а затем запускаю MSI. Мой вопрос: знает ли кто-нибудь способ создания загрузчика, который будет определять платформу, на которой он работает, и запускать соответствующий MSI. Я искал такое решение и пока ничего не нашел. Спасибо!
Запустите x86 или x64 MSI из загрузчика MSBuild
Ответы (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, но оно показывает, как объединить два архитектурных пакета в один процесс установки.
Если вы устанавливаете .Net перед запуском msi, вы также можете включить исполняемый файл, написанный на С#, который определяет вашу платформу, а затем передает ответ вашему загрузчику.
Я использовал исполняемый файл, который обнаружил платформу, создал регистрационный ключ, который я проверял, чтобы решить, что запускать.
Вероятно, вам нужно использовать dotNetInstaller: вы можете создавать различные конфигурации "настройки", которые будут запускаться, только если правильное сочетание ОС, платформы и языка. Вы также можете встроить любые файлы MSI, предварительные условия и т. д. в исполняемый файл установки, чтобы у пользователей был только один файл для загрузки/запуска.