다음을 통해 공유


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

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

[in] szCurDir

형식: LPCTSTR

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

[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을 UNICODE 전처리기 상수의 정의에 따라 이 함수의 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

버전 정보