문제

프로그램이 시작될 때 클라이언트 컴퓨터에 어떤 버전의 BPL(예: Rtl70.BPL, Indy70.bpl 등)이 설치되어 있는지 확인할 수 있습니까?

컴퓨터의 BPL이 빌드 시스템의 BPL과 다르기 때문에 일부 프로그램이 충돌하는 경우가 있었습니다.
각 업데이트마다 설치 프로그램에 사용된 각 BPL을 추가해야 한다면 사용 시 포인트 중 하나가 무효화될 것이라고 생각합니다.

델파이 7, 변화가 있다면


내가 가진 문제에 대한 후속 조치입니다.
rtl70.bpl 파일은 빌드 컴퓨터와 클라이언트 간에 약간만 달랐습니다.

클라이언트 컴퓨터:7.0.4.453 760KB(778,240바이트) 2002년 8월 20일 화요일 오후 4:40:26
컴퓨터 구축:7.0.4.453 760KB (778,240바이트) ‎금요일, ‎9 ‎8월 ‎2002, ‏‎오후 11:30:00

내가 사용하고 있던 업데이터는 그것들을 동일하다고 무시했지만(빌드 번호는 변경되지 않음), 파일을 수동으로 삭제하고 복사하면 모든 것이 작동하는 것처럼 보였습니다.

도움이 되었습니까?

해결책

불행하게도.애플리케이션에 필요한 .bpl 파일에서 가져오기가 누락되어 충돌이 발생한 경우 충돌이 발생한 실행 파일 자체 내에서 해당 패키지를 확인할 수 있는 방법이 없습니다(Delphi RTL 및 링커 자체를 다시 작성하는 것 외에는).PatrickvL의 솔루션이 아마도 귀하의 상황에 가장 적합할 것입니다.

Neftalí의 솔루션은 옵션일 수 있습니다. 물론 RTL을 패키징하고 많은 파일을 복제하며 애초에 패키지를 갖는 요점 중 하나를 잃는 비용이 듭니다.그러나 개인 DLL을 사용하는 경우(예: 개인 바이너리 디렉터리에 DLL을 복사하는 경우) 실행 파일과 이름은 같지만 확장자를 추가하는 빈 파일도 만들어야 합니다. .현지의 그것에, 즉~을 위한 메모장.exe 당신은 notepad.exe.local.보다 DLL 리디렉션에 대한 Raymond Chen의 기사 상세 사항은.

다른 팁

프로그램이 충돌하는 경우 동적으로 연결된 라이브러리를 로드할 수 없기 때문일 수 있습니다.(말씀하신 대로, 이는 시스템이 검색 경로 어디에서나 필요한 라이브러리의 복사본을 찾을 수 없을 때 발생합니다.)

문제는 이것이 Windows OS가 호출된 API를 통해 수행하는 애플리케이션 시작 시 발생한다는 것입니다. 맵앤로드 (또한 읽어보세요 이것).이 API는 애플리케이션이 시작되기도 전에 호출되므로 이를 가로챌 방법이 없습니다.

제가 드릴 수 있는 한 가지 제안은 런처를 사용하는 것입니다(/no/ 라이브러리가 전혀 없을 때 발생하는 문제를 방지하기 위해 정적으로 링크되어야 함).이 런처는 실제 애플리케이션을 검사하고, 필요한 가져오기가 무엇인지 확인하고, 환경을 확인하고, 사용자에게 멋진 실패/문제 해결 제안 대화 상자를 표시할 수 있습니다.

프로그램이 시작될 때 클라이언트 컴퓨터에 어떤 버전의 BPL(예: Rtl70.BPL, Indy70.bpl 등)이 설치되어 있는지 확인할 수 있습니까?컴퓨터의 BPL이 빌드 시스템의 BPL과 다르기 때문에 일부 프로그램이 충돌하는 경우가 있었습니다.각 업데이트마다 설치 프로그램에 사용된 각 BPL을 추가해야 한다면 사용에 대한 요점 중 하나를 무효화할 것이라고 생각합니다.

BPL(RTL70.bpl, INDY.BPL,...)의 복사본(개발)을 응용 프로그램을 설치한 것과 동일한 디렉터리에 설치해야 합니다.애플리케이션은 먼저 동일한 디렉터리에서 BPL을 검색한 다음 경로 내부 디렉터리에서 검색합니다.부정적인 점은 시스템이 동일한 BPL의 여러 복사본을 가질 수 있다는 것이고, 긍정적인 점은 동일한 파일의 다른 버전에 문제가 없다는 것입니다.

문안 인사.

PD:내 영어가 서툴러서 실례합니다.

이러한 bpl을 사용하는 실행 파일에서는 이를 수행할 수 없지만 bpl을 확인한 다음 기본 실행 파일을 호출하는 작은 시작 프로그램이 있을 수 있습니다.

때때로 Delphi는 다음과 같은 자동 형식을 추가합니다.
{$R ' *.res'}
프로젝트 또는 패키지 파일에.

해당 줄을 주석 처리(//)하고 다시 컴파일합니다.

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