2016-07-05 2 views
0

프로그램 설치를위한 .wxs 파일이 있습니다. OS 버전 (예 : OS 버전이 XP 인 경우 실행하고 < = XP 일 경우 전달)에 따라 일부 설치를 통과하고 다른 부분을 계속 설치하려고합니다. 즉, 이미 일부 구성 요소를 설치했으며 설치 중에 다음 구성 요소를 설치할지 여부를 (현재 OS에 따라) 확인하려고합니다. 그렇다면 - 설치하지 않을 경우 설치 - 구성 요소의 설치를 건너 뜁니다. 물론 그 이후에는 전체 설치가 계속되어야합니다. 설치를 중단하고 설치된 구성 요소를 제거하지 않고 하나의 구성 요소 만 건너 뛰고 싶습니다. 내가 어떻게 해? 또한이 부분은 link입니다. 블록 설치 사례가 있지만 조건 이후 설치를 계속하고 싶습니다. 또 다른 가정이있다 - 우리는조건을 확인하고 Wix Toolset을 사용하여 설치를 계속하십시오.

<?if *condition* ?> ... <?endif?>

블록을 사용할 수 있습니다,하지만 난 정말이 OS 정보를 얻는 방법을 이해하지 않습니다. 아이디어가 있으십니까?

+0

"OS 버전에 따라 설치 부분을 전달하고 싶습니다 (예 : OS 버전이 XP이면 실행하고 <= XP이면 통과) 다른 부분을 계속 설치해야합니다." 실제로는 의미합니다. 이것은 너무 모호합니다. 특정 구성 요소를 설치 하시겠습니까? 특정 사용자 지정 작업을 실행 하시겠습니까? 이 상황에서 "설치의 일부"는 무엇입니까? –

+0

@BrianSutherland 감사합니다. 편집 됨. 지금은 분명합니까? –

+0

예 =] 답변을 업데이트하겠습니다 –

답변

0

<?if ... ?> 이러한 것들은 C++에서 #ifdef 및 #ifndef와 같은 전 처리기 지시문이며 컴파일 사이에 if 부분이 포함되는지 여부를 결정합니다. 이것은 빌드 머신에서 빌드 된 시간에만 평가됩니다.

이렇게하면 Windows XP 또는 이전 시스템에서 설치가 중단됩니다.

<Condition Message="!(loc.OSNotSupported)">Installed OR VersionNT &gt; 501 OR VersionNT64 &gt; 501</Condition> 

유사한 조건을 사용하여 구성 요소를 설치했는지, 기능을 설치했는지, 사용자 지정 작업을 실행하는지 여부를 지정할 수 있습니다.

질문을 업데이트하고이 대답에 대한 의견을 남기면 질문에 더 잘 답변하도록 답변을 업데이트하려고 노력할 것입니다. 조건이 TRUE 다음 구성 요소로 평가 될 경우 실행중인 컴퓨터의 OS에 따라 특정 구성 요소를 설치하려면


은 매우 간단합니다, 바로 당신의 <component>

<Component Id="InstallMeOnXP" Guid="*"> 
    <Condition>VersionNT &lt;= 501 OR VersionNT64 &lt;= 501</Condition> 
    <File Id="XPOnly.dll" KeyPath="yes" Source="$(var.BinariesDir)\_bin\XPOnly.dll" /> 
</Component> 

에 다음을 추가 그렇지 않으면 설치되지 않습니다. wix에서 Condition 요소에 대한 자세한 정보.

다음은 Windows Installer의 기본값 인 VersionNTVersionNT64 속성에 대한 정보입니다.

+0

고마워요! 내일 내 사건을 조사 할게. –

+0

그냥 알고 싶다, 만약 내가 ComponentRef 대신 일반 Component가 있다면 어떻게해야합니까? 솔루션은 동일해야합니까? 나는 [3 단계] (http://wixtoolset.org/documentation/manual/v3/howtos/files_and_registry/add_a_file.html)의 코드에 조건을 추가하는 것을 의미합니다. –

+0

기능 수준에서 유사한 조건을 수행 할 수도 있습니다 요소 자체를 수정할 수없는 경우이 기능에는 STATEMENT을 설치할지 여부를 알려줄 수 있습니다. wix 용 Condition 페이지를 보면 아래에서 사용할 수 없습니다. –

관련 문제