.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)에 넣고 동일한 종속성을 공유하는 다중 병합 모듈을 참조 할 수 있습니다 (반복하지 마십시오).
나의 마지막 직장에서 수천 개의 병합 모듈이 서로 다른 조합으로 함께 만들어져 수십 개의 제품이 만들어지는 제품 라인 개발을 수행했습니다. 우리는이 모든 것을 고유 한 모듈로 표현했으며 대개 서비스 패밀리/구성 요소 계층이 아닌 제품 계층에서 연관을 생성했습니다. 비정상적인 의존성이 있었다면 때때로 그렇게했습니다.
잘 생각하고 분명하게 답변 해 주신 것에 대해 많은 감사드립니다. –