다음을 통해 공유


MsiFormatRecordW 함수(msiquery.h)

MsiFormatRecord 함수는 형식 문자열을 사용하여 레코드 필드 데이터 및 속성의 형식을 지정합니다.

통사론

UINT MsiFormatRecordW(
  [in]      MSIHANDLE hInstall,
  [in]      MSIHANDLE hRecord,
  [out]     LPWSTR    szResultBuf,
  [in, out] LPDWORD   pcchResultBuf
);

매개 변수

[in] hInstall

설치를 처리합니다. 이 경우 레코드 필드 매개 변수만 처리되고 대체에 속성을 사용할 수 없는 경우 생략할 수 있습니다.

[in] hRecord

서식을 지정할 레코드에 대한 핸들입니다. 템플릿 문자열은 참조된 데이터 매개 변수 뒤에 레코드 필드 0에 저장되어야 합니다.

[out] szResultBuf

null로 종료된 형식의 문자열을 수신하는 버퍼에 대한 포인터입니다. szResultBuf대해 null(value=0)을 전달하여 버퍼 크기를 확인하지 마세요. 빈 문자열(예: "")을 전달하여 버퍼의 크기를 가져올 수 있습니다. 그런 다음 함수는 ERROR_MORE_DATA 반환하고 pcchResultBuf 종료 null 문자를 포함하지 않고 TCHAR필수 버퍼 크기를 포함합니다. ERROR_SUCCESS반환 시 pcchResultBuf 종료 null 문자를 포함하지 않고 버퍼에 기록된 TCHAR수를 포함합니다.

[in, out] pcchResultBuf

szResultBuf변수가 가리키는 버퍼의 크기(TCHAR)를 지정하는 변수에 대한 포인터입니다. 함수가 ERROR_SUCCESS반환하면 이 변수는 종료 null 문자를 포함하지 않고 szResultBuf복사된 데이터의 크기를 포함합니다. szResultBuf 충분히 크지 않으면 함수는 ERROR_MORE_DATA 반환하고 종료 null 문자를 포함하지 않고 필요한 크기를 pcchResultBuf가리키는 변수에 저장합니다.

반환 값

MsiFormatRecord 함수는 다음 값 중 하나를 반환합니다.

발언

MsiFormatRecord 함수는 다음 형식 프로세스를 사용합니다.

형식이 지정된 매개 변수는 대괄호 [...]로 묶입니다. 대괄호는 내부 외부에서 대체가 확인되므로 반복할 수 있습니다.

문자열의 일부가 중괄호 { }로 묶이고 대괄호가 없는 경우 중괄호를 포함하여 변경되지 않은 상태로 유지됩니다.

문자열의 일부가 중괄호 { } 중괄호로 묶이고 하나 이상의 속성 이름을 포함하는 경우 모든 속성이 발견되면 중괄호 없이 텍스트(확인된 대체 포함)가 표시됩니다. 속성을 찾을 수 없으면 중괄호와 중괄호 자체의 모든 텍스트가 제거됩니다.

지연된 실행 사용자 지정 작업의 경우 msiFormatRecord CustomActionData 지원하며 ProductCode 속성만 . 자세한 내용은 지연 실행 사용자 지정 작업대한 컨텍스트 정보 가져오기 참조하세요.

다음 단계에서는 MsiFormatRecord 함수를 사용하여 문자열의 서식을 지정하는 방법을 설명합니다.

MsiFormatRecord 함수를 사용하여 문자열의 서식을 지정하려면

  1. 숫자 매개 변수는 표식을 해당 레코드 필드의 값으로 바꿔 텍스트가 생성되지 않는 누락 또는 null 값으로 대체됩니다.
  2. 결과 문자열은 다음에 설명된 해당 값으로 기록되지 않은 매개 변수를 대체하여 처리됩니다.
    • "[propertyname]" 형식의 부분 문자열이 발견되면 속성 값으로 바뀝니다.
    • "[%environmentvariable]" 형식의 부분 문자열이 있으면 환경 변수의 값이 대체됩니다.
    • 양식의 부분 문자열 "[#filekey]"이 발견되면 파일의 전체 경로로 바뀝니다. 파일 테이블키로 사용되는 filekey 값으로 바뀝니다. "[#filekey]" 값은 비어 있으며 설치 관리자가 CostInitialize 작업, FileCost 작업CostFinalize 작업실행할 때까지 경로로 대체되지 않습니다. "[#filekey]" 값은 파일이 속한 구성 요소의 설치 상태에 따라 달라집니다. 구성 요소가 원본에서 실행되는 경우 값은 파일의 원본 위치에 대한 경로입니다. 구성 요소가 로컬로 실행되는 경우 값은 설치 후 파일의 대상 위치에 대한 경로입니다. 구성 요소가 없으면 경로가 비어 있습니다. 구성 요소의 설치 상태를 확인하는 방법에 대한 자세한 내용은 기능, 구성 요소, 파일설치를 확인하세요.
    • "[$componentkey]" 형식의 부분 문자열이 발견되면 구성 요소의 설치 디렉터리로 대체되고 구성 요소 테이블키로 사용되는 componentkey 값으로 바뀝니다. "[$componentkey]" 값은 비어 있으며 설치 관리자가 CostInitialize 작업실행, FileCost 작업및 CostFinalize 작업때까지 디렉터리로 대체되지 않습니다. "[$componentkey]" 값은 구성 요소의 설치 상태에 따라 달라집니다. 구성 요소가 원본에서 실행되는 경우 값은 파일의 원본 디렉터리입니다. 구성 요소가 로컬로 실행되는 경우 값은 설치 후 대상 디렉터리입니다. 구성 요소가 없으면 값은 비워 집니다. 구성 요소의 설치 상태를 확인하는 방법에 대한 자세한 내용은 기능, 구성 요소, 파일설치를 확인하세요.
    • 구성 요소가 이미 설치되어 있고 현재 설치 중에 다시 설치, 제거 또는 이동되지 않는 경우 구성 요소의 작업 상태는 null이므로 문자열 "[$componentkey]"은 Null로 평가됩니다.
    • "[\c]" 형식의 부분 문자열이 발견되면 추가 처리 없이 문자로 바뀝니다. 백슬래시 뒤의 첫 번째 문자만 유지됩니다. 다른 모든 항목이 제거됩니다.
ERROR_MORE_DATA 반환되면 포인터인 매개 변수는 문자열을 보유하는 데 필요한 버퍼의 크기를 제공합니다. ERROR_SUCCESS 반환되면 문자열 버퍼에 기록된 문자 수를 제공합니다. 따라서 버퍼를 지정하는 매개 변수에 대해 빈 문자열(예: "")을 전달하여 버퍼의 크기를 가져올 수 있습니다. Null(value=0)을 전달하여 버퍼의 크기를 확인하려고 시도하지 마세요.

메모

msiquery.h 헤더는 MSiFormatRecord를 유니코드 전처리기 상수의 정의에 따라 이 함수의 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
헤더 msiquery.h
라이브러리 Msi.lib
DLL Msi.dll

참고 항목

Windows Installer 함수의 인수로 Null 전달