Как лучше всего определить пользовательское действие в WiX?

Указатель NULL - это тот, который указывает на никуда. Когда вы разыскиваете указатель p, вы говорите «дайте мне данные в месте, хранящемся в« p ». Когда p является нулевым указателем, местоположение, хранящееся в p, является nowhere, вы говорите «Дайте мне данные в месте« нигде ». Очевидно, он не может этого сделать, поэтому он выбрасывает NULL pointer exception.

В общем, это потому, что что-то не было правильно инициализировано.

13
задан Peter Mortensen 17 June 2013 в 19:25
поделиться

2 ответа

Пользовательские действия WiX являются замечательной моделью для следования. В этом случае Вы только объявляете, с CustomAction, незамедлительное принятие мер, запаздывающее действие и действие отката. Вы только планируете, с Custom, незамедлительное принятие мер, где незамедлительное принятие мер реализовано как код в собственном DLL.

Затем в незамедлительном принятии мер код , Вы звоните MsiDoAction для планирования отката и запаздывающих действий: поскольку они задерживаются, они записаны в сценарий в точке, которую Вы называете MsiDoAction, а не выполненный сразу. Необходимо будет звонить MsiSetProperty также для установки данных пользовательского действия.

Загрузка исходный код WiX и учатся как IISExtension работы, например. Действия WiX обычно анализируют пользовательскую таблицу и генерируют данные для свойства запаздывающего действия на основе той таблицы.

4
ответ дан 2 December 2019 в 01:32
поделиться

Если у Вас есть сложные пользовательские действия, которые должны поддерживать откат, Вы могли бы рассмотреть запись расширения Wix. Расширения обычно оказывают авторскую поддержку (т.е. новые XML-тэги, которые отображаются на записях таблицы MSI), плюс автоматическое планирование пользовательских действий.

Это - больше работы, чем просто запись пользовательского действия, но однажды Ваша АВАРИЯ достигают определенного уровня сложности, простота авторской разработки, которую обеспечивают расширения, может стоить того.

3
ответ дан 2 December 2019 в 01:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: