Как мне условно установить файл с помощью WiX на основе целевого компьютера (32-разрядный или 64-разрядный)?

StackOverflow https://stackoverflow.com/questions/730534

  •  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 в файле для конкретной установки.Короче говоря, я не думаю, что существует простой способ создания установщиков для разных архитектур, поэтому вам придется использовать дополнительные утилиты.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top