다음을 통해 공유


MsiFormatRecordA 함수(msiquery.h)

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

구문

UINT MsiFormatRecordA(
  [in]      MSIHANDLE hInstall,
  [in]      MSIHANDLE hRecord,
  [out]     LPSTR     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 함수는 다음 형식 프로세스를 사용합니다.

서식을 지정할 매개 변수는 대괄호 [...]로 묶입니다. 대괄호는 내부 외부에서 대체하는 것으로 확인되므로 반복될 수 있습니다.

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

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

지연된 실행 사용자 지정 작업의 경우 MsiFormatRecordCustomActionDataProductCode 속성만 지원합니다. 자세한 내용은 지연된 실행 사용자 지정 작업에 대한 컨텍스트 정보 가져오기를 참조하세요.

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

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

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

추가 정보

Null을 Windows Installer Functions의 인수로 전달