WiX запускает загрузку x86 и x64 msi в один загрузочный загрузчик без UI

У меня есть x64 и x86 версии моего установщика .msi и хотят отправить один исполняемый файл, который просто проверяет архитектуру машины и запускает MSI x86/x64. MSI в основном идентичны, они устанавливают те же файлы AnyCPU, которые я собираю в общий .cab файл, чтобы не удваивать размер установщика.

До сих пор я пробовал WiX Burn, который выводит графический интерфейс, который мне не нужен (я просто хочу использовать графический интерфейс MSI), и я попытался отключить графический интерфейс записи через флаг /silent - это распространяет этот флаг для MSI, поэтому он отключает весь графический интерфейс для MSI (не то, что я хочу).

Я думаю, что я прав, когда говорю , что нет версии No-GUI по умолчанию для Burn bootprapper, и для ее создания вы должны сами отредактировать исходный код? Это звучит как огромная пропавшая функция?

Я также попробовал DotNetInstaller, у которого есть собственный набор проблем с запутанным пользовательским интерфейсом. Я также попробовал setupbld, который не поддерживает MSI с внешней кабиной.

Ответ 1

Для обнаружения архитектуры вы можете использовать атрибут InstallCondition в элементе MsiPackage.

Попробуем просто:

<MsiPackage SourceFile="..\Example\bin\Release\x86\example.msi" Compressed="no" InstallCondition="NOT VersionNT64" />
<MsiPackage SourceFile="..\Example\bin\Release\x64\example.msi" Compressed="no" InstallCondition="VersionNT64" />

Источники: http://wix.sourceforge.net/manual-wix3/wix_xsd_msipackage.htm

Ответ 2

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

Wix Burn поддерживает NO-GUI или тихий режим, передавая параметр командной строки "-q".

Наряду с этим он поддерживает следующие другие аргументы:

wixstdba поддерживает только "стандартные коммутаторы пакетов":

-q, -quiet, -s, -silent = silent install 
-passive = progress bar only install 
-norestart = suppress any restarts 
-forcerestart = restart no matter what (I don't know why this is still around) 
-promptrestart = prompt if a restart is required (default) 
-layout = create a local image of the bootstrapper (i.e. download files so they can be burned to DVD) 
-l, -log = log to a specific file (default is controled by bundle developer) 
-uninstall = uninstall 
-repair = repair (or install if not installed) 
-package,-update = install (default if no -uninstall or -repair) 

Введите ваше имя пользователя wixburnexename/? Чтобы получить информацию о вашей машине.

Ответ 3

Вы можете использовать пользовательские действия и записать встроенные переменные, чтобы проверить, работаете ли вы на X86 или x64. Исходя из этого, вы можете выполнить/упорядочить список действий.

<InstallExecuteSequence>
   <Custom Action="Windows32bitInstall" After="InstallFiles">NOT VersionNT64</Custom>
   <Custom Action ="Windows64bitInstall" After="InstallFiles" >VersionNT64</Custom>
   <Custom Action="InstallHelp" After="Windows64bitInstall">NOT Installed</Custom>
</InstallExecuteSequence>

Это будет выполняться с одинаковой высотой.

<CustomAction Id="InstallHelp" Directory="ProgramFilesFolder"
          Execute="deferred" Impersonate="no" Return="ignore"
          ExeCommand="[HELPDIR]\help.exe /log" />