Обнаружить, установлен ли SQL Server Compact Edition 3.5 SP2 x64? - PullRequest
5 голосов
/ 27 мая 2010

Я создаю установщик и хочу загрузить SQL Server Compact Edition 3.5 SP2. Проблема в том, что я ищу ключ реестра HKLM\SOFTWARE\Microsoft\Microsoft SQL Server Compact Edition\v3.5\ENU\DesktopRuntimeVersion. Причиной проблемы является то, что для 64-разрядных компьютеров SQL CE требует, чтобы выполнялись как 32-разрядные, так и 64-разрядные установщики. Вы не можете установить 64-битную версию, пока не установлена ​​32-битная версия.

Как только 32-разрядная версия установлена, заполняется раздел реестра, и мой загрузчик dotNetInstaller обнаруживает, что раздел реестра существует, а версия x64 никогда не устанавливается.

Есть идеи, как узнать, установлена ​​ли версия x64, даже если установлена ​​x32?

Ответы [ 2 ]

8 голосов
/ 30 мая 2010

x64 система с установленной только x86:

[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Microsoft SQL Server Compact Edition\v3.5\ENU]
"DesktopRuntimeVersion"="3.5.8080.0"
"DesktopRuntimeServicePackLevel"="2"

x64 система с установленными x86 и x64:

[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Microsoft SQL Server Compact Edition\v3.5\ENU]
"DesktopRuntimeVersion"="3.5.8080.0"
"DesktopRuntimeServicePackLevel"="2"
"DesktopRuntimeVersion_x64"="3.5.8080.0"
1 голос
/ 07 января 2013

Некоторый код проверяет, установлен ли SQL CE 3.5 SP2 с использованием MSBuild:

<PropertyGroup>
    <SSCE35sp2Installed Condition="'$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server Compact Edition\v3.5\ENU@DesktopRuntimeVersion)' == '3.5.8080.0' And '$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server Compact Edition\v3.5\ENU@DesktopRuntimeServicePackLevel)' == '2'">true</SSCE35sp2Installed>
    <SSCE35sp264Installed Condition="'$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Microsoft SQL Server Compact Edition\v3.5\ENU@DesktopRuntimeVersion_x64)' == '3.5.8080.0'">true</SSCE35sp264Installed>
</PropertyGroup>

Я не уверен, сколько значений реестра нужно проверить. Например, следует ли проверять значение Wow6432Node DesktopRuntimeServicePackLevel в дополнение к указанному выше?

...