Ошибки проверки WiX ICE
У меня возникают некоторые странные проблемы с WiX на моей локальной машине. Проблема прерывистая, но после нескольких перестроек решения проект WiX начинает бросать ошибки проверки ICE.
Если я перейду в мою папку AppData\Local\Temp
и удалю все временные папки, содержащие MSI, решение снова скомпилируется. Через некоторое время проблема снова начнется. Необходимость продолжать очистку временных папок не является устойчивым или удовлетворительным решением.
Кто-нибудь еще столкнулся с этой проблемой? Коды ошибок проверки всегда всегда являются комбинацией ICE30, ICE38, ICE64 и ICE91
Update:
В соответствии с запросом, вот записи от последнего сбоя:
ошибка LGHT0204: ICE38: Внутренняя ошибка ICE 1002. Возвращенный API: Ошибка 1615.
LGHT0204: ICE38: Ошибка 2235:/OU.AppFramework.Includes.msi, _Profile, UPDATE Directory
SET _Profile
= 0 ошибка LGHT0204: ICE64: Внутренняя ошибка ICE 1001. API Возвращено: 1615.
Ошибка LGHT0204: ICE64: Ошибка 2242: OU.AppFramework.Includes.msi, _Profile, ALTER TABLE Directory
ADD _Profile
КОРОТКОЕ ВРЕМЯ ВРЕМЕНИ
Ошибка LGHT0204: ICE91: ICE Внутренняя ошибка 1001. Возвращенный API: 1615. Ошибка LGHT0204: ICE91: Ошибка 2242: OU.AppFramework.Includes.msi, _Profile, ALTER TABLE Directory
ДОБАВИТЬ _Profile
КРАТКОЕ ВРЕМЯ ВРЕМЕНИ
Интересно, что этот провал произошел до того, как я покинул офис вчера вечером, и решение скомпоновалось, когда я пришел этим утром. Поскольку он, кажется, сосредоточен в каталоге temp, где MSI создается WiX, может ли это быть процессом сборки, блокирующим файл?
Обновление 2:
И теперь мы вернулись к более чем 600 ошибкам, в основном повторяя эту ошибку:
ошибка LGHT0204: ICE30: Внутренняя ошибка ICE 100. Возвращенный API: 1615.
ошибка LGHT0204: ICE30: ошибка 2235: AppFramework.Includes.msi, _ICE30SFN, SELECT Directory_Parent
, Directory
, DefaultDir
, _ICE30SFN
, _ICE30LFN
FROM Directory
ГДЕ Directory
. Directory
=? И Directory_Parent
< & le;
Обновление 3:
Проблема все еще существует даже после попытки предложения @limpan. Есть пара предупреждений, выдаваемых светом, которые вызваны блокировкой выходной папки MSI, когда свет пытается получить доступ к MSI:
Предупреждение 549 Каталог '\ AppData\Local\Temp\2opu3hxf' используется и не может быть удален. light.exe
Ответы
Ответ 1
Попробуйте добавить <RunWixToolsOutOfProc>true</RunWixToolsOutOfProc>
в файл проекта WiX.
У нас была такая же проблема на некоторое время, и мы пробовали различные обходные пути, включая удаление временных файлов и настройку переменной среды msbuild. Все они работали некоторое время, но в конце концов (иногда через несколько дней) проблема снова вернулась.
Я заметил, что на моей машине devenv.exe был процессом, который блокировал файлы, которые light.exe пытался удалить. Я также наткнулся на несвязанный поток, в котором упоминалось об этом проекте, чтобы заставить инструменты WiX не работать. Я думал, что это может стоить попробовать, и, похоже, вылечило эту проблему для нас (до сих пор...)
Ответ 2
У меня была эта проблема, и я решил ее в своей среде.
Короткий ответ:
Добавьте переменную окружения MSBUILDDISABLENODEREUSE=1
и перезапустите Visual Studio
Длинный ответ:
Во время сборки было предупреждение, которое я сначала не видел, так как я слишком сфокусировался на ошибке:
Не удалось удалить временный каталог: C:\Users [имя_пользователя]\AppData\Local\Temp\5 [uniqueFolderName] light.exe
Я попытался удалить папку вручную, но был использован другим процессом.
Оказалось, что во время сборки запускается много процессов MSBuild.exe, а затем снова не закрывается.
Вы можете узнать больше о причине этого и о том, что вы можете сделать, чтобы изменить это поведение в вопросе msbuild.exe, оставаясь открытым, блокируя файлы.
Этот поток: он и решение в этом потоке:
Я надеюсь, что этот ответ может помочь кому-то другому.
Ответ 3
Для ICE30: Внутренняя ошибка ICE 100. Возвращенный API: 1615, попробуйте это и посмотрите, работает ли он:
- Закройте все экземпляры Visual Studio (возможно, это просто важно, но на всякий случай)
- Перейдите к
C:\Documents and Settings\\****user id****\\Local Settings\Temp\
.
- Очистите все папки, которые выглядят так: 's12qgaks'. В основном он содержит файлы MSI.
- Откройте решение и перекомпилируйте.
Удачи!
Ответ 4
Я тоже столкнулся с такой проблемой. В свойствах проекта откройте "Настройки инструмента" и нажмите "Отказаться от подтверждения ICE".
![Enter image description here]()
Ответ 5
Для меня MSBUILDDISABLENODEREUSE = 1 (или/nr: false в командной строке) не решило проблему.
Но <RunWixToolsOutOfProc> true </RunWixToolsOutOfProc> выполнил свою работу.
Ответ 6
У меня была такая же проблема. Это оказалось моим антивирусным программным обеспечением (OfficeScan). У него были заблокированы промежуточные файлы, созданные Light.exe, и процесс проверки не удался. Исключение временной папки из проверки на вирусы или отключение проверки ICE не является приемлемым решением.
Если у кого-то есть лучшее решение. Я бы хотел знать.