WiX Heat.exe создает файл wxs, вызывая ошибку ICE57

Я использую WiX Heat.exe, чтобы собрать каталог файлов и создать .wxs файл.

Один из файлов зависит от Microsoft.DirectX.Direct3D.dll. Пока Heat зарегистрировал все остальные зависимости в «корневом» реестре, например:

<RegistryValue Root="HKCR" Key="..." Name="..." Value="..." Type="string" Action="write" />

Direct3D регистрируется в реестре «Пользователь».

<RegistryValue Root="HKCU" Key="Software\Microsoft\Direct3D\MostRecentApplication" Name="Name" Value="heat.exe" Type="string" Action="write" />

Что вызывает следующую ошибку:

ICE57: Компонент 'x' имеет данные как для пользователя, так и для каждой машины с KeyPath для каждой машины.

Как мне решить эту проблему?


person MichaelS    schedule 31.12.2013    source источник


Ответы (1)


Heat переназначает реестр, запускает саморегистрацию для всех собираемых файлов, а затем собирает все записанные ключи реестра. Вероятно, один из ваших компонентов записывает этот ключ во время саморегистрации. Вы можете: 1) запретить сбор реестра (-sreg) 2) изменить любой компонент, записывающий этот ключ, чтобы этого не делать 3) написать xsl, чтобы удалить собранный ключ.

Кроме того, вам следует подумать о объединении установки direct-x вместо перераспределения отдельных библиотек DLL.

person TheESJ    schedule 31.12.2013
comment
Спасибо, в итоге я удалил заготовленный ключ с помощью XSL - person MichaelS; 02.01.2014