2012-09-17 6 views
8

WiX를 사용하여 DLL을 등록하려고합니다. 이제는 내가 알고 heat을 사용해야하고 레지스트리 정보를 가져와야한다고 이해하지만 열이 다음 오류 메시지와 함께 실패하는 것 같습니다. heat.exe : warning HEAT5150 : Could not harvest data from a file that was expected to be a SelfReg DLL: C:\Users\seb\Desktop\Development\addin.dll. If this file does not support SelfReg you can ignore this warning. Otherwise, this error detail may be helpful to diagnose the failure: Unable to load file: C:\Users\seb\Desktop\Development\addin.dll, error: 193WiX를 사용하여 DLL을 등록 할 수 없습니다.

저는이 둘러 보았고 조금 registering DLLs에 대한 자세한 내용은 가능하지만 가능하면 자체 등록 경로를 피하고 싶습니다. 아래 수동으로 DLL을 직접 등록하는 방법에 대한 언급도 있지만 레지스트리 나 COM 개체에 익숙하지 않은데 CLSID, ProgId 및 기타 언급 된 정보를 얻을 수있는 곳을 잘 알고 있습니다.

누구든지 올바른 방향으로 나를 가리키거나 DLL을 heat을 통해 실행해야 할 필요가 있다고 생각한다면 크게 감사하겠습니다.

답변

1

관리되지 않는/네이티브 DLL입니까? Dependency Walker에 누락 된 종속성이 표시됩니까? 일반적으로 이것은 DllRegisterFunction에 실패했으며 Heat가 데이터를 추출하지 못했음을 의미합니다. 이 문제를 해결하면 훌륭한 XML 메타를 얻을 수 있습니다.

+0

이것은 ATL 6.0을 사용하여 만든 DLL입니다. regserv32를 호출하면 모든 것이 잘로드되고 시스템은이를 인식하지만 지금까지는 항상 SelfReg로로드되었습니다. – Seb

+0

이런 종류의 문제는 해결하기가 까다 롭습니다. DLL을 공유 할 수 있다면 추출 할 수 있습니다. 또한 깨끗한 컴퓨터에서 레지스트리 스냅 샷 도구를 사용하여 regsvr32를 캡처 한 다음 수동으로 wxs로 제작할 수 있습니다. 또는 InstallShield 평가를 사용하여 COM 및 WiX 어둡음을 추출하여 wx로 다시 디 컴파일하십시오. 속임수가 많지만 경험이 필요합니다. –

+0

회사 속성이기 때문에 실제로 DLL을 공유 할 수는 없지만 RegSpy를 사용하려고 시도했으며 약 8 시간 동안 정지되었습니다. 데이터를 꺼내려고하는 것입니다. – Seb

0

Wix와 동일한 문제가 발생했습니다. heat.exe : 경고 HEAT5150 : SelfReg DLL로 예상되는 파일에서 데이터를 수집 할 수 없습니다. 이유는 DLL이로드 종속성을 찾을 수 없습니다. 나는 너에게 비슷한 문제가 있다고 생각한다. 프로세스 모니터 도구를 실행하고 필터를 적용하여 heat.exe 이벤트를 캡처했습니다. 문제의 근본 원인을 찾을 수있었습니다. 기본적으로 필자는 모든 종속 DLL을 메인 DLL이있는 동일한 위치에 두어야했습니다. 귀하의 경우 addin.dll은 귀하의 종속 dll이있는 동일한 위치를 가리켜 야합니다.

다음 경고에 대한 블로그에서 근본 원인을 파악하는 데 많은 도움을 받았습니다.

http://marc.durdin.net/2009/12/case-of-hidden-exception.html?

+1

이것을 설정하는 데 거의 하루를 보낸 후에 나는 여전히 이걸 가지고 아무데도 가지 못했다. 블로그 게시물에 표시된 오류는 대상이 던진 예외에 대해 언급합니다. 제 경우에는 열이 파일을로드 할 수 없다는 예외를 throw합니다. 프로세스 모니터에 나타난 모든 종속성도 추가했습니다. 아직도 나는 오류가 발생합니다. 어쩌면 나는이 DLL을 스스로 등록하는 것으로 막 붙어있다. – Seb

11

나는 이것이 오래되었다는 것을 알고 있지만 여기에 답변을 추가하고 싶습니다. 등록하려고하는 dll이 64 비트 dll이기 때문에이 문제가 발생합니다. 그리고 Heat.exe는 32 비트이므로 dll을로드 할 수 없습니다. 그것의 주소 공간. 어쨌든, wxs 파일을 생성하기 위해 dll의 32 비트 버전을 가리키면 오류가 발생하지 않아야합니다.

관련 문제