MsiDeterminePatchSequenceA 함수(msi.h)
MsiDeterminePatchSequence 함수는 패치 파일, XML 파일 및 XML Blob 집합을 사용하고 지정된 설치된 제품에 대한 패치에 가장 적합한 애플리케이션 시퀀스를 결정합니다. 이 함수는 제품에 이미 적용된 패치 및 사용되지 않는 패치 및 대체된 패치를 고려합니다.
구문
UINT MsiDeterminePatchSequenceA(
[in] LPCSTR szProductCode,
[in, optional] LPCSTR szUserSid,
[in] MSIINSTALLCONTEXT dwContext,
[in] DWORD cPatchInfo,
[in] PMSIPATCHSEQUENCEINFOA pPatchInfo
);
매개 변수
[in] szProductCode
패치 집합의 대상인 제품입니다. 값은 제품의 ProductCode GUID여야 합니다.
[in, optional] szUserSid
사용자의 SID(보안 식별자)를 지정하는 Null로 종료된 문자열입니다. 이 매개 변수는 이 사용자 계정에 대한 열거형 컨텍스트를 제한합니다. 이 매개 변수는 특수 SID 문자열 "S-1-1-0"(모든 사람) 또는 "S-1-5-18"(로컬 시스템)일 수 없습니다. 컴퓨터 컨텍스트의 경우 dwContext 는 MSIINSTALLCONTEXT_MACHINE 설정되고 szUserSid 는 NULL이어야 합니다. 현재 사용자 컨텍스트의 경우 szUserSid 는 null일 수 있고 dwContext 는 MSIINSTALLCONTEXT_USERMANAGED 또는 MSIINSTALLCONTEXT_USERUNMANAGED 설정할 수 있습니다.
[in] dwContext
열거형을 관리되지 않는 사용자별, 사용자 단위 관리형 또는 컴퓨터별 컨텍스트로 제한합니다. 이 매개 변수는 다음 값 중 하나일 수 있습니다.
[in] cPatchInfo
배열의 패치 수입니다.
[in] pPatchInfo
MSIPATCHSEQUENCEINFO 구조체의 배열에 대한 포인터입니다.
반환 값
MsiDeterminePatchSequence 함수는 다음 값을 반환합니다.
값 | 의미 |
---|---|
|
함수가 다른 오류 코드에서 다루지 않는 방식으로 실패했습니다. |
|
인수가 잘못되었습니다. |
|
패치 세트에 대한 유효한 시퀀스를 찾을 수 없습니다. |
|
경로에서 참조하는 설치 패키지를 열 수 없습니다. |
|
패치가 성공적으로 정렬되었습니다. |
|
.msi 파일을 찾을 수 없습니다. |
|
.msi 파일의 경로를 찾을 수 없습니다. |
|
XML 패치 데이터가 잘못되었습니다. |
|
설치 패키지가 잘못되었습니다. |
|
관리자가 아닌 사용자가 다른 사용자의 컨텍스트를 사용하여 함수를 호출하려고 했습니다. |
|
등록된 패치 또는 제품의 구성 데이터가 잘못되었습니다. |
|
지정된 ProductCode GUID가 등록되지 않았습니다. |
|
최상의 패치 시퀀스를 결정하려면 Windows Installer 버전 3.0이 필요합니다. 함수는 아직 Windows Installer 버전 3.0과 함께 설치되지 않은 szProductCode 를 사용하여 호출되었습니다. |
|
이 오류는 사용자 지정 작업 에서 함수가 호출되었거나 MSXML 3.0이 설치되지 않은 경우 반환될 수 있습니다. |
|
지정된 패치를 알 수 없습니다. |
설명
관리자 권한이 없는 사용자는 자체 또는 컴퓨터 컨텍스트에서만 이 함수를 호출할 수 있습니다. 관리자인 사용자는 다른 사용자에 대해 호출할 수 있습니다.
이 함수가 사용자 지정 작업에서 호출되면 실패하고 ERROR_CALL_NOT_IMPLEMENTED 반환합니다. 함수는 XML을 처리하려면 MSXML 버전 3.0이 필요하며 MSXML 3.0이 설치되지 않은 경우 ERROR_CALL_NOT_IMPLEMENTED 반환합니다.
MsiDeterminePatchSequence 함수는 pPatchInfo가 가리키는 각 MSIPATCHSEQUENCEINFO 구조체의 uStatus 및 dwOrder 멤버를 설정합니다. 각 구조에는 특정 패치에 대한 정보가 포함됩니다.
함수가 성공하면 제품에 적용할 수 있는 모든 패치의 MSIPATCHSEQUENCEINFO 구조체는 uStatus가 ERROR_SUCCESSdwOrder가 0보다 크거나 같은 값으로 반환됩니다. dwOrder 값이 0보다 크거나 같음은 0으로 시작하는 패치에 가장 적합한 애플리케이션 시퀀스를 나타냅니다.
함수가 성공하면 최상의 패치 시퀀스에서 제외된 패치는 dwOrder가 -1인 MSIPATCHSEQUENCEINFO 구조를 반환합니다. 이러한 경우 ERROR_SUCCESS uStatus 필드는 제품에 사용되지 않거나 대체 된 패치를 나타냅니다. ERROR_PATCH_TARGET_NOT_FOUND uStatus 필드는 제품에 적용할 수 없는 패치를 나타냅니다.
함수가 실패하면 모든 패치에 대한 MSIPATCHSEQUENCEINFO 구조체는 -1과 동일한 dwOrder 를 반환합니다. 이 경우 uStatus 필드에 개별 패치에 대한 자세한 정보가 포함된 오류가 포함될 수 있습니다. 예를 들어 순환 시퀀싱 정보가 있는 패치에 대해 ERROR_PATCH_NO_SEQUENCE 반환됩니다.
참고
msi.h 헤더는 MSiDeterminePatchSequence를 유니코드 전처리기 상수의 정의에 따라 이 함수의 ANSI 또는 유니코드 버전을 자동으로 선택하는 별칭으로 정의합니다. 인코딩 중립 별칭을 인코딩 중립이 아닌 코드와 혼합하면 컴파일 또는 런타임 오류가 발생하는 불일치가 발생할 수 있습니다. 자세한 내용은 함수 프로토타입에 대한 규칙을 참조하세요.
요구 사항
지원되는 최소 클라이언트 | Windows Server 2012, Windows 8, Windows Server 2008 R2 또는 Windows 7의 Windows Installer 5.0. Windows Server 2008 또는 Windows Vista의 Windows Installer 4.0 또는 Windows Installer 4.5. Windows Installer 버전에 필요한 최소 Windows 서비스 팩에 대한 자세한 내용은 Windows Installer 런타임 요구 사항을 참조하세요. |
대상 플랫폼 | Windows |
헤더 | msi.h |
라이브러리 | Msi.lib |
DLL | Msi.dll |