문제

나는 심각하게 제한된 환경에서 발전하고 있지만 개발자들도 엄격한 통제력을 가지고 있습니다.

vcredist_x86.exe -4MB 재분배 가능 - 재미는 없습니다 (4 시간 전송). 나는 단지 mfc90.dll, msvcm90.dll, msvcp90.dll 및 msvcr90.dll을 재분배하는 것을 정말로 선호합니다. 하지만, 시각적 C ++ 파일 재분배 말 :

매니페스트없이 구축 된 C/C ++ 응용 프로그램을 재분배하는 것은 지원되지 않습니다. 시각적 C ++ 라이브러리는 C/C ++ 응용 프로그램에서 사용할 수 없습니다. 자세한 내용은 참조하십시오 배포 방법을 선택합니다.

DLL을 프로그램의 작업 디렉토리에 복사하려는 원래 계획은이 용감한 새로운 매니페스트 세계에서 작동하지 않는 것 같습니다.

다음 추측은 파일을 Winsxs 디렉토리에 채우는 데 필요한 레지스트리 항목을 바꾸고 4 메그 프로그램을 사용하지 않고 직접 채우는 것입니다.

편집] 소프트웨어가 자주 업데이트되므로 DLL은 정적 링크에 크게 선호됩니다. [/편집하다

필요한 파일을 성공적으로 배포하지만 오버 헤드를 아래로 유지하려면 어떻게해야합니까?

도움이 되었습니까?

해결책

우리는 이것을 사용합니다 : Howto : vcredist_x86.exe를 설치하지 않고 VC2008 앱을 배포합니다

본질적으로

  • EXE 파일에 매니페스트를 포함하지 마십시오.
  • C ++ DLL 및 해당 매니페스트를 앱 디렉토리에 복사하십시오.
  • 모든 매니페스트 (귀하와 Microsoft)에서 "Public Keytoken"을 제거하십시오.
  • 필요한 경우 Microsoft Manifest 파일과 일치하도록 앱의 매니페스트 파일의 버전 정보를 변경하십시오 (또는 그 반대).

다른 팁

저는 Microsoft의 현재 SXS 관리자입니다

나는 강하게 제안 할 것이다 에 맞서 Manifests에서 PublicKeyToken 속성을 제거합니다. DLL의 개인 배치는이 속성이 그대로 남아 있으면 잘 작동합니다. 그러나 제거하면 종속성이 더 이상 일치하지 않으므로 대상 시스템에 중앙에 설치된 최신 버전의 CRT가있는 경우 보안 업데이트의 혜택을받지 못하게됩니다.

따라서 요약 : 기본값으로 매니페스트를 포함시키는 것이 안전합니다. CRT Manifest + DLL 파일을 편집없이 실행 파일 디렉토리에 직접 복사하십시오. 그게 다야. 호환 Win2k+.

컴파일러 속성 페이지에서 "런타임 라이브러리"설정에 대해 /mt (multithreaded)를 지정하십시오. 이 런타임 라이브러리와 정적으로 연결되므로 재배포 가능을 설치할 필요가 없습니다.

개인 어셈블리로 설치하십시오. 여기를 봐:

http://msdn.microsoft.com/en-us/library/ms235291.aspx

제공된 모든 DLL이 필요하지 않은 경우 DLLS가 필요한 파일 만 참조하여 DLLS를 수정하여 필요한 파일 만 수정할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top