Как я могу заставить WiX вызывать метод в сборке .NET как часть процесса установки? - PullRequest
3 голосов
/ 11 октября 2010

Я перевожу некоторые существующие продукты для использования WiX 3.5 (я использую интеграцию Votive VS).Некоторые из элементов, которые я устанавливаю, должны быть зарегистрированы в сторонних фреймворках.Требование заключается в том, что я должен вызвать метод Register () в сборке .NET третьей стороны, чтобы сообщить ему о наличии устанавливаемых элементов.Он ожидает COM ProgID.

Я не могу понять, как заставить WiX сделать это.Я думал о создании двоичного пользовательского действия, но не могу найти способ передачи параметра (строки, содержащей ProgID) в это пользовательское действие.Я не хочу жестко кодировать это, потому что мне нужно, чтобы это был код многократного использования.Я не вижу способа сделать это декларативно, потому что функция Register () - это «черный ящик».

Боже, это крутая кривая обучения.Какой мой лучший подход здесь?

Ответы [ 2 ]

2 голосов
/ 06 мая 2011

Посмотрите на Deployment Tools Foundation (DTF) для WIX. Существует файл DTF.chm с установкой WIX с большим количеством информации.

Предполагается, что процесс установки похож на

  1. Настройка установки, ввод параметров / ProgID, проверка и т. Д.
  2. Начать фактическую установку файлов
  3. Методы регистрации звонков

Вам понадобятся два пользовательских действия (игнорируя откат и удаление)

  • SetupRegistration
  • DoRegistration

SetupRegistration должно быть немедленным настраиваемым действием, запускаемым либо из пользовательского интерфейса, либо в конце фазы установки. Он захватывает ProgID и любые другие необходимые данные, использует объект CustomActionData и назначает его свойству с именем «DoRegistration» ( Важно, имя свойства должно совпадать со вторым пользовательским действием )

DoRegistration - это отложенное настраиваемое действие, которое должно быть запланировано в InstallExecuteSequence, вероятно, после InstallFiles, но это зависит. Он извлекает свойство Session.CustomActionData и получает ProgID, а затем вызывает любой метод регистрации, который вам нужен.

0 голосов
/ 23 октября 2010

Я использую то, что вы описали.

Я использую для вызова CustomAction (события), когда это необходимо.Как и при нажатии на кнопку, вы можете вызвать метод, который будет работать для вас.

Вызов настраиваемого действия, например:

<Custom Action="ActionName" After="InstallFinalize">CONDITION = "1"</Custom>

Или вызов настраиваемого действия на основе определенной кнопкинажмите:

<CustomAction Id="TestConnection" BinaryKey="SetupCustomActions" DllEntry="TestConnection" Execute="immediate" Return="check" />
...