Установщик x64 wix на XP не записывает значения реестра в Wow6432Node - PullRequest
0 голосов
/ 17 августа 2010

В случае установки на x64 мне нужно записать два значения реестра:

1) <RegistryValue Root="HKLM" Key="SOFTWARE\Microsoft\Exchange" Name="Info" Type="string" Action="write" Value="8">

2) <RegistryValue Root="HKLM" Key="SOFTWARE\Wow6432Node\Microsoft\Exchange" Name="Info" Type="string" Action="write" Value="9"/>

Я использую <?if $(var.PlatformName) = x64 ?>, чтобы проверить, нахожусь ли я на x64.

На win 7 64-bit он работает нормально, но на xp 64-bit он записывает значение второго ключа («9») на место первого ключа (я думаю, он перезаписывает первый ключ). Есть идеи почему? или как мне это решить?

Ответы [ 2 ]

2 голосов
/ 17 августа 2010

Правильный способ сделать это в .msi - это поместить эти значения реестра в два отдельных компонента.Оба будут ссылаться на ключ SOFTWARE\Microsoft\Exchange, но один будет 32-битным компонентом, а другой - 64-битным компонентом.Обратите внимание, что пакет, который включает в себя 64-разрядные компоненты, должен иметь значение 64-разрядной сводки шаблонов и, следовательно, не может быть установлен на 32-разрядном компьютере.

0 голосов
/ 17 августа 2010

Я думаю, что сначала вам нужно понять, что windows записывает значения реестра в SOFTWARE\Wow6432Node из-за отражения в реестре (это происходит, когда 32-битный установщик пытается записать значения реестра в SOFTWARE\ или любой другой ключ, который поддерживает отражение реестра).

Отражение реестра можно отключить для Registry element, если вы установите для атрибута win64 значение true для его родителя Component.

Но в качестве лучшей практики рекомендуется создать один MSI для сред x64 и один MSI для сред x86.

Если вы хотите узнать больше об анализе реестра, вы можете проверить следующие ссылки.

...