Подтвердить что ты не робот

WiX 3.0 выдает ошибку 217, а выполняется непрерывной интеграцией

Это ошибка, которая возникает в нашем автоматическом сборке в Windows 2008 при запуске WiX 2.0 к WiX 3.0):

LGHT0217: Ошибка при выполнении действия ICE 'ICE01'. Наиболее распространенной причиной такого отказа ICE является неправильно зарегистрированный механизм сценариев. Подробнее см. http://wix.sourceforge.net/faq.html#Error217 и как решить эту проблему. Внешний регистратор сообщений UI не ожидал следующего строкового формата: "Не удалось получить доступ к службе установщика Windows. Это может произойти, если установщик Windows установлен неправильно. Обратитесь за помощью к вашему персоналу поддержки". in light.exe(0, 0)

Кроме того, это ошибки, которые появляются в журнале событий:

MSIInstaller: Не удалось подключиться к серверу. Ошибка: 0x80070005 Продукт: [ProductName] - Ошибка 1719. Не удалось получить доступ к службе установщика Windows. Это может произойти, если установщик Windows установлен неправильно. Обратитесь за помощью к вашему вспомогательному персоналу.

Наглядно:

  • VBScript и JScript были зарегистрированы под администратором.
  • У службы интеграции есть разрешения для взаимодействия с рабочим столом и всех файлов
  • Создается успешно, когда выполняется вручную на одном компьютере другим пользователем или даже пользователем, зарегистрированным в качестве учетной записи интеграции (через RDP)

У меня пока нет идей.

Как решить эту проблему, сохранив проверку ICE?

4b9b3361

Ответ 1

Конец истории:

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

Чтобы отключить проверку ICE, вы можете установить SuppressValidation в true в файле .wixproj:

    <PropertyGroup>
        <SuppressValidation>true</SuppressValidation>
    </PropertyGroup>

Или передайте параметр командной строки -sval в light.exe.

Ответ 2

Добавление учетной записи контроллера сборки TFS в локальную группу администратора и перезапуск службы Windows выполнило мою работу.

Ответ 3

Я нашел основную причину. Я попробовал все, что нашел, включая настраиваемое расширение валидатора, подобное тому, которое было опубликовано в Re: [WiX-users] light.exe случайно удался при запуске ICE..

Это не проблема concurrency, как предлагается в разных потоках. Это вызвано слишком большим блоком рабочей среды (PEB).

Оказывается, установщик Windows не может обрабатывать блок среды процесса, размер которого превышает 32 kB. В моей среде из-за количества переменных, заданных системой сборки и их размера (например, переменные среды, Windows XP и 2003 были жесткие ограничения PEB, равные 32 килобайтам. Вероятно, это приведет к простому сбою в сборе на предыдущем этапе сборки. У более поздней версии Windows не существует такого ограничения, но я полагаю, что разработчики Windows Installer ограничили свои внутренние буферы среды до 32 kB и изящно потерпели неудачу, когда превышено значение.

Проблема может быть легко воспроизведена:

  • Создайте файл .bat, который устанавливает переменные среды, размер которых превышает 32 kB. Например, это может быть 32 строки set Variable<number>=<text longer than 1024 characters>
  • Запустить cmd.exe
  • Выполните созданный командный файл
  • Из того же окна cmd.exe:
    • Попробуйте создать пакет MSI с помощью WiX с проверкой ICE на OR
    • Запустите smoke.exe для проверки вашего пакета ИЛИ
    • Просто запустите msiexec /i Package.msi
  • Все вышеприведенные команды будут сообщать Error 1719 - Windows Installer could not be accessed.

Итак, решение - просмотрите сценарии сборки и уменьшите количество и размер переменных среды, чтобы они все вписывались в 32 kB. Вы можете легко проверить результаты, выполнив:

set > environment.txt

Цель состоит в том, чтобы получить файл environment.txt меньше, чем ~ 30 kB.

Ответ 4

Правильное описание (без решения, за исключением случаев, когда добавление учетной записи CruiseControl в группу локальных администраторов может проходить как решение):

Цитата из Wix 3.5 и Cruise Control дают errorLGHT0217:

Для проверки ICE необходимы интерактивные учетные записи или права администратора счастливый. См. Например Проекты WiX против Team Team Team TFS 2010 (2009-11-14) или Re: [WiX-users] Помощь в создании патча (2009-11-20).

Ответ 5

imagi абсолютно прав! Я не мог поверить, что это истинный ответ. Недостаточная проверка и создание администратора TFS не являются хорошими решениями. Кроме того, я не мог найти NT\Authority, чтобы добавить его в группу "Администраторы" и полностью застрял в этом.

Я получил ту же ошибку в Windows Server 2012 Datacenter как агент сборки. Чтобы решить проблему:

  • Элемент списка
  • Перейдите к переменным среды на машине агента сборки.
  • Создайте две системные переменные
  • "PF86", который равен "C:\Program Files (x86)"
  • "PF", который равен "C:\Program Files"
  • Они настолько коротки, что я хочу сохранить символы. Я сделал их без окончательной обратной косой черты, потому что TEMP, TMP и другие были сделаны так, и я решил придерживаться стандарта MS для этих переменных.
  • Изменить переменную PATH, заменив каждый "C:\Program Files (x86)" на %PF86% и каждый "C:\Program Files" на %PF%
  • Закройте и создайте и наслаждайтесь!
  • Это сработало для меня.:)

Ответ 6

Я получал такую ​​же ICE-ошибку, но проблема оказалась поврежденной установкой Windows Installer. Это решение работало для меня: http://support.microsoft.com/kb/315353

  • Войдите на свой компьютер в качестве администратора.
  • Нажмите "Пуск" и выберите "Выполнить".
  • В поле "Открыть" введите cmd и нажмите "ОК".
  • В командной строке введите msiexec.exe/unregister и нажмите клавишу ВВОД.
  • Введите msiexec/regserver и нажмите клавишу ВВОД.
  • Перезагрузка Windows

Кроме того, убедитесь, что учетная запись SYSTEM имеет полные права доступа к управлению HKEY_CLASSES_ROOT улей в реестре Windows. В некоторых случаях вам также может потребоваться добавить учетные записи администратора.

Ответ 7

От http://wix.sourceforge.net/faq.html#Error217:

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

Ответ 8

У меня есть некоторые предложения.

  • Попробуйте обновить версию установщика Microsoft на сервере сборки.
  • Убедитесь, что вы используете новейшую версию WiX 3.0, так как теперь она 3.0 стабилизируется.
  • Если все остальное не работает, попробуйте запустить службу сборки под определенным пользователем сборки, с которой вы можете играть с разрешениями для...

Ответ 9

Я столкнулся с той же проблемой и не хотел подавлять проверку ICE. Моя настройка: я использовал свой собственный компьютер в качестве агента сборки в Visual Studio Online (VSO). Мое решение состояло в том, чтобы изменить учетную запись, используемую для запуска службы на моей машине. Вместо использования службы сети или локальной службы я просто включил службу в свою учетную запись со всеми необходимыми правами.

Ответ 10

Перейдите на свой сборщик и перезапустите службу установщика Windows