Я лично рекомендую использовать AppCmd.exe (первая статья Мэттьюурлоу), потому что вам не нужно рассчитывать на устанавливаемые устаревшие компоненты управления или рисковать модификацией XML конфигурации вручную.
Если вам не нравится AppCmd, у Майка Володарского есть отличная статья на Начало работы с AppCmd.exe , а справочник по настройке IIS Microsoft превосходен, предлагая пользовательский интерфейс, код и примеры AppCmd для изменения каждого из элементов конфигурации (например, Пулы приложений ). Пакет администрирования IIS7 также включает в себя редактор конфигурации, который позволяет создавать сценарии AppCmd из любой существующей конфигурации.
Чтобы интегрировать AppCmd в WiX, вам нужно создать и запланировать два пользовательских действия для каждой команды. В руководстве по WiX v3 содержится общая информация, документирующая эту процедуру , и ниже приведен конкретный пример.
Сначала вам нужно настроить немедленное действие для сохранения командной строки в свойстве:
<CustomAction
Id="CreateAppPool_Cmd"
Property="CreateAppPool"
Execute="immediate"
Value=""[WindowsFolder]system32\inetsrv\APPCMD.EXE" add apppool /name:"[APP_POOL_NAME]"" />
Далее вы устанавливаете отложенное действие, которое ссылается на это свойство:
<CustomAction
Id="CreateAppPool"
BinaryKey="WixCA"
DllEntry="CAQuietExec"
Execute="deferred"
Return="ignore"
Impersonate="no"/>
И, наконец, вам нужно запланировать это. Непосредственное действие, которое устанавливает свойства, похоже, хорошо работает после InstallFinalize, а отложенное действие работает после InstallFiles. Я еще не дошел до выяснения действий по откату.
MapGuide Open Source широко использует этот метод; вы можете увидеть расписание CA в нашем файле MapGuide.wxs , а определение CA в нашем файле IIS7.wxs .