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


Функция 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

Имя каталога, в котором можно найти 2-ю версию этого файла. 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
Функция не может загрузить cab-файл.
VIF_CANNOTLOADLZ32
0x00080000L
Функция не может загрузить сжатый файл.
VIF_CANNOTREADDST
0x00020000L
Функция не может считать целевые (существующие) файлы. Это предотвращает проверку атрибутов файла функцией.
VIF_CANNOTREADSRC
0x00010000L
Функция не может прочитать исходный файл. Это может означать, что путь был указан неправильно.
VIF_CANNOTRENAME
0x00002000L
Функция не может переименовать временный файл, но уже удалила целевой файл.
VIF_DIFFCODEPG
0x00000010L
Для нового файла требуется кодовая страница, которая не может быть отображена версией системы, работающей в данный момент. Эту ошибку можно переопределить, вызвав VerInstallFile с установленным флагом VIFF_FORCEINSTALL .
VIF_DIFFLANG
0x00000008L
Новые и существующие файлы имеют разные значения языка или кодовой страницы. Эту ошибку можно переопределить, повторно вызвав VerInstallFile с установленным флагом VIFF_FORCEINSTALL .
VIF_DIFFTYPE
0x00000020L
Новый файл имеет другой тип, подтип или операционную систему, отличные от ранее существовающего файла. Эту ошибку можно переопределить, повторно вызвав VerInstallFile с установленным флагом VIFF_FORCEINSTALL .
VIF_FILEINUSE
0x00000080L
Существующий файл используется системой и не может быть удален.
VIF_MISMATCH
0x00000002L
Новые и существующие файлы отличаются одним или несколькими атрибутами. Эту ошибку можно переопределить, вызвав VerInstallFile еще раз с установленным флагом VIFF_FORCEINSTALL .
VIF_OUTOFMEMORY
0x00008000L
Функция не может завершить запрошенную операцию из-за нехватки памяти. Как правило, это означает, что приложению не хватает памяти при попытке развернуть сжатый файл.
VIF_OUTOFSPACE
0x00000100L
Функция не может создать временный файл из-за нехватки места на диске назначения.
VIF_SHARINGVIOLATION
0x00000400L
Операция чтения, создания, удаления или переименования завершилась сбоем из-за нарушения общего доступа.
VIF_SRCOLD
0x00000004L
Устанавливаемая версия файла старше предыдущего файла. Эту ошибку можно переопределить, вызвав VerInstallFile еще раз с установленным флагом VIFF_FORCEINSTALL .
VIF_TEMPFILE
0x00000001L
Временная копия нового файла находится в целевом каталоге. Причина сбоя отражена в других флагах.
VIF_WRITEPROT
0x00000040L
Существующий файл защищен от записи. Эту ошибку можно переопределить, вызвав VerInstallFile еще раз с установленным флагом VIFF_FORCEINSTALL .

Комментарии

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

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

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

Примечание

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

Требования

   
Минимальная версия клиента Windows 2000 Professional [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Целевая платформа Windows
Header winver.h (включая Windows.h)
Библиотека Version.lib
DLL Api-ms-win-core-version-l1-1-0.dll

См. также раздел

Основные понятия

Справочные материалы

VerFindFile

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