WiX: таинственные и трудно диагностируемые ошибки проверки ICE при сборке сервера сборки - PullRequest
11 голосов
/ 27 сентября 2010

Я пытаюсь интегрировать WiX в мое решение для автоматической сборки, используя TFS 2010, работающий на Windows Server 2008 R2. Все казалось очень простым, и тогда я получаю это:

light.exe: Ошибка при выполнении действия ICE «ICE01». Наиболее распространенной причиной такого рода сбоев ICE является неправильно зарегистрированный механизм сценариев. Смотрите http://wix.sourceforge.net/faq.html#Error217 для деталей и как решить эту проблему. Регистратор внешних сообщений интерфейса не ожидал следующий формат строки: «Не удалось получить доступ к службе установщика Windows. Это может произойти, если установщик Windows установлен неправильно. Обратитесь за помощью в службу поддержки.».

Странно. Но эй! Они предоставили ссылку. Это должно помочь, верно?

Ошибка LGHT0217
В WiX v3 Light автоматически запускает проверку - оценщики внутренней согласованности установщика Windows (ICE) - после каждой успешной сборки. Валидация - отличный способ отследить распространенные ошибки разработки, которые могут привести к проблемам со службой, поэтому теперь она запускается по умолчанию. К сожалению, в Windows Vista и Windows Server 2008 возникает общая проблема, которая может привести к сбою ICE. Подробнее о причине и способах ее устранения см. В блоге Хита Стюарта и WebLog Аарона Стебнера.

Совсем нет. Эти посты просто описывают ситуацию, связанную с регистрацией скриптового движка, а описанные условия отсутствуют. Тем не менее, я натолкнулся на Re: (WiX-пользователи) Почему я получаю сбои ICE из сервисной учетной записи? (2010-01-14), которые, казалось, указывали, что если я использовал учетная запись домена для запуска службы установщика Windows, это будет работать. Похоже, это стоило того.

"По какой-либо причине в Windows 2008 (я не тестировал Vista, XP, 2003, 7 или 2008 R2) Служба MSI доступна только из учетных записей, которые либо имеют административный доступ или логины, которые являются "интерактивными". Логины которые из служебных учетных записей, что не иметь административных привилегий не может получить доступ к службе msi и, следовательно, не может запускать тесты ICE. "

Однако при попытке запустить службу установщика Windows с моей учетной записью службы сборки:

Windows не удалось запустить службу установщика Windows на SKILLET-1. Ошибка 1297: привилегия, необходимая для правильной работы службы, отсутствует в конфигурации учетной записи службы. Вы можете использовать оснастку «Службы Microsoft Management Console (MMC)» (services.msc) и оснастку «Локальные параметры безопасности» (secpol.msc) для просмотра конфигурации службы и конфигурации учетной записи.

ОК, Windows, значит, вы говорите мне, что моей учетной записи службы сборки не хватает двусмысленного разрешения, необходимого для запуска службы. Делать это администратор должен исправить это правильно? Нет, это тоже не работает.

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

Моя следующая идея состояла в том, чтобы попытаться изолировать набор разрешений, который на самом деле потребовался бы сервису сборки для этого. Это было бы хорошим решением вместо добавления дополнительных учетных записей в набор администраторов. Шаг 1: зайдите в локальную политику безопасности и добавьте учетную запись службы сборки ко всем разрешениям, которые в данный момент предоставлены администраторам. Теоретически, это должно позволить успешной сборке, и оттуда я могу выборочно удалять разрешения, пока не выделю все разрешения, которые должны быть сохранены, чтобы она была успешной.

К сожалению, даже с теми же разрешениями сборка все равно не будет выполнена, если учетная запись службы сборки не является членом локальных администраторов. Почему это? Какие еще вещи, кроме LSP, зависят от группы администраторов, которую я мог бы изменить, чтобы привести мою учетную запись службы сборки в соответствие с администраторами?

Текущий вывод: служба сборки должна быть администратором во избежание ошибок проверки ICE.

Открытые вопросы:

  • Почему моя идея изоляции разрешений не сработала?
  • Что это за загадочный Error 1297, возникающий при запуске службы установщика Windows от имени пользователя домена? По этому вопросу я почти не могу найти документацию.

1 Ответ

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

Я тоже столкнулся с такой же проблемой. После некоторой борьбы и поиска в Google я пришел к решению, что подавление проверки ICE в проекте WiX приведет к компиляции проекта.

...