2013-02-22 6 views
0

대상 컴퓨터에 여러 구성 요소를 제공하는 WIX 병합 모듈 (.wxs)을 작성했으며 그 종속성을 제공/설치하는 작업을 what/who/how가 담당하는지 이해하기가 어렵습니다. 이러한 구성 요소.Wix Merge Module .Net 2.0에 대한 의존성 표현하기

각 구성 요소는 .NET 2.0 어셈블리이므로 클라이언트 구성 요소에 .NET 2.0을 설치해야합니다.

병합 모듈에서 이것을 표현/구현하는 방법은 무엇입니까? 1. .NET 2.0에서 어떻게 든 dependecy를 표현할 수 있으며 병합 모듈의 소비자는 필요한 프레임 워크를 제공하고 설치해야합니까? 2. .NET 2.0 병합 모듈에 요구 사항을 추가하고 병합 모듈에 .NET 2.0 병합 모듈을 설치합니까?

도움을 주시면 감사하겠습니다.

답변

0

.NET 2.0 어셈블리는 .NET 2.0, 3.0 또는 3.5 (CLR 2.0) 또는 .NET 4.0/4.5 (CLR 4.0)에 실제로 종속되어있을 수 있습니다. 따라서 .NET 2.0 이상이 필요하다고 말하는 것이 더 정확할 것입니다.

즉, 병합 모듈은 퍼즐의 한 부분 일뿐입니다. 이 표현을 어떻게 디자인 할 것인가는 당신에게 달린 것입니다.

.NET을 설치하는 것은 병합 모듈의 작업이 아닙니다. 사실, 이는 컴퓨터마다 하나의 실행 시퀀스를 시행하는 Windows Installr 뮤텍스 때문에 가능하지 않습니다. 이것은 MSI의 일도 아니라는 것을 의미합니다. 이것은 부트 스트 래퍼와 체인 커가 들어오는 곳입니다.

MSI가 할 수있는 일은 체인저가 작업을했는지 다시 확인하는 것입니다. 이 표현식은 MSI 또는 병합 모듈에서 작성할 수 있습니다.

.NET 검색을 시작하기 위해 AppSearch/Reglocator를 작성하는 것으로 시작하십시오. WiX NetFx 확장 기능은이를 쉽게 이해할 수 있도록 몇 가지 속성을 내장하고 있습니다.

이제 LaunchCondition을 작성합니다. 그러나 WiX에서는 Condition 요소가 병합 모듈에 존재하지 않습니다. MSDN은 MergeModules가 LaunchCondition 테이블을 사용하지 말아야하기 때문입니다. 대신 Type 19 오류 사용자 정의 작업을 작성하고 테이블에 순서 지정합니다.

이제 MSI가 수표를 무시할 수있는 조건을이 수표에 입력 할 수 있습니다. (DOTNETFRAME20FOUND 및 IGNOREDOTNETFRAME20 아님). 실제로이 모든 것을 병합 모듈 (REQUIRESDOTNETFRAME20.msm)에 넣고 동일한 종속성을 공유하는 다중 병합 모듈을 참조 할 수 있습니다 (반복하지 마십시오).

나의 마지막 직장에서 수천 개의 병합 모듈이 서로 다른 조합으로 함께 만들어져 수십 개의 제품이 만들어지는 제품 라인 개발을 수행했습니다. 우리는이 모든 것을 고유 한 모듈로 표현했으며 대개 서비스 패밀리/구성 요소 계층이 아닌 제품 계층에서 연관을 생성했습니다. 비정상적인 의존성이 있었다면 때때로 그렇게했습니다.

+0

잘 생각하고 분명하게 답변 해 주신 것에 대해 많은 감사드립니다. –