문제

WIX에서 언제 구성 요소 가이드를 변경하거나 변경하지 않아야합니까? Microsoft SDK 정보는 혼란 스럽습니다.

Glytzhkof 편집: 명확히하기 위해, 질문은 MSI 구성 요소에 대한 구성 요소 안내서를 변경 해야하는 시점을 다룹니다. 구성 요소는 다음과 같은 측면으로 변경 될 수 있습니다. 대상 경로 변경, 동일한 구성 요소에 파일의 추가 또는 제거, 레지스트리 데이터 추가 등 ... 소위 구성 요소 참조와 관련하여 문제가 발생합니다. 구성 요소 생성 모범 사례 MSI에서.

도움이 되었습니까?

해결책

MSI의 전반적인 개념은 1 : 1 매핑 a 사이 구성 요소 가이드 (고유 식별자) 및 an 절대 경로(위치 / 키 경로 설치). 파일 이름을 포함하여 전체 경로. 이를 자동으로 다루기위한 새로운 WIX 기능은 아래의 업데이트를 참조하십시오.

나는 일부를 사용합니다 간단한 규칙 지나치게 복잡하고 무의미한 구성 요소 규칙을 다루기 위해 :

  • 파일 당 별도의 구성 요소를 항상 사용하십시오 (비-비기리의 경우조차도). 이것은 모든 종류의 문제를 피합니다. 몇 가지 예외가 있습니다.
    • 멀티 파일 .NET 어셈블리 항상 단일 장치로 설치 / 제거해야하므로 하나의 구성 요소에 있어야합니다.
    • 다른 몇 가지, 일반 파일 유형"일치하는 쌍" - 그들은 함께 속합니다. 종종 이들은 내용 및 색인 파일입니다. 예를 들어 Microsoft 도움말 파일을 고려하십시오.
      • .hlp 및 .cnt 파일은 함께 속합니다.
      • .chm 및 .chi 파일은 함께 속합니다.
    • 함께 속하는 몇 가지 파일 유형이있을 수 있으며, 따라서 동일한 구성 요소에 넣어 설치/제거해야합니다. 특정 인증서 파일이 후보자라고 생각합니다. 명확한 목록을 생각해 내기가 어렵습니다. 단순히 스스로에게 물어보십시오 "이 파일은 항상 함께 속해" - 새 버전이있을 때마다 항상 쌍으로 나타납니다. 그렇다면 동일한 구성 요소를 통해 설치하십시오. 버전의 파일을 키 파일로 설정하십시오.
    • 추가하고 싶습니다 드라이버 파일 항상 함께 속하는 파일의 예로 : SampleDriver.cat, SampleDriver.inf, SampleDriver.sys, SampleDriver.cer. 그들은 모두 배포를위한 "단위"로 일치해야합니다.
  • 일단 구성 요소에 대한 안내서를 할당 한 후에는 해당 구성 요소의 주요 경로 (절대 경로)를 위해 석재로 설정되어 있습니다. 파일을 새 위치로 이동하거나 파일의 이름을 바꾸면 새 구성 요소 가이드를 제공합니다 (절대 경로가 다르기 때문에 효과적으로 새로운 ID).
  • 요약에서 구성 요소 가이드는 특정 파일이 아닌 절대 설치 위치에 묶여 있습니다. 가이드가 움직이면 파일을 따르지 않습니다.. Guid Reference는 파일 자체가 아닌 절대 위치를 계산합니다.
  • 기존 구성 요소에서 파일을 추가하거나 제거하지 마십시오. 모든 종류의 업그레이드 및 패치 문제 결과. 이것이 제가 구성 요소 당 하나의 파일을 일반적인 규칙으로 좋아하는 이유입니다.
  • 구성 요소 참조에는 더 많은 것이 있지만 "개요"를 위해 그대로 두겠습니다.

일부 샘플 :

  • 파일 이름을 바꿉니다 C : Program Files MyCompany MyApp MyFile.exe 에게 C : Program Files MyCompany MyApp MyFile_new.exe. 이것은 구성 요소 생성에 무엇을 의미합니까? 이것은 새로운 절대 설치 경로이므로 호스팅 구성 요소에 대한 새로운 안내서를 생성하거나 새 구성 요소를 추가하고 이전 구성 요소를 삭제합니다 (동일한 효과가 있음).
  • 업데이트 된 MSI는 새 버전의 MyFile.exe를 제공합니다. 위치는 이전과 동일합니다. 이는 구성 요소 Guid가 변경되지 않아야 함을 의미합니다. 다른 버전에서 동일한 파일 (Identity)입니다.

업데이트: Wix는 이제 새로운 것을 가지고 있습니다 자동 생성 구성 요소 GUID 기능 안내를 계산합니다 대상 경로가 동일하게 유지되는 한. 나는 이것을 정직하게 시도하지 않았지만 많은 사람들이 문제없이 그것을 사용하는 것 같습니다. Rob Mensching (Wix Author)는 정상적인 사용에 안전하다고 말합니다.. 개념으로서 나는 이것을 특징으로하기 때문에 이것을 강력히 추천합니다. 자동 마그 닉 그리고 복잡성에서 당신을 보호합니다.

또한 주목하십시오 Wix XML 파일에서 많은 소스 속성을 남길 수 있습니다. 하드 코딩 값 대신 WIX 기본값에 의존합니다.

다른 팁

Component/@Guid를 변경하지 않습니다. 또한 구성 요소에서 리소스 세트 (파일, 레지스트리 키, 바로 가기, 타이프 릿 등)도 변경하지 않습니다. 새 리소스가 있으면 새 @GUID로 새 구성 요소를 작성해야합니다. 실제로 까다로운 부분은 새 구성 요소가 이전 구성 요소와 오버랩 (파일 경로 또는 레지스트리 키 경로 또는 typelib 등)을 가질 수 없다는 것입니다.

이들은 기본적으로 구성 요소 규칙입니다. 확인하십시오. http://robmensching.com/blog/posts/2003/10/18/component-rules-101.

살펴보십시오 WIX 튜토리얼, 내부 파일, 구성 요소 규칙에 대한 자세한 설명. 기본적으로 구성 요소의 안내서를 변경하지 않는다고 말합니다. 이는 이전 구성 요소를 고아로 만들고 새 구성 요소를 생성하는 것을 의미하기 때문입니다.

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