2014-10-02 25 views
1

필자의 프로젝트는 64 비트 (64 비트가 아닌)이지만 특별히 64 비트입니다. 모든 dll은 64 비트입니다. 대부분이 관리되는 코드 (C#)이고 일부 파일은 관리되지 않는 파일 (C++ 코드)입니다.Framework/Framework64 and System32/Syswow64

Installshield에서 설치 프로그램을 만들고 DLL을 등록해야합니다. 나는 혼란스럽게 많은 것을 온라인으로 읽었다.

  • regsvr32 -> 내 C++ dll을 등록하려면 regsvr32.exe를 사용해야합니까? System32 또는 Syswow64.
  • regasm -> 내 C# dll을 등록하려면 어떤 regasm을 사용해야합니까? 프레임 워크/64 비트 시스템에 framework64
+0

Syswow64 regsvr32가 작동해야합니다. 관리자 권한으로 실행해야 할 수도 있습니다. 나는 대개 VS Developer 명령 프롬프트를 사용합니다. [여기] (http://stackoverflow.com/questions/1163503/what-is-difference-bw-regasm-exe-and-regsvr32-how-to-generate-a-tlb-file-usi)에 링크입니다 regsvr32와 Regasm의 차이점 – alykins

+0

하지만 Syswow64는 32 비트 DLL을 등록하는 링크 중 하나입니다. 명명 규칙이 엉망입니다. –

+0

시도해 보셨습니까? – alykins

답변

3

는 64 비트 어플리케이션 볼 같이

  • SYSTEM32는 :
  • SysWOW64와 64 비트 시스템 파일을 포함 (32)를 포함 비트 시스템 파일

32 비트 응용 프로그램에서 볼 때 64 비트 시스템의 경우 :

  • system32를 : 일반적으로 syswow64로 리디렉션, 그래서 32 비트 시스템 파일에 액세스
  • SysNative : 실제 SYSTEM32로 리디렉션; 사용할 파일 시스템 리디렉션, 64 비트 파일을 64 비트 시스템에서

액세스 (참조 IntallScript의 WOW64FSREDIRECTION 또는 Windows의 Wow64DisableWow64FsRedirection)는 System32 폴더에 대한 경로가 일어날 경우, 64 비트 파일에 액세스합니다 .

Regasm은이 위치에 없습니다. 대신 32 비트 빌드는 Windows\Microsoft.NET\Framework\<version>이고, 64 비트 빌드는 Windows\Microsoft.NET\Framework64\<version>입니다. 이상한 폴더 이름은 없지만 시스템 폴더는 아닙니다.

참고 : 파일을 등록하려면 올바른 비트 니스 및 올바른 응용 프로그램이 필요합니다. 또한 Windows Installer 패키지 (예 : 기본 MSI 프로젝트)를 만드는 경우 설치시 다음과 같은 도구를 호출해서는 안됩니다. 대신 네이티브 DLL의 경우 COM 추출, 관리되는 어셈블리의 COM Interop 등의 빌드 타임 도구를 사용하여 자체 등록을 MSI 데이터로 전환해야합니다. 구성 요소의 64 비트 설정을 올바르게 표시하고 나머지는 InstallShield가 처리해야합니다.

+0

+1 스텔라 답변 – alykins