우리는 InstallShield를 사용하여 매우 유사한 여러 제품의 설치 프로그램을 빌드합니다. 각 제품은 공급 업체 디렉토리 아래의 고정 디렉토리에 파일을 공유합니다. 우리는 설치 프로그램이 처리해야하는 DLL 지옥 문제가 있습니다.InstallShield로 DLL 지옥을 진단/관리하는 방법은 무엇입니까?
제품 A와 B는 모두 파일 FOO가 있고 디렉토리 D에 설치되어 있다고 가정합니다. FOO는 반드시 DLL 일 필요는 없습니다. 모든 파일이 될 수 있습니다.
FOO의 두 복사본은 동일하며 두 제품을 모두 설치하면 FOO가 D에서 덮어 쓰여지고 모든 것이 정상입니다. 모든 것이 동일 할 때 그것이 작동하는 것처럼 보입니다.
실제로 A와 B는 서로 다른 세대에서 나올 수 있으므로 실제로 A는 FOO 변형 A (FOO_a)를 가지며 B는 변형 FOO_b를 갖습니다. 두 제품이 모두 설치되면 FOO_a 또는 FOO_b 중 하나만 D에 끝나게됩니다. 따라서 잘못된 파일이 있기 때문에 A 또는 B 중 하나가 혼동됩니다.
설치 관리자 (및 InstallShield)에서 예상 한 것은 시스템에 설치된 각 제품 P에 대해 참조 카운터가 설치된 각 파일에 대한 레지스트리 (어딘가)에 보관된다는 것입니다. 따라서 A가 설치되고 FOO (_a)가 배치되면 FOO는 A에 속하는 것으로 표시되고 참조 수는 1로 설정됩니다. B가 FOO_a와 동일한 FOO_b와 함께 설치되면 FOO는 B에도 속한 것으로 표시되어야합니다 , 그리고 증가 된 참조 카운트. B가 설치되어 있고 FOO_b가 FOO_a와 다른 경우 설치 프로그램이 호환되지 않는 파일 FOO가 설치 제안으로 제안되고 설치가 중단되어야한다고 불평 할 것으로 예상됩니다. 제품을 설치 제거 할 때마다 설치된 각 파일에 대한 참조 카운터가 감소되고 참조 파일 수가 0 일 때만 설치된 파일이 제거됩니다.
그건 InstallShield가하는 것처럼 보이지 않습니다. 설치하는 동안 FOO를 대상 디렉토리로 분쇄합니다. 이것은 실제로 DLL 지옥과 같은 것입니다. 이것이 설치 관리자의 의도 된 동작입니까? InstallShield? Windows의?
우리는 InstallShield에서이 문제를 관리하도록 요청했지만 아무것도 찾을 수 없다고 생각했습니다. 나는 이것을 올바르게 구성하기 위해 어디에서 누군가를 찾아야하는지 기뻐할 것입니다. 또는 InstallShield가이를 수행 할 수 없거나하지 않을 것인가? [그렇다면 왜 내가 돈을주는거야?]
InstallScript, Windows Installer를 사용하는 프로젝트 유형은 무엇입니까? 이는 모범 사례와 예상되는 행동에 대한 토론을 설정하는 데 중요합니다. 또한 InstallShield가 돈을 받고 마술처럼 일하는 것에 비난하는 것은 비생산적인 것이라고 생각합니다. 이 문제를 올바르게 해결하려면 몇 가지 생각과 노력이 필요합니다. (나는 XML 파일에 대해 what-ifs로 마음을 날릴 수있다.) –
나는 실제 일하는 사람이 아니기 때문에 나중에 "어떤 유형을 사용하고 있는가"를 수집해야 할 것이다. 나는 InstallShield를 비난하지 않는다; IF에 주목하십시오. 실제로 묻히는 질문은 그것을 할 수있는 방법이 있다고 가정하고, 나는 이것을 InstallShield에 원한다고 설명하는 부분에 대한 확인과 힌트를 요구하고 있습니다. –
이것은 패키지 관리자가 존재하는 이유입니다 ... 바보 같은 Windows는 이전에 주석을 넣으려고 – alternative