2013-11-04 7 views
0

다른 설치 모드가 있습니다. 매개 변수에 따라 다음과 같은 작업을 수행합니다.wix : 특정 조건에 따라 여러 값 설정

<Property Id="PROP1" Value="Value1" /> 
<SetProperty Id="PROP1" Before="CostFinalize" Sequence="execute" Value="Value2"></SetProperty> 

문제는 내가 추가 할 때 두 개 이상의 옵션이 있다는 것입니다.

Duplicate symbol 'CustomAction:SetPROP1' found. 

switch 문을 사용하는 방법이 있습니까? 아니면 여러 조건을 처리하는 방법이 있습니까?

또 다른 문제는, 내가 가지고되는 여러 변수 값에 따라 세트 (10 현재) 그것은 절대적으로 동일한 코드로 모두 나열하는 것은 매우 귀찮은

<SetProperty Id="PROP2" Before="CostFinalize" Sequence="execute" Value="Value2"></SetProperty> 
    <SetProperty Id="PROP3" Before="CostFinalize" Sequence="execute" Value="Value3"></SetProperty> 

그것을 만들 방법이 있습니까?

<Condition val="..."> 
<setProperty.../> 
<setProperty.../> 
<setProperty.../> 
</Condition> 

고마워요!

답변

0

우선 설치 프로그램의 아키텍처를 다시 생각해보십시오. 동일한 조건을 기반으로 모든 속성을 설정해야 할 필요가 있습니까? 아니면 더 적절한 방법으로 적절한 기능과 구성 요소를 "조건 설정"하는 것이 낫습니다.

질문의 기술적 측면으로 돌아가 봅시다. SetProperty 요소는 속성을 설정하고 적절하게 일정을 지정하는 사용자 지정 동작을 정의하기위한 "올인원"솔루션 인 바로 가기입니다. SetProperty 요소 자체의 ID 특성이 없으므로 동일한 속성을 다른 값으로 설정하는 데 사용할 수 없다는 것은 사실입니다. 이것은 확실히 별도의 입력 작업을 추가하고 코드가 덜 읽을 수 있지만,이 방법은 당신이 주변 문제를 작업 할 수

<CustomAction Id="SetProp11" Property="PROP1" Value="Value1" /> 
<CustomAction Id="SetProp12" Property="PROP1" Value="Value2" /> 
... 
<InstallExecuteSequence> 
    <Custom Action="SetProp11" After="...">your condition here</Custom> 
    <Custom Action="SetProp12" After="...">your condition here</Custom> 
    ... 
</InstallExecuteSequence> 

을 :

대신, 사용자 지정 작업을 정의하고 수동으로 예약의 좋은 오래된 스타일을 사용 . 그러나 다시 한 번 강조하겠습니다. 즉, 해결 방법을 고안해야한다는 사실은 코드가 냄새를 맡기 시작하고 다시 생각해 볼 수 있음을 의미합니다.

그리고 switch 문과 같이 묶음에 여러 속성을 설정하는 방법을 알지 못합니다. 또는 기술적으로 예를 들어 C# 사용자 지정 작업을 수행하고 모든 속성에 대해 한 번에 작업을 수행하게합니다.

희망이 도움이됩니다.

관련 문제