다음을 통해 공유


<InstallChecks> 요소(부트스트래퍼)

InstallChecks 요소는 로컬 컴퓨터를 상대로 다양한 테스트를 시작하여 애플리케이션의 모든 필수 구성 요소가 설치되었는지 확인하는 기능을 지원합니다.

구문

<InstallChecks>
    <AssemblyCheck
        Property
        Name
        PublicKeyToken
        Version
        Language
        ProcessorArchitecture
    />
    <RegistryCheck
        Property
        Key
        Value
    />
    <ExternalCheck
        PackageFile
        Property
        Arguments
    />
    <FileCheck
        Property
        FileName
        SearchPath
        SpecialFolder
        SearchDepth
    />
    <MsiProductCheck
        Property
        Product
        Feature
    />
    <RegistryFileCheck
        Property
        Key
        Value
        FileName
        SearchDepth
    />
</InstallChecks>

AssemblyCheck

이 요소는 InstallChecks의 선택적 자식 요소입니다. 부트스트래퍼는 AssemblyCheck의 각 인스턴스에 요소에서 식별한 어셈블리가 GAC(전역 어셈블리 캐시)에 존재하는지를 확인합니다. 여기에는 요소가 없으며 다음 특성이 있습니다.

attribute Description
Property 필수입니다. 결과를 저장할 속성의 이름입니다. 이 속성은 Command 요소의 자식인 InstallConditions 요소를 이용한 테스트에서 참조될 수 있습니다. 자세한 내용은 <Commands> 요소를 참조하세요.
Name 필수입니다. 검사할 어셈블리의 정규화된 이름입니다.
PublicKeyToken 필수입니다. 이 강력한 이름 어셈블리와 연결된 공개 키의 약식 형식입니다. GAC에 저장된 모든 어셈블리에는 이름, 버전과 공개 키가 있어야 합니다.
Version 필수입니다. 어셈블리의 버전입니다.

버전 번호에는 <주 버전>.<부 버전>.<빌드 버전>.<수정 버전> 형식이 있습니다.
Language 선택 사항. 지역화된 어셈블리의 언어입니다. 기본값은 neutral입니다.
ProcessorArchitecture 선택 사항. 이 설치의 대상 컴퓨터 프로세서입니다. 기본값은 msil입니다.

ExternalCheck

이 요소는 InstallChecks의 선택적 자식 요소입니다. 부트스트래퍼는 ExternalCheck의 각 인스턴스에 대해 별도의 프로세스에서 명명된 외부 프로그램을 실행하고, 프로그램의 종료 코드를 Property에서 나타내는 속성에 저장합니다. ExternalCheck는 복잡한 종속성 검사를 구현하거나, 인스턴스화를 통해서만 구성 요소가 있는지를 확인할 수 있을 때 유용합니다.

ExternalCheck에는 요소가 없으며 다음 특성이 있습니다.

attribute Description
Property 필수입니다. 결과를 저장할 속성의 이름입니다. 이 속성은 Command 요소의 자식인 InstallConditions 요소를 이용한 테스트에서 참조될 수 있습니다. 자세한 내용은 <Commands> 요소를 참조하세요.
PackageFile 필수입니다. 실행할 외부 프로그램입니다. 프로그램은 설치 배포 패키지의 일부여야 합니다.
Arguments 선택 사항. PackageFile에서 명명한 실행 파일에 명령줄 인수를 제공합니다.

FileCheck

이 요소는 InstallChecks의 선택적 자식 요소입니다. 부트스트래퍼는 FileCheck의 각 인스턴스에 명명된 파일이 있는지 확인하고 파일의 버전 번호를 반환합니다. 파일에 버전 번호가 없는 경우 부트스트래퍼는 Property에서 명명한 속성을 0으로 설정합니다. 파일이 없는 경우 Property에는 특정 값이 설정되지 않습니다.

FileCheck에는 요소가 없으며 다음 특성이 있습니다.

attribute Description
Property 필수입니다. 결과를 저장할 속성의 이름입니다. 이 속성은 Command 요소의 자식인 InstallConditions 요소를 이용한 테스트에서 참조될 수 있습니다. 자세한 내용은 <Commands> 요소를 참조하세요.
FileName 필수입니다. 찾을 파일의 이름입니다.
SearchPath 필수입니다. 파일을 찾을 디스크나 폴더입니다. SpecialFolder가 할당된 경우에는 상대 경로이고, 그렇지 않다면 절대 경로여야 합니다.
SpecialFolder 선택 사항. Windows나 ClickOnce에 특히 중요한 폴더입니다. 기본값은 SearchPath를 절대 경로로 해석하는 것입니다. 유효한 값은 다음과 같습니다.

AppDataFolder. 이 ClickOnce 애플리케이션의 애플리케이션 데이터 폴더입니다. 현재 사용자에 한정됩니다.

CommonAppDataFolder. 모든 사용자가 사용하는 애플리케이션 데이터 폴더입니다.

CommonFilesFolder. 현재 사용자의 Common Files 폴더입니다.

LocalDataAppFolder. 로밍되지 않는 애플리케이션의 데이터 폴더입니다.

ProgramFilesFolder. 32비트 애플리케이션의 표준 Program Files 폴더입니다.

StartUpFolder. 시스템을 시작할 때 실행되는 모든 애플리케이션이 포함된 폴더입니다.

SystemFolder. 32비트 시스템 DLL이 포함된 폴더입니다.

WindowsFolder. Windows 시스템 설치가 포함된 폴더입니다.

WindowsVolume. Windows 시스템 설치가 포함된 드라이브 또는 파티션입니다.
SearchDepth 선택 사항. 하위 폴더에서 명명된 파일을 검색하는 깊이입니다. 검색은 깊이 우선입니다. 기본값은 0이며, 이 값은 검색 범위를 SpecialFolderSearchPath에서 지정하는 최상위 폴더로 제한합니다.

MsiProductCheck

이 요소는 InstallChecks의 선택적 자식 요소입니다. 각 MsiProductCheck 인스턴스에 대해 부트스트래퍼는 지정된 Microsoft Windows Installer 설치가 완료될 때까지 실행 여부를 계속 확인합니다. 속성 값은 설치된 제품의 상태에 따라 설정됩니다. 양수 값은 제품이 설치되어 있음을 나타내고, 0 또는-1은 제품이 설치 되어 있지 않음을 나타냅니다. (자세한 내용은 Windows Installer SDK 함수 MsiQueryFeatureState를 참조하세요.) 컴퓨터에 Windows Installer가 설치되어 있지 않으면 Property가 설정되지 않습니다.

MsiProductCheck에는 요소가 없으며 다음 특성이 있습니다.

attribute Description
Property 필수입니다. 결과를 저장할 속성의 이름입니다. 이 속성은 Command 요소의 자식인 InstallConditions 요소를 이용한 테스트에서 참조될 수 있습니다. 자세한 내용은 <Commands> 요소를 참조하세요.
Product 필수입니다. 설치된 제품의 GUID입니다.
Feature 선택 사항. 설치된 애플리케이션의 특정 기능에 대한 GUID입니다.

RegistryCheck

이 요소는 InstallChecks의 선택적 자식 요소입니다. 각 RegistryCheck 인스턴스에 대해 부트스트래퍼는 지정된 레지스트리 키가 존재하는지, 또는 레지스트리 키에 지정된 값이 있는지를 확인합니다.

RegistryCheck에는 요소가 없으며 다음 특성이 있습니다.

attribute Description
Property 필수입니다. 결과를 저장할 속성의 이름입니다. 이 속성은 Command 요소의 자식인 InstallConditions 요소를 이용한 테스트에서 참조될 수 있습니다. 자세한 내용은 <Commands> 요소를 참조하세요.
Key 필수입니다. 레지스트리 키의 이름입니다.
Value 선택 사항. 검색할 레지스트리 값의 이름입니다. 기본값은 기본값의 텍스트를 반환하는 것입니다. Value는 문자열 또는 DWORD여야 합니다.

RegistryFileCheck

이 요소는 InstallChecks의 선택적 자식 요소입니다. 부트스트래퍼는 RegistryFileCheck의 각 인스턴스에서 지정된 파일의 버전을 검색하고, 먼저 지정된 레지스트리 키에서 파일의 경로를 검색합니다. 이 방법은 레지스트리에서 값으로 지정된 디렉터리에서 파일을 조회할 때 특히 유용합니다.

RegistryFileCheck에는 요소가 없으며 다음 특성이 있습니다.

attribute Description
Property 필수입니다. 결과를 저장할 속성의 이름입니다. 이 속성은 Command 요소의 자식인 InstallConditions 요소를 이용한 테스트에서 참조될 수 있습니다. 자세한 내용은 <Commands> 요소를 참조하세요.
Key 필수입니다. 레지스트리 키의 이름입니다. File 특성이 설정 되지 않은 경우 관련 값은 파일의 경로로 해석됩니다. 이 키가 없으면 Property가 설정되지 않습니다.
Value 선택 사항. 검색할 레지스트리 값의 이름입니다. 기본값은 기본값의 텍스트를 반환하는 것입니다. Value 값은 문자열이어야 합니다.
FileName 선택 사항. 파일의 이름입니다. 이름을 지정하면 레지스트리 키에서 가져온 값은 디렉터리 경로로 간주 되고 이 이름이 값에 추가됩니다. 지정하지 않으면 레지스트리에서 반환된 값이 파일의 전체 경로로 간주됩니다.
SearchDepth 선택 사항. 하위 폴더에서 명명된 파일을 검색하는 깊이입니다. 검색은 깊이 우선입니다. 기본값은 0이며, 이 값은 검색 범위를 레지스트리 키의 값에서 지정하는 최상위 폴더로 제한합니다.

설명

InstallChecks에 있는 요소는 실행할 테스트를 정의하지만 테스트를 실행하지는 않습니다. 테스트를 실행하려면 Command 요소 아래에 Commands 요소를 만들어야 합니다.

예시

다음 코드 예제에서는 .NET Framework의 제품 파일에서 사용하는 InstallChecks 요소를 확인할 수 있습니다.

<InstallChecks>
    <ExternalCheck Property="DotNetInstalled" PackageFile="dotnetchk.exe" />
    <RegistryCheck Property="IEVersion" Key="HKLM\Software\Microsoft\Internet Explorer" Value="Version" />
</InstallChecks>

InstallConditions

InstallChecks는 평가 후 속성을 생성합니다. 그런 다음에서 InstallConditions에서 속성을 사용하여 패키지의 설치, 무시 또는 실패 여부를 결정합니다. 다음 표에는 InstallConditions이 나열되어 있습니다.

조건 설명
FailIf FailIf 조건이 true로 평가되면 패키지는 실패합니다. 나머지 조건은 평가되지 않습니다.
BypassIf BypassIf 조건이 true로 평가되면 패키지는 무시됩니다. 나머지 조건은 평가되지 않습니다.

미리 정의된 속성

다음 표에는 BypassIfFailIf 요소가 나열되어 있습니다.

속성 주의 가능한 값
Version9X Windows 9x 운영 체제의 버전 번호입니다. 4.10 = Windows 98
VersionNT Windows 운영 체제의 버전 번호입니다. Major.Minor.ServicePack
VersionNT64 64비트 Windows 운영 체제의 버전 번호입니다. Major.Minor.ServicePack.
VersionMsi Windows Installer 서비스의 버전 번호입니다. 2.0 = Windows Installer 2.0
AdminUser 사용자에게 Windows NT 기반 운영 체제에 대한 관리자 권한이 있는지를 지정합니다. 0 = 관리자 권한 없음

1 = 관리자 권한 있음

예를 들어 Windows 8을 실행하는 컴퓨터에서 설치를 차단하려면 다음과 같은 코드를 사용합니다.

    <!-- Block install on Windows 8 -->
    <FailIf Property="VersionNT64" Compare="VersionLessThan" Value="6.2" String="InvalidPlatform"/>

설치 실행 시 FailIf 또는 BypassIf 조건 충족 여부 확인을 건너뛰고 싶다면 BeforeInstallChecks 특성을 사용합니다. 예시:

    <!-- Block install and do not evaluate install checks if user does not have admin privileges -->
    <FailIf Property="AdminUser" Compare="ValueEqualTo" Value="false" String="AdminRequired" BeforeInstallChecks="true"/>

참고 항목

BeforeInstallChecks 특성은 Visual Studio 2019 업데이트 9 릴리스부터 지원됩니다.

참고 항목