2008-11-02 26 views
3

我寫了一個使用SQL CE 3.5的VB.NET應用程序。我很好奇,如果任何人有任何最佳做法或代碼來幫助檢查是否A)SQL CE安裝和B)如果是,什麼版本。檢查SQL CE是否安裝的最好方法,如果是的話,是什麼版本?

我搜索MSDN和谷歌的任何東西,但我沒有發現任何有用的。我閒逛註冊表,發現這個關鍵: HKEY_LOCAL_MACHINE \ SOFTWARE \微軟\ Microsoft SQL Server壓縮版\ V3.5 一個字符串值「版本」,且數據3.5.5692.0。

所以從蝙蝠我的假設是檢查這個鍵的存在,但它困擾我,因爲「3.5」鍵肯定的聲音喜歡它的綁在3.5 DLL。我想說的是我不想強制某人安裝SQL 3.5,如果他們有SQL CE的話(在這裏插入一些未來版本的CE)。

其它信息: 目標框架:.NET 2.0 最低目標操作系統:Windows XP SP2

+0

剛一說明:該應用程序是SQL CE在Windows上。我認爲像BlackWasp提到的,我可以強制安裝我的應用程序時安裝的SQL CE版本。 感謝球員,雖然不是我正在尋找BlackWasp和kleolb02的東西,但這些都爲我提供了一些能夠幫助我的長期任務。 – 2008-11-02 17:31:44

回答

1

這樣做的是檢查由所述MSI安裝保存在註冊表中的產品標識符(GUID)被廣泛接受的方法。如果您沒有安裝有問題的產品,可以使用稱爲Orca(Windows SDK的一部分)的工具來破解MSI,並以此方式獲取GUID。大多數(如果不是所有的)安裝構建者都有這樣的行爲或任務,可以將其作爲pre-req測試的一部分,甚至VS2005/2008也具備此功能。

檢查版本,我會在註冊表中再次周圍挖或可能看的文件版本。

1

由於BlackWasp指出,最好的辦法是與您的應用程序分發SqlServerCe-組裝。如果你想檢查一個數據庫文件(SDF文件)是哪一個版本,你應該看看here

希望這會有所幫助。

0

OK,這只是回答你的問題的第一部分,但希望這是有用的反正... 這是我目前使用:

<Fragment> 
    <util:RegistrySearch 
      Id='SearchForSQLCE' 
      Variable="SQLCEInstalled" 
      Result="exists" 
      Root="HKLM" 
      Key="SOFTWARE\Classes\Microsoft SQL Server Compact Edition Database File" 
      Win64="yes" 
       /> 
    </Fragment> 
1

這是我的解決方案。它在我的安裝文件中添加了5個megs,但它現在也可以脫機安裝。安裝需要幾秒鐘的時間,但它總是做正確的事情。

爲什麼這應該是事實上的解決方案:

  • 投保,一個程序是否正確安裝應該是功能的安裝程序的
  • 你總是希望最終結果是SQL Server CE的責任安裝(即使用戶生氣與周圍的原始安裝)
  • 它只有5兆額外的(但你仍然可以使用下載)

    DownloadUrl="http://download.microsoft.com/download/0/5/D/05DCCDB5-57E0-4314-A016-874F228A8FAD/SSCERuntime_x86-ENU.exe" 
        SourceFile="SSCERuntime_x86-ENU.exe" 
        Compressed="no" 
    

這是我的解決方案:

<PackageGroup Id="SQLExpressCE"> 
    <ExePackage 
     Vital="yes" 
     SourceFile="SSCERuntime_x86-ENU.exe" 
     InstallCondition="NOT VersionNT64" 

     //Include the exes(only about 2.5 megs each) 
     //Setting this to no causes your bootstrapper to download on installation but since this will always be trying to install, it is probably best to include it 
     Compressed="yes" 

     //install quietly without an interface 
     InstallCommand="/i /quiet /n" 
     /> 
    <ExePackage 
     Vital="yes" 
     InstallCondition="VersionNT64" 
     SourceFile="SSCERuntime_x64-ENU.exe" 
     Compressed="yes" 
     InstallCommand="/i /quiet /n" 
     /> 
</PackageGroup> 
相關問題