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