Добавление разрешений SQL для только что созданного удостоверения пула приложений в WiX - PullRequest
6 голосов
/ 05 марта 2011

У меня есть пакет WiX, в котором есть один компонент, создающий пул приложений IIS 7, который имеет идентификатор ApplicationPoolIdentity (IIS AppPool \ AppPoolName). Затем у меня есть еще один компонент для добавления разрешений в базу данных SQL Server для этого удостоверения (я использую расширение SqlString).

Когда SQL запускается для добавления разрешений, я получаю следующую ошибку:

Пользователь или группа Windows NT 'IIS AppPool \ AppPoolName 'не найден.

Я предполагаю, что это происходит из-за того, что в IIS происходит транзакция, а пул приложений еще не зафиксирован.

У кого-нибудь есть лучший подход к этой проблеме?

Спасибо!

Ответы [ 2 ]

2 голосов
/ 24 марта 2011

Насколько я понимаю, как работает расширение WiX IIS, оно создает резервную копию метабазы ​​перед применением каких-либо изменений.Затем в отложенной последовательности он выполняет все действия, которые вы ему указали.Если возникает ошибка, действие отката просто восстанавливает предыдущее состояние из резервной копии.В противном случае, если все в порядке, действия коммита просто сбрасывают моментальный снимок резервной копии.

Итак, учитывая это, я не думаю, что вы догадались, что это правильно.Должно быть возможно делать то, что вы хотите.Я подозреваю, что проблема в последовательности действий.Убедитесь, что сначала выполняются действия IIS, затем идет обработка SQL, а разрешения - последними.Таким образом, сначала вы создаете AppPool, затем выполняете SQL-операции и, наконец, применяете необходимые разрешения.Ну, я могу ошибаться, но вы должны найти правильную последовательность с помощью метода проб и ошибок.

И практическое правило: всегда генерируйте подробный журнал.Он содержит все.Серьезно, это лучшее, что мне нравится в установщике Windows: что бы ни случилось, вы найдете это в подробном журнале.Удачи!

1 голос
/ 08 марта 2011

Почему бы не создать настраиваемое действие, которое настраивает IIS для вас? Вы можете использовать простое пользовательское действие, которое просто выполняет набор команд appcmd ИЛИ создать управляемое (C #) настраиваемое действие, которое программно использует Microsoft.Web.Administration.ServerManager для настройки IIS7.

...