Share via


VerInstallFileW 함수(winver.h)

VerFindFile 함수에서 반환된 정보에 따라 지정된 파일을 설치합니다. VerInstallFile 은 필요한 경우 파일의 압축을 풀고 고유한 파일 이름을 할당하고 오래된 파일과 같은 오류를 확인합니다.

구문

DWORD VerInstallFileW(
  [in]      DWORD   uFlags,
  [in]      LPCWSTR szSrcFileName,
  [in]      LPCWSTR szDestFileName,
  [in]      LPCWSTR szSrcDir,
  [in]      LPCWSTR szDestDir,
  [in]      LPCWSTR szCurDir,
  [out]     LPWSTR  szTmpFile,
  [in, out] PUINT   puTmpFileLen
);

매개 변수

[in] uFlags

형식:DWORD

이 매개 변수는 다음 값 중 하나일 수 있습니다. 다른 모든 비트는 예약되어 있습니다.

의미
VIFF_FORCEINSTALL
0x0001
일치하지 않는 버전 번호에 관계없이 파일을 설치합니다. 함수는 설치하는 동안 물리적 오류만 확인합니다.
VIFF_DONTDELETEOLD
0x0002
이전에 설치된 파일이 대상 디렉터리에 없는 경우 이전에 설치된 파일을 삭제하지 않고 파일을 설치합니다.

[in] szSrcFileName

형식: LPCTSTR

설치할 파일의 이름입니다. szSrcDir 매개 변수가 가리키는 디렉터리의 파일 이름입니다. 파일 이름은 경로가 아닌 파일 이름 및 확장명만 포함할 수 있습니다.

[in] szDestFileName

형식: LPCTSTR

VerInstallFile이라는 이름은 설치 시 새 파일을 제공합니다. 이 파일 이름은 szSrcFileName 디렉터리의 파일 이름과 다를 수 있습니다. 새 이름에는 경로가 아닌 파일 이름 및 확장명만 포함되어야 합니다.

[in] szSrcDir

형식: LPCTSTR

파일을 찾을 수 있는 디렉터리의 이름입니다.

[in] szDestDir

형식: LPCTSTR

파일을 설치해야 하는 디렉터리의 이름입니다. VerFindFile은szDestDir 매개 변수에 이 값을 반환합니다.

[in] szCurDir

형식: LPCTSTR

이 파일의 기존 버전을 찾을 수 있는 디렉터리의 이름입니다. VerFindFile은szCurDir 매개 변수에 이 값을 반환합니다.

[out] szTmpFile

형식: LPTSTR

원본 파일의 임시 복사본 이름입니다. 버퍼는 필수는 아니지만 최소 _MAX_PATH 문자여야 하며 입력 시 비어 있어야 합니다.

[in, out] puTmpFileLen

형식: PUINT

szTmpFile 버퍼의 길이입니다. 이 포인터는 NULL이 아니어야 합니다.

함수가 반환되면 lpuTmpFileLen 은 종료 null 문자를 포함하여 szTmpFile에서 반환된 데이터의 크기(문자)를 받습니다. 버퍼가 너무 작아서 모든 데이터를 포함할 수 없는 경우 lpuTmpFileLen 은 데이터를 보유하는 데 필요한 버퍼의 크기가 됩니다.

반환 값

형식:DWORD

반환 값은 예외를 나타내는 비트 마스크입니다. 다음 값 중 하나 이상일 수 있습니다. 다른 모든 값은 예약되어 있습니다.

반환 코드/값 설명
VIF_ACCESSVIOLATION
0x00000200L
액세스 위반으로 인해 읽기, 만들기, 삭제 또는 이름 바꾸기 작업이 실패했습니다.
VIF_BUFFTOOSMALL
0x00040000L
szTmpFile 버퍼가 너무 작아서 임시 원본 파일의 이름을 포함할 수 없습니다. 함수가 반환되면 lpuTmpFileLen 에는 파일 이름을 보유하는 데 필요한 버퍼의 크기가 포함됩니다.
VIF_CANNOTCREATE
0x00000800L
함수는 임시 파일을 만들 수 없습니다. 특정 오류는 다른 플래그로 설명할 수 있습니다.
VIF_CANNOTDELETE
0x00001000L
함수는 대상 파일을 삭제할 수 없거나 다른 디렉터리에 있는 파일의 기존 버전을 삭제할 수 없습니다. VIF_TEMPFILE 비트가 설정되면 설치에 실패하고 대상 파일을 삭제할 수 없습니다.
VIF_CANNOTDELETECUR
0x00004000L
파일의 기존 버전을 삭제할 수 없으며 VIFF_DONTDELETEOLD 지정되지 않았습니다.
VIF_CANNOTLOADCABINET
0x00100000L
함수는 캐비닛 파일을 로드할 수 없습니다.
VIF_CANNOTLOADLZ32
0x00080000L
함수는 압축된 파일을 로드할 수 없습니다.
VIF_CANNOTREADDST
0x00020000L
함수는 대상(기존) 파일을 읽을 수 없습니다. 이렇게 하면 함수가 파일의 특성을 검사할 수 없습니다.
VIF_CANNOTREADSRC
0x00010000L
함수가 원본 파일을 읽을 수 없습니다. 이는 경로가 제대로 지정되지 않음을 의미할 수 있습니다.
VIF_CANNOTRENAME
0x00002000L
함수는 임시 파일의 이름을 바꿀 수 없지만 대상 파일을 이미 삭제했습니다.
VIF_DIFFCODEPG
0x00000010L
새 파일에는 현재 실행 중인 시스템 버전에서 표시할 수 없는 코드 페이지가 필요합니다. 이 오류는 VIFF_FORCEINSTALL 플래그가 설정된 VerInstallFile을 호출하여 재정의할 수 있습니다.
VIF_DIFFLANG
0x00000008L
새 파일과 기존 파일에는 언어 또는 코드 페이지 값이 다릅니다. 이 오류는 VIFF_FORCEINSTALL 플래그 집합을 사용하여 VerInstallFile을 다시 호출하여 재정의할 수 있습니다.
VIF_DIFFTYPE
0x00000020L
새 파일에는 기존 파일과 다른 형식, 하위 형식 또는 운영 체제가 있습니다. 이 오류는 VIFF_FORCEINSTALL 플래그 집합을 사용하여 VerInstallFile을 다시 호출하여 재정의할 수 있습니다.
VIF_FILEINUSE
0x00000080L
기존 파일은 시스템에서 사용 중이며 삭제할 수 없습니다.
VIF_MISMATCH
0x00000002L
새 파일과 기존 파일은 하나 이상의 특성이 다릅니다. 이 오류는 VIFF_FORCEINSTALL 플래그가 설정된 VerInstallFile을 다시 호출하여 재정의할 수 있습니다.
VIF_OUTOFMEMORY
0x00008000L
메모리 부족으로 인해 함수가 요청된 작업을 완료할 수 없습니다. 일반적으로 이는 애플리케이션이 압축된 파일을 확장하려는 메모리가 부족했음을 의미합니다.
VIF_OUTOFSPACE
0x00000100L
대상 드라이브의 디스크 공간이 부족하여 함수에서 임시 파일을 만들 수 없습니다.
VIF_SHARINGVIOLATION
0x00000400L
공유 위반으로 인해 읽기, 만들기, 삭제 또는 이름 바꾸기 작업이 실패했습니다.
VIF_SRCOLD
0x00000004L
설치할 파일이 기존 파일보다 오래된 경우 이 오류는 VIFF_FORCEINSTALL 플래그가 설정된 VerInstallFile을 다시 호출하여 재정의할 수 있습니다.
VIF_TEMPFILE
0x00000001L
새 파일의 임시 복사본은 대상 디렉터리에 있습니다. 실패의 원인은 다른 플래그에 반영됩니다.
VIF_WRITEPROT
0x00000040L
기존 파일은 쓰기로 보호됩니다. 이 오류는 VIFF_FORCEINSTALL 플래그가 설정된 VerInstallFile을 다시 호출하여 재정의할 수 있습니다.

설명

이 함수는 16비트, 32비트 및 64비트 파일 이미지에서 작동합니다.

VerInstallFile 은 원본 디렉터리에서 대상 디렉터리로 파일을 복사합니다. szCurDir에서 이전 버전의 파일이 시스템에 있음을 나타내는 경우 VerInstallFile은 파일의 버전 스탬프 정보를 비교합니다. 이전에 설치한 파일 버전이 새 버전보다 최신이거나 파일의 특성이 크게 다른 경우(예: 다른 언어에 있는 경우) VerInstallFile 은 하나 이상의 복구 가능한 오류 코드와 함께 를 반환합니다.

VerInstallFile 은 임시 파일을 대상 디렉터리에 둡니다. 애플리케이션은 오류를 재정의하거나 임시 파일을 삭제할 수 있습니다. 애플리케이션이 오류를 재정의하는 경우 VerInstallFile 은 이전에 설치된 버전을 삭제하고 임시 파일 이름을 원래 파일 이름으로 바꿉니다.

참고

winver.h 헤더는 VERInstallFile을 유니코드 전처리기 상수의 정의에 따라 이 함수의 ANSI 또는 유니코드 버전을 자동으로 선택하는 별칭으로 정의합니다. 인코딩 중립 별칭을 인코딩 중립이 아닌 코드와 혼합하면 컴파일 또는 런타임 오류가 발생하는 불일치가 발생할 수 있습니다. 자세한 내용은 함수 프로토타입에 대한 규칙을 참조하세요.

요구 사항

   
지원되는 최소 클라이언트 Windows 2000 Professional[데스크톱 앱만]
지원되는 최소 서버 Windows 2000 Server[데스크톱 앱만]
대상 플랫폼 Windows
헤더 winver.h(Windows.h 포함)
라이브러리 Version.lib
DLL Api-ms-win-core-version-l1-1-0.dll

추가 정보

개념

참조

VerFindFile

버전 정보