문제

VS Installer를 사용하여 VB6 앱을위한 설정 패키지를 작성하고 있습니다. 그리고 문제는 프로젝트 탐색기 아래에 내 EXE 파일에 첨부 된 종속성 목록이 있음을 알 수 있습니다.

Alt Text http://img505.imageshack.us/img505/9696/croppercapture259lr8.png

대상 Machine TreeView의 파일 시스템에서 실제로 DLL/OCX를 폴더 또는 Windows 시스템 폴더 자체 [왼쪽 창]에 저장할 수 있습니다.

Alt Text http://img101.imageshack.us/img101/9224/croppercapture251qm1.png

그래서 내가 이해하지 못하는 것은 .. 실제로 차이가 있습니까? 종속성을 방금 설정하고 폴더에 DLL 또는 OCX를 추가하지 않았거나 SYS 폴더에 DLL도 자동으로 복사됩니까?

도움이 되었습니까?

해결책

소프트웨어가 설치되고있는 시스템에 모든 DLL이 존재한다는 것은 보장되지 않습니다. 따라서 설치 프로그램에 포함되어야합니다. 거기에서 두 가지 선택이 있습니다.

Windows 시스템 폴더 또는 응용 프로그램 폴더에 설치할 수 있습니다. 차이점은 애플리케이션 폴더에 설치하면 XP 및 Vista에서 다른 버전의 구성 요소가있는 다른 버전의 소프트웨어를 나란히 실행할 수 있도록 설정할 수 있다는 것입니다. 시스템 폴더에 설치하면 이전 버전의 구성 요소에 의존하는 이전 버전이 나뉩니다.

구성 요소가 업데이트 할 수없는 다른 구성 요소에 의존하는 경우 응용 프로그램 폴더에 설치하는 경우는 거의 작동하지 않습니다. 이것이 발생하면 일반적으로 Microsoft 라이브러리와 함께합니다. 그들은이 문제에 대해 수년에 걸쳐 더 나아졌습니다.

나란히 실행과 관련된 문제에 대해 더 많이 읽을 수 있습니다. 여기

마지막으로 종속성은 Windows 레지스트리에 등록되도록 설치 프로그램에 있어야합니다. 대부분의 .NET 어셈블리와 달리 모든 ActiveX/COM 응용 프로그램에는 CreateObject 및 변형 유형을 사용하여 액세스하기 위해 사용하려면 구성 요소를 등록해야합니다.

나는 전체 과정이 특이하다는 것을 인정할 것이며 DLL Hell에 관한 이야기의 출처 중 하나입니다. MSDN 기사로 시작하여 Wikipedia를 사용하고 물론 여기에서 추가 질문을하십시오.

다른 팁

일반적으로 일반 설치 프로그램 패키지의 앱 폴더 아래에 "DLLS"폴더가 없어야하지만 많은 요인이 포함되어 있어야합니다 (개인 표준 DLL, Reg-Free Com 등). 예, 의존성이 포함됩니다 (귀하가 아닌 한 들어오지 못하게 하다 그들을). 그들은 각각 대상 시스템에 설치 한 위치를 결정하는 속성이 있어야합니다.

또한 해당 목록에는 OS 의존 시스템 구성 요소, MDAC 구성 요소이거나 Redist 용 라이센스가없는 (예 : FM20.dll) 이므로이 방식으로 재분배 할 수없는 여러 구성 요소가 있습니다.

안타깝게도 이것은 사용자 시스템을 위해 DLL 지옥으로 직접 이어질 수있는 패키지 유형의 예입니다. 이를 수정한다는 것은 MS KB 기사의 모든 MS 구성 요소를 연구하여 무엇을 재배포 할 수 있는지 또는 방법을 결정할 수 있습니다.

배포는 올바르게 얻는 지저분한 사업이 될 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top