다음을 통해 공유


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 설정되고 szUserSidNULL이어야 합니다. 현재 사용자 컨텍스트의 경우 szUserSid 는 null일 수 있고 dwContextMSIINSTALLCONTEXT_USERMANAGED 또는 MSIINSTALLCONTEXT_USERUNMANAGED 설정할 수 있습니다.

[in] dwContext

열거형을 관리되지 않는 사용자별, 사용자 단위 관리형 또는 컴퓨터별 컨텍스트로 제한합니다. 이 매개 변수는 다음 값 중 하나일 수 있습니다.

컨텍스트 유형 의미
MSIINSTALLCONTEXT_USERMANAGED
패치는 szUserSid로 지정된 사용자에 대한 제품의 모든 사용자별 관리 설치에 대해 고려됩니다. 이 컨텍스트가 있는 null szUserSid 는 현재 사용자를 의미합니다.
MSIINSTALLCONTEXT_USERUNMANAGED
패치는 szUserSid로 지정된 사용자의 관리되지 않는 모든 설치에 대해 고려됩니다. 이 컨텍스트가 있는 null szUserSid 는 현재 사용자를 의미합니다.
MSIINSTALLCONTEXT_MACHINE
패치는 컴퓨터별 설치에 고려됩니다. dwContextMSIINSTALLCONTEXT_MACHINE 설정된 경우 szUserSid 매개 변수는 null이어야 합니다.

[in] cPatchInfo

배열의 패치 수입니다.

[in] pPatchInfo

MSIPATCHSEQUENCEINFO 구조체의 배열에 대한 포인터입니다.

반환 값

MsiDeterminePatchSequence 함수는 다음 값을 반환합니다.

의미
ERROR_FUNCTION_FAILED
함수가 다른 오류 코드에서 다루지 않는 방식으로 실패했습니다.
ERROR_INVALID_PARAMETER
인수가 잘못되었습니다.
ERROR_PATCH_NO_SEQUENCE
패치 세트에 대한 유효한 시퀀스를 찾을 수 없습니다.
ERROR_INSTALL_PACKAGE_OPEN_FAILED
경로에서 참조하는 설치 패키지를 열 수 없습니다.
ERROR_SUCCESS
패치가 성공적으로 정렬되었습니다.
ERROR_FILE_NOT_FOUND
.msi 파일을 찾을 수 없습니다.
ERROR_PATH_NOT_FOUND
.msi 파일의 경로를 찾을 수 없습니다.
ERROR_INVALID_PATCH_XML
XML 패치 데이터가 잘못되었습니다.
ERROR_INSTALL_PACKAGE_INVALID
설치 패키지가 잘못되었습니다.
ERROR_ACCESS_DENIED
관리자가 아닌 사용자가 다른 사용자의 컨텍스트를 사용하여 함수를 호출하려고 했습니다.
ERROR_BAD_CONFIGURATION
등록된 패치 또는 제품의 구성 데이터가 잘못되었습니다.
ERROR_UNKNOWN_PRODUCT
지정된 ProductCode GUID가 등록되지 않았습니다.
ERROR_FUNCTION_NOT_CALLED
최상의 패치 시퀀스를 결정하려면 Windows Installer 버전 3.0이 필요합니다. 함수는 아직 Windows Installer 버전 3.0과 함께 설치되지 않은 szProductCode 를 사용하여 호출되었습니다.
ERROR_CALL_NOT_IMPLEMENTED
이 오류는 사용자 지정 작업 에서 함수가 호출되었거나 MSXML 3.0이 설치되지 않은 경우 반환될 수 있습니다.
ERROR_UNKNOWN_PATCH
지정된 패치를 알 수 없습니다.

설명

관리자 권한이 없는 사용자는 자체 또는 컴퓨터 컨텍스트에서만 이 함수를 호출할 수 있습니다. 관리자인 사용자는 다른 사용자에 대해 호출할 수 있습니다.

이 함수가 사용자 지정 작업에서 호출되면 실패하고 ERROR_CALL_NOT_IMPLEMENTED 반환합니다. 함수는 XML을 처리하려면 MSXML 버전 3.0이 필요하며 MSXML 3.0이 설치되지 않은 경우 ERROR_CALL_NOT_IMPLEMENTED 반환합니다.

MsiDeterminePatchSequence 함수는 pPatchInfo가 가리키는 각 MSIPATCHSEQUENCEINFO 구조체의 uStatusdwOrder 멤버를 설정합니다. 각 구조에는 특정 패치에 대한 정보가 포함됩니다.

함수가 성공하면 제품에 적용할 수 있는 모든 패치의 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

참고 항목

MSIPATCHSEQUENCEINFO

MsiDetermineApplicablePatches

Windows Installer 2.0 이하에서 지원되지 않음

ProductCode