2013-02-05 5 views
3

제품의 여러 부 버전을 설치하려면 WiX 프로젝트를 구성해야합니다. IE : 1.0, 1.1 및 1.3을 설치할 수 있습니다. 1.2를 설치하려고하면 작동하지만 1.1로 시도하면 진행하기 전에 이전 1.1 설치가 제거됩니다.여러 버전을 설치하지만 동일한 부 버전을 제거하도록 WiX 프로젝트를 구성하십시오.

<Upgrade Id="$(var.UpgradeCode)"> 
    <UpgradeVersion Minimum="$(var.MajorMinorVersion)" IncludeMinimum="yes" 
     Maximum="$(var.VersionNumber)" IncludeMaximum="no" Property="OLDERMINORFOUND"/> 
</Upgrade> 

UpgradeCode 내 wxi 파일과 MajorMinorVersion에 정의 된 GUID입니다 VersionNumber과 동일하지만, 0 (1.1에서 빌드 :

지금까지이 내 Upgrade 태그에있는 것입니다. 버전이 1.1.12 일 때 0). 내가 다른 UpgradeVersion 태그를 만들거나 마이너 버전에서 최대 값을 가지고 검색에서 제외하는 현재 하나를 업데이트

:

<UpgradeVersion Minimum="$(var.MajorMinorVersion)" IncludeMinimum="yes" 
     Maximum="$(var.NextMinorVersion)" IncludeMaximum="no"/> 

나는 두 가지 가능성을 가지고 같은데요

사용자 정의 액션을 사용하여 어떻게 든 NextMinorVersion을 설정합니다. 어쩌면 대신 속성을 사용합니다.

또는 부 버전이 변경 될 때마다 UpgradeCode를 수동으로 변경하십시오. 또는 guid의 처음 몇 문자가 버전을 나타내며 나머지는 고유해야합니까? 그래도 그게 좋은 생각 인 것 같은데 ...

기본적으로 모든 버전에 대해 하나의 설정 프로젝트 만 있기를 원하면 기본적으로이 작업을 수행하는 가장 좋은 방법은 무엇입니까?

편집

나는 MajorUpgrade 태그에 검토 한 결과,하지만 난 같은 시간에 많은 부 버전을하도록 구성 할 수 있습니다 생각하지 않습니다. 이것에 대한 어떤 빛이라도 감사합니다.

는 또한 함수를 사용하여 버전 번호를 조작 할 처리기 확장을 살펴본 결과, 그래서 나는이 작업을 수행 할 수 있습니다 :

<Upgrade Id="$(var.UpgradeCode)"> 
    <UpgradeVersion Property="OLDERMINORFOUND" 
     Minimum="$(var.MajorMinorVersion)" IncludeMinimum="yes" 
     Maximum="$(myprefix.NextMinor($(var.VersionNumber)))" IncludeMaximum="no"/> 
</Upgrade> 

세부 사항에 대한 내 대답을 참조하십시오.

답변

2

그래서 WiX 설명서 (Part 1Part 2)에 따라 확장 프로그램을 작성했습니다.

버전 번호 문자열 (예 : 1.2.3.4)을 사용하고 문자열을 구문 분석하고 분할하여 버전을 조작하는 전 처리기 확장을 만들었습니다.

그래서 지금은 내 .wxs 파일이 쓸 수 있습니다 : version.NextMinor 내 처리기 확장에 대한 호출입니다

<Upgrade Id="$(var.UpgradeCode)"> 
    <UpgradeVersion Property="SAMEMINORFOUND" OnlyDetect="no" 
     Minimum="$(var.MajorMinorVersion).0" IncludeMinimum="yes" 
     Maximum="$(version.NextMinor($(var.VersionNumber)))" IncludeMaximum="no" /> 
    <UpgradeVersion Property="OLDERVERSIONFOUND" OnlyDetect="yes" 
     Maximum="$(var.MajorMinorVersion).0" IncludeMaximum="no"/> 
    <UpgradeVersion Property="NEWERVERSIONFOUND" OnlyDetect="yes" 
     Minimum="$(version.NextMinor($(var.VersionNumber)))" IncludeMinimum="yes"/> 
</Upgrade> 

<InstallExecuteSequence> 
    <RemoveExistingProducts After="InstallValidate"/> 
</InstallExecuteSequence> 

합니다.

따라서 내 설치 관리자는 제거 할 부분이 일치하지 않는 한 제품 설치 만 검색합니다.

관련 문제