2015-02-26 4 views
0

Мой установщик должен различать процессор Intel и AMD, чтобы отбросить соответствующие компоненты (драйверы). Я видел, что можно поймать такую ​​информацию из раздела реестра. Я сделал следующееНевозможно прочитать значение с RegistrySearch

<Property Id="REGMANIFACTURER"> 
    <RegistrySearch Id="RegCPU" 
        Root="HKLM" 
        Key="HARDWARE\DESCRIPTION\System\ControlProcessor\0" 
        Name="VendorIdentifier" 
        Type="raw" 
        Win64="yes" 
        > 
    </RegistrySearch> 

И после падения таким образом (это так, например AMD)

<ComponentGroup Id="Xxxxxx" Directory="Yyyy"> 
     <!--Catalog--> 
     <Component Id="xxx.cat" Guid="7d79a20a-2742-4d38-be85-35a60ac512f1" Win64="yes" > 
     <Condition> 
      <![CDATA[Installed OR (REGMANIFACTURER <> "GenuineIntel")]]> 
     </Condition> 
     <File Id="xxx.cat" Source="xxx\yyy\xxx.cat" KeyPath="yes" Checksum="yes" /> 
     </Component> 

От MSI установки журналы можно увидеть ошибку 1402 (Не удалось открыть ключ), не могли бы вы сообщить мне, где ошибка, и/или как достичь цели?

Большое спасибо за ваше время!

+0

Вместо трал реестра часто лучше использовать соответствующий API. GetSystemInfo() или GetNativeSystemInfo() расскажут вам об Intel против AMD в результате обработки архитектуры процессора. – PhilDW

ответ

0

У вас есть опечатка в вашем Key атрибута: Это должно быть

HARDWARE \ Описание \ System \ CentralProcessor \ 0

+0

Спасибо, проработал! Тем временем нашел другой способ, связанный с использованием env. вар. PROCESSOR_IDENTIFIER –

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