Копирование идентификатора компонента инструмента Heat Harvest для файлов реестра

Я использую инструмент Heat Harvest для нескольких файлов реестра (45) У меня есть цикл для создания файла wxs.

Он работает хорошо, за исключением 3 файлов, сгенерированных одинаковый идентификатор компонента.

heat reg MyReg.reg -cg compoentGroup -gg -o MyReg.reg.wxs
heat reg MyReg1.reg -cg compoentGroup1 -gg -o MyReg1.reg.wxs
heat reg MyReg2.reg -cg compoentGroup2 -gg -o MyReg2.reg.wxs

Результат в том же Идентификаторе компонента как

<Component Id="cmp0278C3EF60DDFA362D50D5DD0254BCB9" Directory="TARGETDIR" Guid="{EED2941A-01BD-4CE5-97BF-75F19B6605A6}" KeyPath="yes">

Хотя Guid уникальны.

Интересно, как можно избежать этой ситуации или любого альтернативного способа сделать то же самое.

2 ответа

Решение

Проблема, с которой я столкнулся, состояла в том, что у 3 из файлов reg были дублирующиеся ключи, которые вызывали идентичный идентификатор компонента с помощью инструмента высокой температуры.

Ключи в reg-файлах должны быть уникальными, чтобы это работало.

Component/@Id должен основываться на полном "пути" содержащегося в реестре ключа. Таким образом, если у вас есть два ключа реестра в ваших файлах.reg (которые могут иметь или не иметь разные значения), то вы получите дубликат Component/@Id атрибутов. Это важно, поскольку наличие одного и того же ключа реестра в двух разных компонентах также нарушает правила компонентов.

Последняя мелочь Будьте осторожны с использованием -gg переключиться с теплом. Каждый раз, когда вы запускаете инструмент, он генерирует новые GUID для ваших компонентов. Это не допускается, как только эти Компоненты поставляются, потому что это будет нарушением Правил Компонента. Я рекомендую использовать -ag Вместо этого переключитесь, чтобы механизм auto-GUID позаботился о правильном управлении вашими GUID.

Другие вопросы по тегам