2010-12-10 8 views
2

제 클라이언트의 컴퓨터에 설치해야하는 타사 .DLL에 대한 업데이트가 있습니다. 현재 Visual Studio 2010에서 만든 MSI를 통한 자동화 된 설치를 사용합니다.Visual Studio 설치 프로젝트 - 강제로 .DLL을 설치 하시겠습니까?

불행히도 타사 .DLL의 버전이 잘못 지정되었으며 공급자의 파일 버전이 증가하지 않았습니다 (어셈블리 버전 만 증가). 타사 공급자는 Microsoft이므로 문제를 해결하기 위해 기다리는 것이 현실적이지 않습니다. 이제 새로운 .DLL을 한 사람의 MSI 업데이트 내에서 사람들에게 제공해야합니다. 현재 MSI 업데이트가 .DLL을 재정의하지 않습니다.

VS2010 설치 프로젝트 내에서 파일 버전이 일치해도 .DLL을 강제로 대체하는 방법이 있습니까?

답변

1

msi postbuild를 조정하려는 경우 파일 테이블을 누르고 "버전 거짓"을 수행 할 수 있습니다. 또 다른 생각은 설치에 DLL을 넣지 않는 것입니다. 부트 스트 래퍼에 넣거나 직접 설치 프로그램을 만들고 버전 규칙을 위해 OMUS 대신 AMUS를 사용할 수있는 Microsoft의 설치 프로그램 (있는 경우)을 찾으십시오.

+0

.DLL을 패키지에 포함 할 수 없습니다. MSM은 작동하지 않으며 어쨌든 스위치 설치 매개 변수를 변경할 수 없습니다. 자동 업데이트 코드가 이미 필드에서 실행 중입니다. 실행될 때 기본적으로 자동 업그레이드를 수행하는 명령 줄을 사용하여 실행됩니다. "버전 거짓말"에 대해 자세히 설명해 주시겠습니까? – Igorek

+0

Version Lying은 파일 테이블을 업데이트하여 MSI가 최신 버전을 가지고 있다고 생각하도록 트릭합니다. 작은 문제가 있지만 기본적으로 단일 구성 요소에 대해 항상 덮어 쓰기를 제공합니다. 진정한 해결책은 리소스를 사용하여 적절한 SCM 관행을 따르는 것입니다 (예, 슬픈 MS가 여기에 대해 이야기하고 있습니다.). –

+0

더 많은 것을 고맙게 생각하지만 프로그래밍 방식으로 버전을 전환하는 문제에 접근하는 방법을 잘 모르겠습니다. Google은별로 도움이되지 않았습니다. 이 문제를 어떻게 해결할 지에 대한 몇 가지 지침이있는 링크를 제공 할 수 있습니까? 감사합니다 – Igorek

0

파일을 설치자에게 '파일'로 추가하고 다른 파일과 함께 설치할 수 없습니까? 이를 프로젝트 출력 또는 준비된 설치 조치로 설정하지 마십시오. 파일 부분으로 가서 "Application Files"폴더를 마우스 오른쪽 버튼으로 클릭하고> 파일 추가라고 말하십시오. 원하는 파일을 탐색하여 선택하십시오.

+0

아니요. MSI에는 파일 버전 (AssemblyFileVersion)으로 보이는 파일 비용 지정이라는 프로세스가 있으며 AssemblyVersion 특성이 아닙니다. DLL의 이전 버전과 새 버전의 버전 번호가 같으면 MSI는 버전 번호가 다를지라도 덮어 쓰지 않습니다. –

+0

파일을 복사하도록 명시 적으로 지정하셨습니까? 사용자 지정 설치 관리자 클래스를 만들고 MSI에서 만든 임시 폴더에서 dll을 복사 한 다음 복사 한 후에 삭제할 수 있습니까? .....하지만 지금은 그 칙칙한 느낌을 받고있어 ..... –

+0

파일을 일반 파일로 패키지에 넣고 출력에서 ​​제외했습니다. 이전 버전에 배포되지 않았습니다. – Igorek

관련 문제