2010-05-27 17 views
5

Sto costruendo un programma di installazione e voglio eseguire il bootstrap di SQL Server Compact Edition 3.5 SP2. Il problema è che sto cercando la chiave di registro HKLM\SOFTWARE\Microsoft\Microsoft SQL Server Compact Edition\v3.5\ENU\DesktopRuntimeVersion. Il motivo per cui è un problema è che per i computer a 64 bit SQL CE richiede l'esecuzione sia degli installer a 32 bit che a 64 bit. Non è possibile installare la versione a 64 bit finché non viene installata la versione a 32 bit.Rilevare se SQL Server Compact Edition 3.5 SP2 x64 è installato?

Non appena viene installata la versione a 32 bit, la chiave di registro viene popolata e il mio bootstrapper, dotNetInstaller rileva che la chiave di registro è presente e la versione x64 non è mai installata.

Qualche idea su come sapere se la versione x64 è installata anche se è installato x32?

risposta

7

sistema x64 con runtime solo x86 installato:

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

sistema x64 sia con x86 e x64 installato:

[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" 
+0

Perfetto! Grazie! –

+0

Si noti che il pacchetto SP2 x64 non verrà installato a meno che non sia installato il pacchetto x86 - ulteriori informazioni: http://erikej.blogspot.com/2010/05/how-to-detect-if-x64-sql-compact-35- sp2.html – ErikEJ

1

Alcuni test di codice se SQL CE 3.5 SP2 viene installato utilizzando MSBuild:

<PropertyGroup> 
    <SSCE35sp2Installed Condition="'$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server Compact Edition\v3.5\[email protected])' == '3.5.8080.0' And '$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server Compact Edition\v3.5\[email protected])' == '2'">true</SSCE35sp2Installed> 
    <SSCE35sp264Installed Condition="'$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Microsoft SQL Server Compact Edition\v3.5\[email protected]_x64)' == '3.5.8080.0'">true</SSCE35sp264Installed> 
</PropertyGroup> 

Non sono sicuro quanti dei valori di registro devono essere controllati. Ad esempio, il valore Wow6432Node DesktopRuntimeServicePackLevel deve essere verificato in aggiunta a quanto sopra?

Problemi correlati