2010-07-12 3 views
1

우리는 다음을 포함하는 많은 제품군을 보유하고 있습니다.VS 설치 프로젝트를 사용하여 32 비트 또는 64 비트 Windows에서 "Any CPU"코드를 올바르게 설치하려면 어떻게합니까?

  • VB6로 작성된 데스크톱 응용 프로그램.
  • .NET으로 작성된 데스크톱 응용 프로그램.
  • .NET으로 작성된 Windows 서비스.
  • .NET으로 작성된 ASP.NET 웹 앱.
  • .NET으로 작성된 ASMX 및 WCF 서비스.

모든 .NET 코드는 .NET 3.5 및 "Any CPU"를 대상으로 VS2008로 작성되었습니다. 특정 프로세서를 대상으로 할 수는 있지만 종속성 트리에서 문제가 더 심해지므로 선호하지는 않습니다. 나중에 옵션이 될지라도, 우리는 아직 .NET 4.0으로 옮길만한 위치에 있지 않습니다.

모든 응용 프로그램은 몇 가지 중요한 레지스트리 키를 공유합니다. 우리는 .NET 코드가 항상 32 비트 레지스트리보기를 보도록함으로써 레지스트리 리디렉션 문제를 해결했습니다.

일부 .NET 코드는 COM interop을 통해 VB6 DLL과 통신하지만 이는 매우 제한적이며이 종속성을 쉽게 제거 할 수 있습니다 (주석 달기, .NET에서 나중에 다시 작성하십시오).

모든 웹 응용 프로그램과 서비스는 IIS에서 호스팅되도록 설계되었습니다. 5.1 이후의 모든 버전을 지원해야합니다.

빌드 VM은 현재 Windows XP (32 비트)를 실행 중입니다. 필요한 경우 새로 만들 수 있습니다.

나의 임무는 모든 것이 64 비트 Windows (모든 버전)에서 문제없이 실행되는지 확인하는 것입니다. 현재 .NET 설치 프로젝트에 문제가 있습니다.이 프로젝트는 모두 VS2008 설치 프로젝트 템플릿을 사용하여 작성됩니다.

소스 코드가 모든 CPU이지만 설치 프로젝트에는이 기능이 없습니다. 하나의 프로세서에 TargetPlatform 속성을 설정해야합니다. 이것은별로 유용하지 않습니다. 32 비트 O/S에서는 32 비트로, 64 비트 O/S에서는 64 비트로 설치되는 setup.exe을 사용할 수 있습니까? 앱을 설치하는 최종 사용자 인 경우 어떤 설치 프로그램을 실행할 것인지 알 수 없습니다.

답변

1

이후 VS2010 설치 프로젝트, WiX 및 InstallShield를 조사했으며 모두 동일한 방식으로 작동합니다. 나는이 질문을 "불가능하다"라고 써야 할 것입니다. 나는 다음 중 하나를 수행하려고합니다 :

  • 별도의 32 비트 및 64 비트 설치 프로그램을 제공하십시오.
  • 별도의 로더 배치 파일이나 exe를 작성하여 비트를 감지하고 적절한 설치 프로그램을 실행하십시오.
0

32 비트 또는 64 비트 DLL을 포함하여 런타임에로드 할 DLL을 결정하는 앱이 있습니다. 나는 이것을 달성하기 위해 나의 오랜 친구 인 setup2go와 끝났다. 64 비트 DLL을 x86 설치 프로그램으로 가져올 수 없다하더라도 x64로 변경하지 않는 한 원하는 것은 아니지만 64 비트 DLL이 약간의 공간을 차지하지만 아무런 해를 입지 않는 32 비트 시스템에도 설치해야합니다 .

그래서 Google setup2go 만 가능합니다. 아마도 MSI가 아닙니다.