Wix 설치 중에 COM에 등록하고 싶은 COM 라이브러리가 있습니다.
처음에는 heat
명령을 사용하여 정보를 수집하려고했지만 해당 .dll에서 아무것도 수집하지 않았습니다. 그런 다음 내 라이브러리가 잘못되었다고 생각하고 다음 regsvr32
과 같은 명령을 사용하여 수동으로 설치하려고 했습니다.
regsvr32.exe /s "RouteToMyLibrary/MyLibrary.dll"
그리고 올바르게 설치되었습니다 ...
그런 다음 CustomAction
수확 대신 .dll을 사용하여 설치하기로 결정했습니다 .
그래서 다음과 같이 썼습니다 CustomAction
.
<CustomAction Id="RegisterCOMLibrary"
Directory"DirIdOfWhereMyComLibraryIsLocated"
ExeCommand='regsvr32.exe /s "[DirIdOfWhereMyComLibraryIsLocated]MyLibrary.dll"'></CustomAction>
<InstallExecuteSequence>
<Custom Action="RegisterCOMLibrary" After="InstallFinalize">NOT Installed</Custom>
</InstallExecuteSequence>
그러나 설치 프로그램을 실행하면 1722 오류가 발생합니다.
다음 log.txt
과 같이 작성하는 설치 프로그램을 실행합니다 .
msiexec /i MyInstaller.msi /l*v log.txt
그리고 저는 1722 년의 실수를 볼 수 있습니다. 노트:
regsvr32
로그 에서 명령을 추출하여 실행하려고 하면 COM 라이브러리가 등록 됩니다.내가 뭘 잘못하고 있는지, Wix의 자동화 된 CustomAction을 사용하여 .dll을 등록 할 수없는 이유에 대한 아이디어가 있습니까?
참고 : 내가 할 heat file mylibrary.dll -out mylibrary.wxs
때 다음과 같이 말합니다.
Could not harvest data from a file that was expected to be a SelfReg DLL...
COM dll에 문제가 있거나 heat.exe를 통해로드되지 못하게하는 종속성이 부족한 것 같습니다. 도움이 될 수있는 두 가지 도구 : 종속성 워커와 regspy :
RegSpy (Phil Wilson 등의 프리웨어, Stefan Kruger의 http://installsite.org/ . 도구 페이지 에서 다운로드 ) :
Dependency Walker (Steve Miller의 프리웨어) :
먼저 RegSpy를 시도하여 dll에서 com 데이터를 추출 할 수 있는지 확인하십시오. 이것이 작동하지 않으면 Dependency Walker를 사용하여 dll이로드되지 않도록하는 누락 된 종속성이 있는지 확인하십시오. 이들은 다른 dll 또는 리소스 전용 (때로는 이미지 포함) 인 이미지 또는 언어 dll과 같은 리소스 파일 일 수도 있습니다.
이 두 도구를 실행 한 결과에 따라 dll에서 무언가를 수정하거나 모든 종속성이있는 com 데이터 추출을 올바르게 수행해야 할 수 있습니다.
일부 COM 파일 은 TCP / IP의 네트워크 매개 변수를 변경하거나 신이 다른 것을 아는 것과 같이 등록하는 동안 정말 미친 짓을 합니다. 보기 드물지만 COM 구성 요소의 심각한 설계 오류입니다. RegSpy는 이것을 드러 낼 수 있지만 대부분의 경우 응용 프로그램을 다시 패키징하면 나타납니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다