Как мне условно установить файл с помощью WiX на основе целевого компьютера (32-разрядный или 64-разрядный)?
-
06-09-2019 - |
Вопрос
У меня есть файл, который имеет 32-битную версию и 64-битную версию.Если я устанавливаю свое приложение на 32-разрядный компьютер, я хочу, чтобы была установлена 32-разрядная версия файла.Аналогично, 64-разрядная версия должна быть установлена, если установка выполняется на 64-разрядной машине.Как мне проверить, на каком типе компьютера запускается установщик с помощью WiX?
Пожалуйста, никаких однострочных ответов.Я ищу конкретные теги WiX и куда их поместить в моем скрипте WiX.
Решение
Ты мог бы вероятно просто выполните два отдельных компонента, используя условия
VersionNT64
и
Not VersionNT64
Но правильный способ - скомпилировать отдельные установщики для 32- и 64-разрядных ОС, и 64-разрядные компоненты также должны быть помечены как таковые (с Win64="yes"
) - Я не знаю, возможно ли вообще пометить установочный пакет Windows как предназначенный как для Intel, так и для x64.Единственный раз, когда я когда-либо выполнял установку со смешанной архитектурой, - это с помощью NSIS, все мои установщики WiX имеют отдельные установщики для каждой архитектуры.
Другие советы
Правильный способ сделать это - скомпилировать две настройки, одну для 32 (x86) и одну для 64 (amd64).Затем вы упаковываете эти два msi в один msi и запускаете соответствующий msi во время выполнения.
Вы могли бы создать базовый файл wxs, используя переменные среды или препроцессора, и заполнить необходимые атрибуты перед компиляцией.Другим вариантом было бы запустить скрипт перед сборкой, который включает в себя различные идентификаторы GUID в файле для конкретной установки.Короче говоря, я не думаю, что существует простой способ создания установщиков для разных архитектур, поэтому вам придется использовать дополнительные утилиты.