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" />