MsiDeterminePatchSequenceW 함수(msi.h)
MsiDeterminePatchSequence 함수는 패치 파일, XML 파일 및 XML Blob 집합을 사용하고 지정된 설치된 제품에 대한 패치에 가장 적합한 애플리케이션 시퀀스를 결정합니다. 이 함수는 제품에 이미 적용된 패치 및 사용되지 않는 패치 및 대체된 패치를 고려합니다.
통사론
UINT MsiDeterminePatchSequenceW(
[in] LPCWSTR szProductCode,
[in, optional] LPCWSTR szUserSid,
[in] MSIINSTALLCONTEXT dwContext,
[in] DWORD cPatchInfo,
[in] PMSIPATCHSEQUENCEINFOW pPatchInfo
);
매개 변수
[in] szProductCode
패치 집합의 대상인 제품입니다. 값은 제품의 ProductCode GUID여야 합니다.
[in, optional] szUserSid
사용자의 SID(보안 식별자)를 지정하는 Null로 끝나는 문자열입니다. 이 매개 변수는 이 사용자 계정에 대한 열거형 컨텍스트를 제한합니다. 이 매개 변수는 특수 SID 문자열 "S-1-1-0"(모든 사람) 또는 "S-1-5-18"(로컬 시스템)일 수 없습니다. 컴퓨터 컨텍스트의 경우
[in] dwContext
열거형을 사용자 관리되지 않는 사용자별, 사용자 단위 관리형 또는 컴퓨터별 컨텍스트로 제한합니다. 이 매개 변수는 다음 값 중 하나일 수 있습니다.
[in] cPatchInfo
배열의 패치 수입니다.
[in] pPatchInfo
MSIPATCHSEQUENCEINFO 구조체의 배열에 대한 포인터입니다.
반환 값
MsiDeterminePatchSequence 함수는 다음 값을 반환합니다.
값 | 의미 |
---|---|
|
함수가 다른 오류 코드에서 다루지 않는 방식으로 실패했습니다. |
|
인수가 잘못되었습니다. |
|
패치 집합에 대해 유효한 시퀀스를 찾을 수 없습니다. |
|
경로에서 참조하는 설치 패키지를 열 수 없습니다. |
|
패치가 성공적으로 정렬되었습니다. |
|
.msi 파일을 찾을 수 없습니다. |
|
.msi 파일의 경로를 찾을 수 없습니다. |
|
XML 패치 데이터가 잘못되었습니다. |
|
설치 패키지가 잘못되었습니다. |
|
관리자가 아닌 사용자가 다른 사용자의 컨텍스트로 함수를 호출하려고 했습니다. |
|
등록된 패치 또는 제품의 구성 데이터가 잘못되었습니다. |
|
지정된 ProductCode GUID가 등록되지 않았습니다. |
|
최상의 패치 시퀀스를 결정하려면 Windows Installer 버전 3.0이 필요합니다. 이 함수는 szProductCode 아직 Windows Installer 버전 3.0과 함께 설치되지 않은 상태에서 호출되었습니다. |
|
사용자 지정 작업 또는 MSXML 3.0이 설치되지 않은 경우 이 오류를 반환할 수 있습니다. |
|
지정된 패치를 알 수 없습니다. |
발언
관리자 권한이 없는 사용자는 자체 또는 컴퓨터 컨텍스트에서만 이 함수를 호출할 수 있습니다. 관리자인 사용자는 다른 사용자에 대해 호출할 수 있습니다.
이 함수가 사용자 지정 작업에서 호출되면 실패하고 ERROR_CALL_NOT_IMPLEMENTED반환합니다. 이 함수는 XML을 처리하려면 MSXML 버전 3.0이 필요하며 MSXML 3.0이 설치되지 않은 경우 ERROR_CALL_NOT_IMPLEMENTED 반환합니다.
MsiDeterminePatchSequence 함수는 pPatchInfo가리키는 각 MSIPATCHSEQUENCEINFO 구조체의 uStatus 및 dwOrder 멤버를 설정합니다. 각 구조에는 특정 패치에 대한 정보가 포함됩니다.
함수가 성공하면 MSIPATCHSEQUENCEINFO는 제품에 적용할 수 있는 모든 패치의 구조를uStatusERROR_SUCCESSdwOrder가 0보다 크거나 같은 반환합니다. 0보다 크거나 같은 dwOrder 값은 0으로 시작하는 패치에 가장 적합한 애플리케이션 시퀀스를 나타냅니다.
함수가 성공하면 최상의 패치 시퀀스에서 제외된 패치는 dwOrder -1과 같은 MSIPATCHSEQUENCEINFO 구조를 반환합니다. 이러한 경우 ERROR_SUCCESSuStatus 필드는 제품에 대해 사용되지 않거나 대체된 패치를 나타냅니다. ERROR_PATCH_TARGET_NOT_FOUNDuStatus 필드는 제품에 적용할 수 없는 패치를 나타냅니다.
함수가 실패하면 모든 패치에 대한 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 Run-Time 요구 사항을 참조하세요. |
대상 플랫폼 | Windows |
헤더 | msi.h |
라이브러리 | Msi.lib |
DLL | Msi.dll |
참고 항목
MSIPATCHSEQUENCEINFO
Windows Installer 2.0 및 이전 지원되지 않음