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



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




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




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




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




интуитивно:





  • VBScript и JScript были зарегистрированы как пользователь admin.

  • служба интеграции имеет разрешения на взаимодействие с рабочим столом и все файлы

  • строит успешно, когда выполнены вручную на той же машине другим пользователем или даже пользователь в качестве интеграционной учетной записи (через RDP)


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



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

513   11  

11 ответов:

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

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

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

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

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

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

Я нашел первопричину. Я попробовал все, что нашел, включая пользовательское расширение валидатора, похожее на одно, опубликованное в Re: [WiX-пользователи] свет.ехе не случайно при запуске ДВС..

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

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

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

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

  • создать .bat файл, который устанавливает переменные среды, размер которых превышает 32 КБ. Например, это может быть 32 строки set Variable<number>=<text longer than 1024 characters>
  • запуск cmd.exe
  • выполнить созданный пакетный файл
  • из того же cmd.окно exe:
    • попробуйте создать пакет MSI с помощью WiX с проверкой ICE on или
    • выполнить 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 и круиз-контроль дает errorLGHT0217:

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

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

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

  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. это сработало для меня. :)

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

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

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

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

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

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

  • попробуйте обновить версию установщика Microsoft на сервере построить
  • убедитесь, что вы используете новейшую версию WiX 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. редактирование записи реестра было непросто, так как это была защищенная запись реестра. Я использовал ссылку ниже, чтобы получить права доступа изменены, прежде чем я мог редактировать собственность: редактировать защищенную запись реестра

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

Comments

    Ничего не найдено.