Как использовать CustomAction в WIX Bundle?
Чтобы дать вам представление - у меня есть 4 MSI от нашего поставщика, и это должно быть на серверах нашей компании (мы рассматриваем около 3500 серверов). На данный момент мои коллеги управляют этим с помощью скриптов vbs, ps1. Но проблема со сценарием в том, что каждый раз, когда приходит обновление, мы должны беспокоиться об удалении существующего пакета перед запуском нового и тонны жесткого кодирования.
Я хочу автоматизировать весь процесс (с очень меньшим количеством жесткого кодирования), настроив сценарий WIX для упаковки всех 4 MSI вместе. Я прочитал о пакете WIX и использовал его для создания единого MSI. Но теперь есть много переменных, которые нужно передать 4 MSI, поэтому я подумал об использовании пользовательских действий для установки этих переменных в зависимости от среды / машины, где работает MSI. Но я не могу сделать пользовательские действия для работы? Я что-то пропустил?
Немного погуглил, и я увидел что-то вроде CustomActions в Bundle? кто-то может подтвердить?
Также, если нет CA, какие у меня варианты? Как я могу манипулировать переменными для передачи в 4 MSI? Большинство из них должны быть установлены в зависимости от того, на какой машине они запущены (например, путь установки, идентификаторы пользователей, идентификаторы пула приложений и т. Д.).
2 ответа
На мой взгляд, у вас есть три варианта:
В зависимости от того, какая информация вам нужна, вы можете использовать WixUtilExtension для выполнения простых задач, таких как чтение разделов реестра и поиск файлов, которые затем вы можете передать в свои установочные пакеты в качестве свойств.
Реализуйте пользовательские действия в отдельных установочных пакетах (а не в комплекте).
Напишите свое собственное приложение начальной загрузки, чтобы определить все свойства, которые нужно установить, а затем передайте их установочным пакетам. Это сложнее, чем #1 и #2, но, если вас интересуют, вам следует начать со следующих ссылок: знакомство с управляемыми приложениями начальной загрузки и написание wpf wix installer
Существует четвертый вариант, полезный легкий хак, идентифицированный Виджаем Котечей (см. http://vijayskotecha.blogspot.com/2013/07/wix-bootstrapper-custom-action.html),...
По сути, построить <ExePackage>
вокруг сквозного.bat или.cmd командного файла. Пакетный / командный файл содержит одну строку%*
'который повторно выполняет все аргументы командной строки как команду первого класса.
Таким образом:
<ExePackage ... SourceFile="SourcePath\WixCustomAction.cmd"
InstallCommand="my_custom_action.exe my_custom_parameters" />
<ExePackage ... SourceFile="SourcePath\WixCustomAction.cmd"
InstallCommand="my_next_action.exe my_next_parameters" />
куда WixCustomAction.cmd
это файл, содержащий только%*
".
Эти <ExePackages>
может быть помещен в <Bundle><Chain>
последовательно по мере необходимости, используя разные InstallCommand
по мере необходимости.