문제

vs 2008 설정 및 배포 프로젝트를 사용하여 혼합 관리 / 관리되지 않은 응용 프로그램을 배포하고 있습니다. 내장 등록 속성 ( "vsdracom"열거 된 "등록"속성의 값을 사용하는 값을 사용하여 Mixed-Mode DLL을 등록하는 데 어려움을 겪었습니다. 해결 방법으로 .NET 사용자 정의 설치 어셈블리를 추가했습니다 (클래스와 함께. System.configuration.install.installer에서 파생됩니다.) 해당 클래스가 실행 중이며 여러 조작이 해당 어셈블리의 코드를 통해 여러 작업이 DLL (UN) 레지스터 서버 진입 점을 포함하여 여러 조립품을 성공적으로 설치하고 제거 할 것입니다. .

그러나 하나의 DLL이 성공적으로 등록되지 않습니다. GAC에 설치하려는 일부 제 3 자 재배포 가능한 어셈블리에 의존하는 유일한 DLL입니다. VS 2008의 설정 및 배포 프로젝트에 대한 내장 지원 덕분에 Assemblies가 GAC에 설치되어 있으며, 그것이 효과가 있다는 것을 알고 있습니다. 설치자가 GAC 설치를 실행하기 전에 사용자 정의 작업이 실행되고 있음을 확인했습니다.

아휴. 제 질문은 사용자 정의 작업을 실행하기 전에 설치 프로그램이 GAC 설치를 실행하도록 강요하는 방법이 있습니까? 사용자 지정 조치의 "조건"속성을 사용하여이를 수행하는 방법이 있습니까? 그렇지 않다면 내 최고의 대안은 무엇입니까? DLL에서 레지스트리 항목을 캡처하고 설치자의 레지스트리 설정에 추가합니다 (누군가가 향후 새 COM 서버를 클래스에 추가 할 수 있기 때문에 마음에 들지 않습니까)? .NET 코드를 사용하여 어셈블리를 GAC에 수동으로 설치하십시오 (아직 어떻게 해야하는지 모르겠다)?

감사,

데이브

도움이 되었습니까?

해결책

Visual Studio에서 만들 수있는 설정 프로젝트는 매우 제한적입니다. 사용자 정의 작업을 4 점으로 예약 할 수 있습니다. 그러나 MSI를 사용하면 프로세스의 어느 시점에서나 사용자 정의 작업을 예약 할 수 있습니다.

첫 번째 솔루션은 Visual Studio 2008 사용을 설정 개발 도구로 중지하는 것입니다. Visual Studio 팀은 설치의 모든 복잡성을 추상화하려고 노력했습니다. 그러나 그 과정에서 그들은 또한 MSI의 모든 유연성을 제거했습니다. Wix, InstallShield 또는 Wise는 간단한 설치를 제외하고는 훨씬 더 나은 제품입니다. 설치를 위해 Visual Studio를 사용하기 시작했고 결국 너무 많은 작업이되었습니다. 구현해야 할 해결 방법이 하나 더 있었고 부작용을 처리해야했습니다.

기술을 전환 할 수없는 경우 결과 MSI 파일을 수동으로 수정하는 방법을 배워야합니다. 귀하의 경우 InstallexeCutesequence 테이블을 수정해야합니다. http://msdn.microsoft.com/en-us/library/a369500(vs.85).aspx. Orca를 통해 수동으로 할 수 있습니다. http://msdn.microsoft.com/en-us/library/aa370557(vs.85).aspx 또는 MSI API를 통해 http://msdn.microsoft.com/en-us/library/aa372860(vs.85).aspx. ORCA를 다운로드하고 설치에 대해 유효성 검사 스크립트를 실행하십시오. 스크립트는 수정이 고객 기계에 배포 할 때 수많은 시간을 절약 할 수있는 수많은 문제를 지적합니다.

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