Поделиться через


Функция VerInstallFileA (winver.h)

Устанавливает указанный файл на основе сведений, возвращаемых из функции VerFindFile. VerInstallFile распаковывает файл, при необходимости назначает уникальное имя файла и проверяет наличие ошибок, таких как устаревшие файлы.

Синтаксис

DWORD VerInstallFileA(
  [in]      DWORD  uFlags,
  [in]      LPCSTR szSrcFileName,
  [in]      LPCSTR szDestFileName,
  [in]      LPCSTR szSrcDir,
  [in]      LPCSTR szDestDir,
  [in]      LPCSTR szCurDir,
  [out]     LPSTR  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 получает размер в символах данных, возвращаемых в szTmpFile, включая завершающий символ NULL. Если буфер слишком мал, чтобы содержать все данные, 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
0x0002000L
Функция не может считывать конечные (существующие) файлы. Это предотвращает проверку атрибутов файла функцией.
VIF_CANNOTREADSRC
0x00010000L
Функция не может считывать исходный файл. Это может означать, что путь не указан должным образом.
VIF_CANNOTRENAME
0x00002000L
Функция не может переименовать временный файл, но уже удалила целевой файл.
VIF_DIFFCODEPG
0x00000010L
Для нового файла требуется кодовая страница, которая не может отображаться версией системы, запущенной в данный момент. Эта ошибка может быть переопределена путем вызова VerInstallFile с набором флагов VIFF_FORCEINSTALL.
VIF_DIFFLANG
0x000000008L
Новые и существующие файлы имеют разные языковые или кодовые значения. Эта ошибка может быть переопределена путем вызова VerInstallFile с набором флагов VIFF_FORCEINSTALL.
VIF_DIFFTYPE
0x000000020L
Новый файл имеет другой тип, подтип или операционную систему из предварительного файла. Эта ошибка может быть переопределена путем вызова VerInstallFile с набором флагов VIFF_FORCEINSTALL.
VIF_FILEINUSE
0x00000080L
Существующий файл используется системой и не может быть удален.
VIF_MISMATCH
0x000000002L
Новые и существующие файлы отличаются в одном или нескольких атрибутах. Эта ошибка может быть переопределена путем вызова VerInstallFile с набором флагов VIFF_FORCEINSTALL.
VIF_OUTOFMEMORY
0x00008000L
Функция не может завершить запрошенную операцию из-за нехватки памяти. Как правило, это означает, что приложению не хватает памяти, пытающейся развернуть сжатый файл.
VIF_OUTOFSPACE
0x00000100L
Функция не может создать временный файл из-за нехватки места на целевом диске.
VIF_SHARINGVIOLATION
0x00000400L
Не удалось выполнить операцию чтения, создания, удаления или переименования из-за нарушения общего доступа.
VIF_SRCOLD
0x000000004L
Файл, который необходимо установить, старше, чем существующий файл. Эта ошибка может быть переопределена путем вызова VerInstallFile с набором флагов VIFF_FORCEINSTALL.
VIF_TEMPFILE
0x000000001L
Временная копия нового файла находится в целевом каталоге. Причина сбоя отражается в других флагах.
VIF_WRITEPROT
0x000000040L
Существующий файл защищен записью. Эта ошибка может быть переопределена путем вызова VerInstallFile с набором флагов VIFF_FORCEINSTALL.

Замечания

Эта функция работает на 16-, 32-разрядных и 64-разрядных образах файлов.

VerInstallFile копирует файл из исходного каталога в целевой каталог. Если szCurDir указывает, что предыдущая версия файла существует в системе, VerInstallFile сравнивает сведения о метке версии файлов. Если ранее установленная версия файла является более последней, чем новая версия, или если атрибуты файлов значительно отличаются, например, если они находятся на разных языках, то VerInstallFile возвращается с одним или несколькими кодами ошибок, которые можно восстановить.

VerInstallFile оставляет временный файл в целевом каталоге. Приложение может переопределить ошибку или удалить временный файл. Если приложение переопределяет ошибку, VerInstallFile удаляет ранее установленную версию и переименовывает временный файл с исходным именем файла.

Заметка

Заголовок winver.h определяет VerInstallFile как псевдоним, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора ЮНИКОДа. Сочетание использования псевдонима, нейтрального для кодирования, с кодом, не зависящим от кодирования, может привести к несоответствиям, которые приводят к ошибкам компиляции или среды выполнения. Дополнительные сведения см. в соглашениях о прототипах функций.

Требования

Требование Ценность
минимальные поддерживаемые клиентские Windows 2000 Профессиональный [только классические приложения]
минимальный поддерживаемый сервер Windows 2000 Server [только классические приложения]
целевая платформа Виндоус
заголовка winver.h (включая Windows.h)
библиотеки Version.lib
DLL Api-ms-win-core-version-l1-1-0.dll

См. также

концептуальные

Справочник

VerFindFile

сведения о версиях