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?
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, что и агент сборки. Чтобы решить проблему :
- элемент списка
- перейти к переменным среды на агенте сборки машина
- создать две системные переменные
"PF86"что равно"C:\Program Files (x86)""PF"что равно"C:\Program Files"- они такие короткие, потому что я хочу спасти персонажей.Я сделал их без окончательной обратной косой черты, потому что TEMP, TMP и другие были сделаны так, и я решил придерживаться стандарта MS для этих переменных.
- изменить переменную PATH, заменяя все
"C:\Program Files (x86)"С%PF86%и все"C:\Program Files"С%PF%- закрыть и построить и наслаждайтесь!
- это сработало для меня. :)
Я получал ту же ошибку ICE, но проблема оказалась поврежденной службой установщика Windows. Это решение сработало для меня: http://support.microsoft.com/kb/315353
- войдите в систему с правами администратора.
- Нажмите кнопку Пуск, а затем нажмите кнопку Выполнить.
- в поле Открыть введите cmd и нажмите кнопку ОК.
- в командной строке введите команду msiexec.exe / отменить регистрацию, а затем нажмите клавишу Ввод.
- введите команду msiexec /regserver, а затем нажмите клавишу Ввод.
- Перезагрузить 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). Мое решение состояло в том, чтобы изменить учетную запись, используемую для запуска службы на моей машине. Вместо того, чтобы использовать сетевую службу или локальную службу, я просто сделал вход в систему службы с моей собственной учетной записью, которая имела все необходимые права.
ни одно из вышеперечисленных предложений не сработало для меня, для меня антивирус (mcafee) вошел в картину и выглядит так, как будто он обновил vbscript.запись реестра dll в неправильном месте DLL. Вот что нужно иметь в виду:
- некоторые из валидаций Wix ICE реализованы с помощью VBSCRIPT.
- поэтому при компиляции MSI серверу сборки потребуется доступ к c:\windows\system32\vbscript.файл DLL.
- скорее всего, что как-то пользователь, что запускает вашу сборку потерял доступ к этой DLL.
- как уже упоминалось в приведенных выше ответах, найдите доступ администратора / доступ к реестру и убедитесь, что он есть у вашего пользователя.
вот шаги, которые я предпринял, чтобы исправить эту проблему:
- открыть cmd (Запуск от имени администратора) на компьютере агента построения.
- Запустить RegEdit
- выберите корень, затем нажмите ctrl + f и выполните поиск следующей записи реестра : {B54F3741-5B07-11cf-A4B0-00AA004A55E8}
- найдите ключ InprocServer32\Default
- в моем агенте сборки путь был заменен на расположение DLL mcafee. Я обновил путь обратно c:\windows\system32\vbscript.dll
- редактирование записи реестра было непросто, так как это была защищенная запись реестра. Я использовал ссылку ниже, чтобы получить права доступа изменены, прежде чем я мог редактировать собственность: редактировать защищенную запись реестра
после того, как я обновил путь, все начало работать как обычно.

Comments