2013-10-18 6 views
0

나는 윅스를 구하기 힘듭니다. 시스템에 특정 COM 라이브러리가 있는지 확인하고 싶습니다 (전제 조건입니다). 나는 와일드 카드를 추가 할 수 있으며, 키 이름 버전[%WINDIR%]\Windows\assembly\GAC_MSIL\interop.name\1.170.0.0__a59bfa3a209beb60\interop.name.dll에 대한 윅스 화상 COM 감지 dll 존재 여부

  • util:FileSearch 포함 - - SOFTWARE\Classes\Installer\Assemblies\Global에 대한

    1. util:RegistrySearchinterop.name, Version=1.170.0.0, ...에서 와일드 카드를 추가 할 수 없습니다 다시를하고 난 : 나는 시도했다 내가 항상 GAC_MSIL 아래에 있다고 가정 할 수 있을지 확신 할 수 없다.
    2. util:ComponentSearch - 검색 할 GUID를 찾는 방법을 모르겠다.
    3. non-util, 일반 FileSearch - 부트 스트랩 내에서 작동하지 않는 것 같습니다.
    4. 나는 또한 HKCR\TypeLib\{F1E91071-83CC-4766-90BA-E038B005ACE} 항목을 발견했으나 다시 확인해도 신뢰할 만한지 확실하지 않습니다.

    GAC에서 COM dll 존재 여부를 확인할 수있는 좋은 방법이 있습니까? 어떤 국경에서 (예를 들어 전체 제거가 아닌) 뭔가를 놓치게된다면, 대부분의 경우를 커버하고 신뢰할 수없는 검사로 인해 설치를 막고 싶습니다.

  • +0

    대부분의 경우 구성 요소 작성자가 사용할 수있는 종속성이있는 경우 충분한 버전의 종속성을 설치하는 타사 설치 프로그램을 시작하는 것이 더 간단하고 분리됩니다. 어쨌든 많은 의존성은 파일 모음의 일부이므로 한 파일을 검사하는 것으로는 충분하지 않습니다. 이러한 설치 프로그램 자체는 이미 설치, 업그레이드 등의 자체적 인 경우를 처리 할 수 ​​있어야합니다. 결국 설치 시스템에 부트 스트 래퍼가 있습니다. –

    +0

    네, 요점은 있지만 유감스럽게도 사무실 간 interop을 사용하는 것과 조금 같습니다 - 내가 사용하고있는 응용 프로그램은 내 것보다 훨씬 큽니다. 내 것이 훨씬 더 유용합니다. 난 그냥 누군가가 어리석은 실수를 저 지르지 않게하고 싶다. 나중에 사용자가 종속성을 제거하기로 결정하면 내 앱이 다운되는 것을 안다. – trakos

    답변

    0

    msi 패키지에서 조건과 일반 FileSearch를 사용하여 끝났습니다. msi 패키지를 설치하기 전에 부트 스트랩이 모든 필수 구성 요소를 설치하고이 검사를 실행해도 약간 짜증나는 경우가 있습니다.

    <Property Id="DEP_EXISTS"> 
        <DirectorySearch Id="CheckFileDir" Path="$(env.WINDIR)\assembly\" Depth="10" AssignToProperty="yes"> 
        <FileSearch Id="CheckFile" Name="Interop.Dependency.dll" /> 
        </DirectorySearch> 
    </Property> 
    <Condition Message="Dependency not found!">DEP_EXISTS</Condition> 
    

    잘 알 수있는대로 작동합니다.