2011-02-01 1 views
2

Мне просто интересно, что использовать для этой функции, поскольку MSIEXEC, вероятно, даже не знал бы, что это есть. Есть ли какой-нибудь код пользовательских действий, который мог бы получить к ним доступ, возможно?Зачем добавлять пользовательские таблицы в MSI?

ответ

4

Суть заключается в том, чтобы написать свои пользовательские действия, чтобы вести себя так же, как стандартные действия. Действие (действия) и таблица (таблицы) определяют шаблон, в котором действие выполняет работу, а таблица (таблицы) определяет выполняемую работу. Это является основой декларативного программирования, управляемого данными. Противоположность заключается в том, что вы плотно соединяете их вместе в императивном подходе.

Предлагаемый материал для чтения:

Zataoca: Custom actions should be data driven.

Data Driven Managed Custom Actions made easy with DTF

+0

Ницца. И в C# тоже. – Patrick

2

Как Крис Painter утверждает MSI файлы прозрачны в том смысле, что вы можете увидеть, что будет происходить во время установки на основе содержимого таблиц MSI. This is one of the key benefits of MSI that you can find described here. Пользовательские таблицы расширят эту встроенную прозрачность, включив в нее пользовательские действия, указанные в действиях, указанных в них. Они также позволяют повторно использовать код пользовательских действий, поскольку действия не жестко закодированы, но указаны в таблицах.

Во время работы в крупной корпорации, я написал пользовательский DLL действий, способных сделать несколько нестандартных задач, таких как MSI создавать локальных пользователей и групп, создают акций и набор пользовательских разрешений среди других вещей. Определив, что должно быть сделано в пользовательских таблицах, мы могли бы выполнить то, что нам нужно было сделать без жесткого кодирования в пользовательских действиях. После создания пользовательских действий для создания пользователя можно создать любого пользователя, указанного в пользовательской таблице.

Пользовательские таблицы определены в _Validation table, чтобы установить допустимые диапазоны значений и типы для каждого столбца в таблице. Также можно подключить пользовательские правила проверки ICE для обнаружения ошибок в пользовательских таблицах. Пользовательские действия, требующие разрешения каталогов, могут добавить внешний ключ из пользовательской таблицы в таблицу Directory, чтобы иметь возможность разрешить каталог установки. Вы также можете добавить внешние ключи к другим таблицам, включая другие пользовательские таблицы.

Вкратце пользовательские таблицы используются пользовательскими действиями и являются чрезвычайно эффективными, когда используются для обеспечения гибкости и повторного использования ваших пользовательских действий. Однако реализация является основным усилием. The WiX toolkit использует несколько пользовательских таблиц для выполнения нестандартных задач MSI, таких как установки IIS. Их исходный код является открытым исходным кодом и покажет вам, как писать пользовательские действия, которые подаются пользовательскими таблицами. Это включает в себя довольно много волосатых технологий MSI, таких как последовательность и передача значений от клиентского к серверному процессу (повышенные, отложенные пользовательские действия в режиме), но все это должно быть возможно «заимствовать» у WiX - или еще лучше, использовать собственный WiX готовые пользовательские действия.

Если у вас есть навыки для создания этого, я думаю, было бы очень полезно разделить ваше творение с сообществом WiS. Это также даст вам множество талантливых разработчиков, которые помогут вам отслеживать любые ошибки в вашем коде и реализации.

Смежные вопросы