Сбор файлов приводит к ошибке LGHT0231 - PullRequest
10 голосов
/ 07 сентября 2011

Я использую последний Votive (Wix v3.5) и создал простой проект установки Wix VS 2010. Я добавил ссылку на свой сайт и установил для параметра Harvest значение true.

.

Теперь, когда мои INSTALLDIR указывают на папку в IISROOT, я получаю эту ошибку light.exe:

[filepath]: ошибка LGHT0231: компонент 'cmp93982C4086FF8C75F07339DD7CEA8152' имеет файл ключа с путем 'TARGETDIR \ webdir ... [имя файла] .xml. Так как этот путь не укоренен в одном из стандартных каталогов (например, ProgramFilesFolder), это Компонент не соответствует критериям для автоматического сгенерированный гид. (Эта ошибка также может возникать, если путь содержит вероятный стандартный каталог, такой как вложение каталога с именем «Общие файлы» в ProgramFilesFolder.)

Хотя я понимаю причину этой ошибки, я не обязательно согласен с ее рациональностью (возможно, я не понимаю врожденную работу генерации Wix MSI).

Как я могу устранить эту ошибку?


Чтобы предоставить некоторый контекст:

Я пытаюсь настроить это вместе с Team Build. Я могу использовать устаревший формат и запустить задачу Heat / Harvest для папки, чтобы обойти эту проблему, но не хочу идти устаревшим путем.

Я недостаточно играл с новым определением сборки, основанным на рабочем процессе, поэтому не уверен, каким образом я могу включить эту пользовательскую задачу.

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

1 Ответ

10 голосов
/ 10 сентября 2013

Проблема заключается в том, что компонент внедрен в TARGETDIR, который WiX не может использовать для автоматической генерации guid. Вы можете добавить Directory/@ComponentGuidGenerationSeed в каталог над этим компонентом, чтобы избежать проблемы. Добавив этот атрибут, вы теперь должны взять на себя ответственность за то, чтобы компонент не устанавливался в двух разных каталогах при обновлении.

В установщике Windows компоненты должны иметь руководство, которое не меняется между исправлениями, незначительными обновлениями и основными обновлениями. Для удобства WiX может сгенерировать UUID версии 5 для вас, используя иерархию каталогов компонента в качестве начального числа. Но TARGETDIR не подходит для этого.

Я полагаю, что причина в том, что TARGETDIR меняется в зависимости от установки (он настроен на диск с наибольшим количеством свободного места) Одно из правил для компонентов: « каждый компонент должен храниться в одной папке ». Если между основными обновлениями TARGETDIR меняется, то вы можете попытаться установить тот же компонент во вторую папку.

...