Зачем вам добавлять пользовательские таблицы в MSI? - PullRequest
2 голосов
/ 01 февраля 2011

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

Ответы [ 2 ]

4 голосов
/ 01 февраля 2011

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

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

Zataoca: пользовательские действия должны основываться на данных .

Управляемые данными управляемые пользователем настраиваемые действия с DTF

2 голосов
/ 10 июня 2011

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

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

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

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

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

...