2013-04-17 1 views
1

4 개의 .net com interop dll을 가진 Installshield Project에서 작업하고 있습니다..net에 com interop dll을 등록하십시오.

  • 어셈블리를 등록하는 데 C:\Windows\Microsoft.NET\Framework\v4.0.30319\Regasm.exe /tlb myassembly.dll /codebase 명령을 사용했습니다.
  • 내 질문은 VS2010이 컴퓨터에 설치되었을 때 설치 프로그램이 올바르게 작동한다는 것입니다. 그러나 VS2010이 컴퓨터에 설치되어 있지 않으면 dot net Framework 만 설치되고 Installer는 을 제대로 처리하지 못하고 " 시스템 레지스트리에 개체를 입력하십시오"라는 오류가 발생합니다.
  • 문제의 원인을 알려주시겠습니까?
+0

빌드시에 installshield에서 COM 정보를 추출하지 않는 이유는 무엇입니까? – NGaida

+0

나는 그것을 시도했지만 작동하지 않았다. – vsoni

답변

2

COM 추출시 빌드는 비 관리 DLL 용입니다. .NET COM Interop 속성은 COM Visible입니다. 이로 인해 InstallShield는 빌드 프로세스 중에 regasm/regfile을 수행하고 레지스트리 테이블에 결과를 수집합니다. 설치 중에 레지스트리는 Regasm에 대한 프로세스를 호출 할 필요없이 작성됩니다.

MSDN의 Regasm에/regfile에 대해 사용자 등록 코드를 실행/캡처하지 않는다는 메모가 있습니다. 이 프로세스가 아직 충분하지 않은 경우 InstallWatch와 같은 도구를 사용하여 레지스트리 전후에 캡처 및/또는 diff를 수행하여 '누락 된 항목'을 관찰 한 다음 InstallShield에서 레지스트리보기로 작성하십시오. 다시 빌드하고 VM을 재설정 한 다음 작동 할 때까지 헹구십시오.

0

"C : \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Regasm.exe/tlb myassembly.dll/codebase"는 대상 컴퓨터에 .NET 4.0 이상이 설치된 경우에만 작동합니다. 2.0.5077 폴더는 RegAsm.exe를 실행 이전 .NET 버전 : "C : \ WINDOWS \ Microsoft.NET 프레임 워크 \ \ v2.0.5077 \는 RegAsm.exe/TLB MyAssembly.dll을/코드베이스"

볼 레지스트리 HKLM \ Software \ Microsoft.NET Framework \ 자세한 정보 또는 설치된 .NET 버전

관련 문제