Функция 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
Этот параметр может принимать одно из указанных ниже значений. Все остальные биты зарезервированы.
[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
Возвращаемое значение — это битовая маска, указывающая на исключения. Это может быть одно или несколько из следующих значений. Все остальные значения зарезервированы.
Возвращаемый код/значение | Описание |
---|---|
|
Операция чтения, создания, удаления или переименования завершилась сбоем из-за нарушения доступа. |
|
Буфер szTmpFile был слишком мал, чтобы содержать имя временного исходного файла. При возврате функции lpuTmpFileLen содержит размер буфера, необходимый для хранения имени файла. |
|
Функция не может создать временный файл. Конкретная ошибка может быть описана другим флагом. |
|
Функция не может удалить целевой файл или существующую версию файла, расположенную в другом каталоге. Если задан бит VIF_TEMPFILE , установка завершилась сбоем и, вероятно, не удастся удалить целевой файл. |
|
Не удалось удалить существующую версию файла, и VIFF_DONTDELETEOLD не указан. |
|
Функция не может загрузить cab-файл. |
|
Функция не может загрузить сжатый файл. |
|
Функция не может считать целевые (существующие) файлы. Это предотвращает проверку атрибутов файла функцией. |
|
Функция не может прочитать исходный файл. Это может означать, что путь был указан неправильно. |
|
Функция не может переименовать временный файл, но уже удалила целевой файл. |
|
Для нового файла требуется кодовая страница, которая не может быть отображена версией системы, работающей в данный момент. Эту ошибку можно переопределить, вызвав VerInstallFile с установленным флагом VIFF_FORCEINSTALL . |
|
Новые и существующие файлы имеют разные значения языка или кодовой страницы. Эту ошибку можно переопределить, повторно вызвав VerInstallFile с установленным флагом VIFF_FORCEINSTALL . |
|
Новый файл имеет другой тип, подтип или операционную систему, отличные от ранее существовающего файла. Эту ошибку можно переопределить, повторно вызвав VerInstallFile с установленным флагом VIFF_FORCEINSTALL . |
|
Существующий файл используется системой и не может быть удален. |
|
Новые и существующие файлы отличаются одним или несколькими атрибутами. Эту ошибку можно переопределить, вызвав VerInstallFile еще раз с установленным флагом VIFF_FORCEINSTALL . |
|
Функция не может завершить запрошенную операцию из-за нехватки памяти. Как правило, это означает, что приложению не хватает памяти при попытке развернуть сжатый файл. |
|
Функция не может создать временный файл из-за нехватки места на диске назначения. |
|
Операция чтения, создания, удаления или переименования завершилась сбоем из-за нарушения общего доступа. |
|
Устанавливаемая версия файла старше предыдущего файла. Эту ошибку можно переопределить, вызвав VerInstallFile еще раз с установленным флагом VIFF_FORCEINSTALL . |
|
Временная копия нового файла находится в целевом каталоге. Причина сбоя отражена в других флагах. |
|
Существующий файл защищен от записи. Эту ошибку можно переопределить, вызвав 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 |
См. также раздел
Основные понятия
Справочные материалы