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

StackOverflow https://stackoverflow.com/questions/1064580

Вопрос

Это ошибка, которая выдается нашим пакетом автоматической сборки в Windows 2008 при запуске ДВС (после перехода из WiX 2.0 до WiX 3.0):

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

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

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

Интуитивно:

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

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

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

Это было полезно?

Решение

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

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

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

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

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

Другие советы

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

Я нашел первопричину.Я перепробовал все, что нашел, включая собственное расширение валидатора, подобное тому, которое опубликовано в Ре:[Пользователи WiX] Light.exe произошёл сбой при запуске ICE..

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

Оказывается, установщик Windows не может обработать блок среды процесса размером более 32 КБ.В моей среде из-за количества переменных, установленных системой сборки, и их размера (например, переменная PATH содержащий несколько повторяющихся значений), PEB составлял около 34 КБ.

Интересно, за Переменные среды, Windows XP и 2003 имели жесткое ограничение PEB, равное 32 килобайтам.Это, вероятно, приведет к легко обнаруживаемому прерыванию сборки на более раннем этапе сборки.В более новых версиях Windows такого ограничения нет, но я предполагаю, что разработчики установщика Windows ограничили буферы внутренней среды размером 32 КБ и корректно завершают работу при превышении этого значения.

Проблему легко воспроизвести:

  • Создайте файл .bat, в котором задаются переменные среды, размер которых превышает 32 КБ.Например, это может быть 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 КБ.Вы можете легко проверить результаты, выполнив:

set > environment.txt

Цель — получить файл environment.txt меньше ~30 КБ.

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

Цитата из Wix 3.5 и круиз-контроль выдают ошибку LGHT0217:

Валидация льда нуждается в интерактивной учетной записи или привилегиях администратора, чтобы быть счастливыми.См. например Проекты WiX против.Сборка команды TFS 2010 (14 ноября 2009 г.) или Ре:[Пользователи WiX] Помогите со сборкой патча (2009-11-20).

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

Я получил ту же ошибку в центре обработки данных Windows Server 2012, что и агент сборки.Решить проблему :

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

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

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

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

  1. Войдите в свой компьютер как администратор.
  2. Нажмите «Пуск», а затем нажмите «Выполнить».
  3. В поле Открыть введите cmd и нажмите кнопку ОК.
  4. В командной строке введите msiexec.exe /unregister и нажмите клавишу ВВОД.
  5. Введите msiexec/regserver и нажмите клавишу ВВОД.
  6. Перезагрузите Windows

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

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

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

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

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

Ни одно из вышеперечисленных предложений не помогло мне, для меня на сцену вышел антивирус (mcafee), который, похоже, обновил запись реестра vbscript.dll в неправильное расположение DLL.Вот что следует иметь в виду:

  1. Некоторые проверки WiX ICE реализованы с использованием VBSCRIPT.
  2. Таким образом, при компиляции MSI серверу сборки потребуется доступ к файлу c:\windows\system32\vbscript.dll.
  3. Скорее всего, пользователь, запускающий вашу сборку, каким-то образом потерял доступ к этой DLL.
  4. Как упоминалось в ответах выше, найдите доступ администратора/доступ к реестру и убедитесь, что он есть у вашего пользователя.

Вот шаги, которые я предпринял для устранения проблемы:

  1. Откройте cmd (запускайте от имени администратора) на компьютере с агентом сборки.
  2. Запустите RegEdit
  3. Выберите корень, затем нажмите Ctrl + F и найдите следующую запись реестра:{B54F3741-5B07-11cf-A4B0-00AA004A55E8}
  4. Найдите ключ InprocServer32\Default.

enter image description here

  1. В моем агенте сборки путь был заменен расположением DLL mcafee.Я обновил путь обратно к c:\windows\system32\vbscript.dll.
  2. Редактировать запись реестра было непросто, поскольку это была защищенная запись реестра.Я использовал ссылку ниже, чтобы изменить права доступа, прежде чем я смогу редактировать свойство: Редактировать защищенную запись реестра

Как только я обновил путь, все стало работать как обычно.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top