代码之家  ›  专栏  ›  技术社区  ›  Cj Anderson

检查是否安装了SQL CE的最佳方法,如果安装了,请选择哪个版本?

  •  4
  • Cj Anderson  · 技术社区  · 16 年前

    我已经编写了一个使用SQL CE 3.5的VB.NET应用程序。我很好奇是否有人有任何最佳实践或代码来帮助检查A)是否安装了SQL CE,B)如果安装了,是什么版本。

    我搜索了msdn和谷歌,但没有找到任何有用的东西。我在注册表中翻了翻,发现了这个键: 使用字符串值“Version”,数据为3.5.5692.0。

    因此,我的假设是检查这个键的存在,但它困扰着我,因为“3.5”键听起来确实像是绑定到了3.5 DLL。我想说的是,如果某人有SQL CE(在这里插入将来版本的CE),我不想强迫他们安装SQL 3.5。

    目标框架:.NET 2.0 最低目标操作系统:Windows XP SP2

    5 回复  |  直到 13 年前
        1
  •  2
  •   BlackWasp    16 年前

    不确定您谈论的是Windows计算机上的SQL CE还是便携式设备上的SQL CE。在PC上,最好是将SQL CE版本与应用程序一起分发。您可以在以下位置注册此权限: http://www.microsoft.com/Sqlserver/2005/en/us/compact-redistribute.aspx .

        2
  •  1
  •   Davo    16 年前

    广泛接受的方法是检查MSI安装程序保存在注册表中的产品标识符(GUID)。如果您没有安装有问题的产品,您可以使用名为Orca(Windows SDK的一部分)的工具打开MSI,并以这种方式获取GUID。大多数(如果不是所有的话)安装构建器都有一个操作或任务,可以作为pre-req测试的一部分来完成这项工作,甚至VS2005/2008也有这个功能。

    为了检查版本,我会在注册表中再次翻找,或者查看文件版本。

        3
  •  1
  •   ollifant    16 年前
        4
  •  1
  •   Bluebaron    10 年前

    这是我的解决方案。它在我的安装文件中添加了5兆,但现在也离线安装。安装需要额外几秒钟,但它总是做正确的事情。

    • 确保程序正确安装应由该功能的安装人员负责
    • 只需额外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>
    
        5
  •  0
  •   noelicus    12 年前

    好的,这只回答了你问题的第一部分,但希望它对你有用。。。 这是我目前使用的:

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