2015-08-24 2 views
0

я имел следующий компонент «Reg2015» в RTM, в которой я забыл назначить ключевой путь:PYRO0243 при строительстве патча

<DirectoryRef Id="INSTALLLOCATION"> 
<Component Id="Reg2015" Guid="{xxx}" Win64="no" > 
    <RegistryKey Root="HKLM" Key="SOFTWARE\Mine" > 
    <RegistryValue Name="RefCount" Value="1" Type="integer" /> 
    <RegistryValue Name="Name" Value="Mine" Type="string" Action="write" /> 
    </RegistryKey> 
</Component> 
... 
</DirectoryRef> 

Чтобы подготовить патч, я изменил «RefCount» на «2», и добавил патч WXS.

Теперь PYRO.EXE жалуется, как это:

error PYRO0243: Component 'Reg2015' has a changed keypath in the transform 'C:\Patch\Patch.Wixmst'. Patches cannot change the keypath of a component. 
error PYRO0260: Product '{xxx}': Table 'CreateFolder' has a new row 'INSTALLLOCATION/Reg2015' added. This makes the patch not uninstallable. 

Я понимаю, так как не было никакого «ключевой путем», его не ключевой путь по умолчанию к INSTALLLOCATION, но не знало, что компонент ID рассматривались как каталог.

(1) Может кто-нибудь объяснить, почему?

(2) Есть ли способ пройти ошибки PYRO?

(3) Для моего следующего релиза, если добавить «Ключевой путь» к любому элементу «RegistryValue», как

<RegistryValue Name="RefCount" Value="1" Type="integer" KeyPath="yes" /> 

я должен быть в состоянии изменить «RefCount» 2 в будущем патче ?

Спасибо.

ответ

0

Я думаю, что WiX выбрал Refcount как ключевой путь для компонента - это то, что говорят документы. «Если KeyPath не установлен на« да »для компонента или для дочернего значения реестра или файла, WiX будет смотреть дочерние элементы в компоненте в последовательном порядке и попытаться автоматически выбрать один из них в качестве ключевого пути. для автоматического выбора пути ключа может быть опасно, поскольку добавление или удаление дочерних элементов в компоненте может непреднамеренно привести к изменению пути ключа, что может привести к проблемам установки ». Вы можете убедиться, что, просмотрев файл MSI с помощью Orca, чтобы увидеть, что об этом говорит таблица компонентов.

Таким образом, изменение значения ключевого слова, вероятно, привело к этой проблеме. Было бы лучше установить другой элемент реестра (или создать новый) в компоненте как ключевой путь.

Смежные вопросы