SQL CE가 설치되어 있는지 확인하는 가장 좋은 방법과 그렇다면 어떤 버전이 있습니까?

StackOverflow https://stackoverflow.com/questions/256451

문제

SQL CE 3.5를 사용하는 VB.NET 응용 프로그램을 작성했습니다. A) SQL CE가 설치되어 있는지 확인하는 데 도움이되는 모범 사례 나 코드가 있으면 궁금합니다. B) 그렇다면 어떤 버전이든지.

MSDN과 Google을 검색했지만 도움이되는 것을 찾지 못했습니다. 나는 레지스트리 주위를 찌르고이 키를 발견했다 : hkey_local_machine software microsoft microsoft microsoft sql server compact edition v3.5는 "버전"버전 "이 3.5.5692.0이었다.

그래서 박쥐에서 내 가정은이 열쇠의 존재를 확인하는 것이지만 "3.5"키가 3.5 DLL에 묶여있는 것처럼 들리기 때문에 나를 귀찮게합니다. 내가 말하려는 것은 SQL CE가있는 경우 누군가가 SQL 3.5를 설치하는 것을 싫어한다는 것입니다 (여기에 CE의 미래 버전을 여기에 삽입).

기타 정보 : 대상 프레임 워크 : .NET 2.0 최소 대상 OS : Windows XP SP2

도움이 되었습니까?

해결책

이 작업을 수행하는 널리 허용되는 방법은 MSI 설치 프로그램이 레지스트리에 저장 한 제품 식별자 (Guid)를 확인하는 것입니다. 문제가있는 제품이 설치되지 않으면 ORCA (Windows SDK의 일부)라는 도구로 MSI를 열고 안내서를 잡을 수 있습니다. 모든 설치 제작자가 사전 레크 테스트의 일환으로이를 수행 할 수있는 조치 또는 작업이있는 경우 대부분의 기능은이 기능을 갖습니다.

버전을 확인하려면 레지스트리에서 다시 파기하거나 파일 버전을 살펴 보겠습니다.

다른 팁

Windows 시스템이나 휴대용 장치에서 SQL CE에 대해 이야기하고 있는지 확실하지 않습니다. PC에서 가장 좋은 방법은 SQL CE 버전을 애플리케이션에 배포하는 것입니다. 당신은 그렇게 할 권리를 등록 할 수 있습니다. http://www.microsoft.com/sqlserver/2005/en/us/compact-redistribute.aspx.

Blackwasp가 지적했듯이 가장 좋은 방법은 신청서에 SQLServerce- 어셈블리를 배포하는 것입니다. 데이터베이스 파일 (SDF 파일)이 어떤 버전을 확인하려면, 당신은 여기.

도움이 되었기를 바랍니다.

이것은 내 해결책입니다. 설치 파일에 5 메가를 추가했지만 이제 오프라인으로 설치됩니다. 설치하는 데 몇 초가 걸리지 만 항상 옳은 일을합니다.

이것이 Defacto 솔루션이어야하는 이유 :

  • 프로그램이 제대로 설치되도록 보장하는 것은 해당 기능의 설치 프로그램의 책임이되어야합니다.
  • 당신은 항상 최종 결과가 SQL Server CE가 설치되기를 원합니다 (사용자가 원래 설치로 화를 낸 경우에도)
  • 추가로 5 Megs 추가입니다 (그러나 여전히 다운로드를 사용할 수 있습니다)

        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>

좋아, 이것은 당신의 질문의 첫 번째 부분에만 대답하지만 어쨌든 그것이 유용하기를 바랍니다 ... 이것이 제가 현재 사용하는 것입니다.

<Fragment>
    <util:RegistrySearch
          Id='SearchForSQLCE'
          Variable="SQLCEInstalled"
          Result="exists"
          Root="HKLM"
          Key="SOFTWARE\Classes\Microsoft SQL Server Compact Edition Database File"
          Win64="yes"
               />
  </Fragment>
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top