나는 런타임에 적절한 DLL이 사용되도록 (32 비트 OS에서 x86 dll을 사용하는 등) OS를 테스트하고 DLL을 돌아 다니는 런처 앱을 사용합니다. 런처의 논리는 매우 간단합니다. 뭔가 같은 : 물론
If IntPtr.Size = 8 Then
'-- Copy x64 DLLs into position
Else
'-- Copy x86 DLLs into position
End If
, 복사, 당신은 항상 (휴대용 애플리케이션의 경우) x64 및 86 사이를 전환 할 수 있도록 다시 복사해야 할 때. 그러나 이식성이없는 응용 프로그램을 설치하는 경우 설치 관리자에서이 OS 검사를 모두 수행 할 수 있으므로 실행 프로그램이 필요하지 않습니다. 따라서 적절한 DLL 만 설치됩니다. Visual Studio 설치 프로젝트에서는 x64 및 x86 구성 요소를 하나의 설치 관리자에 혼합 할 수 없기 때문에이 작업을 허용하지 않지만 InstallShield에서는 허용합니다 (사용중인 작업).
프로젝트 파일을 편집하여 문제의 DLL이 아닌 특정 버전을 사용해야합니다 (그렇지 않으면이 이동 및 조건부 설치 논리로 원하는대로 수행 할 수 없습니다).