2012-05-11 3 views
0

이전 installshield 응용 프로그램을 리팩토링 중이며 사용자 정의 dll에서 함수를 호출하는 작업을 수행해야합니다. 불행하게도이 작업이 수행하는 기능은 다른 사용자 지정 dll에 따라 다릅니다. 그래서 내 질문은 다음과 같습니다 "사용자 정의 dll을 다른 사용자 정의 dll에 종속시킬 수 있습니까?InstallShield는 다른 사용자 정의 DLL의 사용자 정의 dll을 사용합니다.

설치 프로그램을 실행하려고하면 "설치가 완료되기 전에 중단되었습니다 ..."라는 오류가 발생하여 충돌합니다. 그런 다음 두 번째 사용자 지정 dll을 PATH에 추가 한 폴더에 복사했는데 모든 것이 정상적으로 진행되었습니다. 물론 나는 내 고객이 직접 그렇게 할 수는 없다고 생각합니다.

저는 Installshield 2008을 사용하고 있지만 내 질문에 대한 대답은 모든 버전에서 동일하다고 생각합니다.

편집 : 의 내가하는 기능을 가지고 A.DLL 있다고 가정 해 봅시다 :

UINT __stdcall 
PerformAction(MSIHANDLE hInstall) // IN 
{ 
    ... 
    help(); 
    ... 
} 

도움() B.DLL에 정의를 같은 어쩌면 내 질문에 충분히 내가 예를 줄 것이다 분명하지 않다. 이제 새로운 액션을 만들 때 dll을 a.dll로 설정하고 PerformAction으로 함수 이름을 지정하지만 b.dll에 따라 다르다는 것을 나타내는 방법이 없습니다 b.dll을 PATH에 포함 된 폴더로 복사하면 설치 관리자는 정상적으로 작동하지만 실패하지 않으면 실패합니다.

답변

1

가장 쉬운 InstallShield 접근법은 바이너리 테이블 항목 대신 또는 추가로 지원 파일을 사용하는 것입니다. Windows Installer는 사용자 지정 동작에 대해 하나의 DLL 만 추출하지만 SUPPORTDIR에서 파일을 참조하는 경우 둘 이상의 DLL을 사용할 수 있습니다.

+0

SUPPORTDIR에서 파일을 사용하려면 어떻게 install shield에 지시합니까? 내가 설명한 경우에 대한 예제를 줄 수 있습니까 –

+0

InstallShield는 SUPPORTDIR에 파일을 추출하고 디렉토리 경로와 같은 이름의 속성 (MsiGetProperty 사용)을 설정합니다. 거기에서 LoadLibrary()를 사용하여 DLL을 메모리로로드 할 수 있습니다. –

관련 문제