2014-03-31 4 views
1

나는 Wix를 처음 사용하므로 잘못 사용하면 어떤 용어든지 용서해 준다.여러 프로젝트를위한 Generic Wix Installer

저는 설치 가능한 서비스, 실행 파일 및 기타 서비스가 아닌 많은 프로젝트가 포함 된 대규모 솔루션을 보유하고 있습니다. 설치 프로그램이있는 프로젝트의 이벤트 빌드 이벤트에서 설치 프로그램이 필요로하는 모든 파일을 포함하는 조각을 생성하기 위해 다음을 실행합니다.

"C:\Program Files (x86)\WiX Toolset v3.8\bin\heat.exe" dir $(TargetDir) -ag -cg harvestedComponents -out $(TargetDir)$(ProjectName).wxs

나는 그때 조각에 링크 할 수있는 구성 요소 참조 틀을 가지고 하나 개의 윅스 설치 프로젝트를 만들려고합니다. 이렇게하면 한 설치 프로젝트의 기능을 재사용 할 수 있으며 설치 가능한 각 항목에 대해 설치 프로젝트가 필요하지 않습니다. 거기에서 나는 이벤트 소스, 다른 커스텀 액션 등을 추가하는 것과 같은 설치 기능을 켜거나 끌 수있는 일반 설치 프로젝트에 플래그를 전달하는 것과 함께 프래그먼트 및 프로젝트를 링크/컴파일하는 두 번째 빌드 이벤트를 가질 수 있습니다.

그럼 내 질문은 어떻게 실행 가능 프로젝트의 빌드 빌드 이벤트에서 일반 Wix 프로젝트로 단편을 링크/컴파일합니까? 나는이 기능을 설치 활성화/비활성화 일반 파일 내부에 이벤트 로그 customAction1의 값을 사용

Candle/Light.exe fragment.wxs generic.wxs -eventLog true -customAction1 true -msiName MyInstaller.msi 

: 나는 같이 보일 것입니다 추측하고있다.

혼란과 죄송합니다. 가능합니다.

+1

각 설치 관리자는 자체 UpgradeCode 및 버전이 필요함을 잊지 마십시오. –

답변

1

제대로 이해했다면 열 ($(TargetDir)$(ProjectName).wxs)로 만든 조각을 일반 WiX 소스 파일에서 참조하고 싶습니까?
정상적으로 사용하는 요소 대신 Feature 요소 아래에 ComponentGroupRef 태그를 추가하기 만하면됩니다. elemenet의 경우 Id으로 열 명령 줄에 사용 된 ComponentGroup의 이름을 사용해야합니다 (예 : harvestedComponents). 예 :

<Feature Id="MyFeature" ...> 
    ... 
    <ComponentRef Id="aNormalComponentFromTheCurrentFile" ... /> 
    ... 
    <ComponentGroupRef Id="harvestedComponents" /> 
</Feature> 

혹시 요점을 놓쳤습니까?

+0

네, 감사합니다. 감사합니다. 하지만 나는 또한 두 파일을 양초 나 빛 등을 사용하여 연결하는 방법을 알아 내고 명령 줄 매개 변수를 전달하여 일반 파일의 조건을 평가하려고합니다. 열 후에 실행되는 "candle/light.exe fragment.wxs generic.wxs -eventLog true -custAction1 true"와 같은 명령은 두 가지 다른 명령 일 수 있습니다. –

+0

늦게 답변 해 주셔서 감사합니다. 명령 줄에서 속성을 설정한다는 의미입니까? 그렇다면 언제든지 소스 파일 (예 : $ (wix.Eventlog))에 WiX 변수를 설정 한 다음 -d = 을 사용하여 명령 줄에서 값을 설정할 수 있습니다. -dEventlog = true. – taffit