2013-05-17 4 views
4

나는 큰 시스템 (솔루션에서 100 개 이상의 프로젝트, 100,000 개 이상의 LOC, 10 개 이상의 서비스, ...)의 개발자이고 과거에는 wix로이 시스템을 설치했지만 정상적으로 작동했습니다. 이제는 시스템의 일부 (마이너 업그레이드)를 패치하고 몇 가지 문제를 해결할 방법이 필요합니다.Heat와 함께 Wix 패치를 만드는 방법은 무엇입니까?

  • 내가 VS2010을 가지고 Wix3.6 도구 세트와 TFS2012가 나는 설정 도서관 프로젝트 유형 당을 사용하고 설치 프로그램
  • 을 전체를 구축하고 얻을 :

    내 현재 윅스 설치

    은 다음과 같습니다 서비스
  • 정확히 하나의 설치 프로젝트를 사용하여 모든 시스템을 하나로 묶어 하나의 설치 프로그램으로 만듭니다.

이 설정을 변경할 수 없습니다.

  • 내가 구성 요소와 파일을 생성하는 열 디렉토리의 MSBuild 작업을 사용하고 난 파일의 경로를 수정하는 전처리 변수를 사용하고 있습니다 :

    도서관 프로젝트는 다음과 같이 설정하는 설정

    .
  • 로컬 개발자 시스템에서 설치 프로그램을 빌드하고 폴더 구조가 다른 tfs 빌드 시스템에 설치 프로그램을 빌드 할 수 있어야하므로 파일 경로를 수정해야합니다.
  • TFS는 항상 동일한 디렉터리를 사용하여 소프트웨어의 후속 버전을 컴파일하고 컴파일이 성공한 후 출력을 고유 폴더 구조로 이동합니다.

이제 패치가 필요합니다. 나는 Patch.wx를 만들었고 촛불과 조명을 불렀다. 차이 파일을 얻기 위해 나는 화식에 전화했다. 마지막으로 pyro로 패치를 만들고 싶습니다. 간단한 테스트 프로젝트로 모든 것이 잘 작동했지만 큰 시스템에서는 Pyro가 설치 파일을 찾을 수 없다는 문제가 있습니다. 위의 내용을 참조하여 필자는 전처리 변수를 사용해야하며 내 wix 출력에 완전한 경로가 있어야합니다 (예 : 파일 소스로 C : \ builds \ myproduct \ prodct.exe). TFS 출력을 다른 위치로 이동 한 후에는이 경로가 더 이상 유효하지 않습니다. 나는 pyro에 -bt와 -bu 스위치를 사용하려고 시도했다. 그러나 이것은 상대 경로 나 named bindpath에서만 작동한다.

이제 선 처리기 변수 대신 명명 된 bindpaths를 사용하도록 wix 프로젝트 설정을 변경하려고했지만 이것이 가능하지 않은 것 같습니다. heat는 전 처리기 변수 또는 wixvariables 만 사용할 수 있지만 bindpath 변수를 사용할 수없는 것으로 보입니다. 열은 전 처리기 변수 대신 바인더 변수를 만들어야하는 스위치 -wixvar를 제공하지만 나는 아무 것도하지 않습니다.

이제 열에는 wix 및 전 처리기 변수를 사용하지 말고 -bu -bt 당 파일을 찾을 위치를 전환하려고했습니다. 그러나 전 처리기 변수를 설정하지 않으면 결과 파일은 Sources \ product.exe와 같습니다. 나는이 근원을 제거 할 수 없다. 나는 xslt로 모든 XML을 변형 할 수 있고 소스를 제거 할 수 있다는 것을 알고 있지만 다른 해결책이 없다면 구현할 수있는 해결 방법이있다. 이것은 또한 wix toolchain에 문제가 있음을 의미합니다.

pyro는 bindpath 변수 만 지원하며 열은 전 처리기 및 wix 변수 만 지원합니다. 이것들이 어떻게 함께 작동해야하기 때문에 이것은 정말로 미친 것 같습니다.

조명, 조명, 양초, 열, 토치 및 파이로를 사용하고 원본 빌드 경로가 변경된 경우 (빌드 시스템에서 매우 일반적 임) 파일 경로가 다음과 같이 생성 된 경우 어떻게 패치를 만들 수 있습니까? 열 및 고정되거나 전처리 자 또는 wix 변하기 쉬워?

+0

아직 열풍과 열을 사용하고 있습니까? 경험담? – boli

답변

2

발견 한대로 heat은 패치 시나리오에서 사용하도록 설계되지 않았습니다. 생성 된 GUID가 heat이 패치 할 수있는 출력을 성공적으로 빌드 할 수있는 지점까지 도달 한 것은 최신 버전의 WiX 도구 세트에서만 발생했습니다. heat이 잘 작동하는 곳에서 패치를 만들기 위해 작업을해야합니다.

궁극적으로 대답은 "원본 소스"문제를 단순화하는 것이라고 생각합니다. 모든 bindpath가 올바로 설정되도록하는 것은 어렵습니다. 이는 어려운 문제 인 패칭을 더욱 어렵게 만듭니다. We 've는 약간의 생각을 걷어 찼다. 그러나 아무것도 아직 모였다.

언제든지 관리자 이미지 기반 패치를 사용할 수 있습니다. 느리지 만 "원본 소스"와 "대상"을 쉽게 배치 할 수 있습니다. 그 경로는 비록 필터링을 잃게됩니다.

기본적으로 시나리오를 패치하는 데 좀 더 많은 작업이 필요합니다.

추 신 : File/@Source 특성의 경로에있는 "원본"은 "기본 바인드 경로"의 별칭입니다. 거기에 bindpaths를 사용할 수 있습니다.