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 的名称
[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
返回值为指示异常的位掩码。 它可以是以下一个或多个值。 所有其他值都是保留的。
返回代码/值 | 描述 |
---|---|
|
由于访问冲突,读取、创建、删除或重命名操作失败。 |
|
szTmpFile 缓冲区太小,无法包含临时源文件的名称。 函数返回时,lpuTmpFileLen 包含保存文件名所需的缓冲区大小。 |
|
该函数无法创建临时文件。 特定错误可能由另一个标志描述。 |
|
该函数无法删除目标文件,也不能删除位于另一个目录中的文件的现有版本。 如果设置了 VIF_TEMPFILE 位,则安装失败,并且可能无法删除目标文件。 |
|
无法删除文件的现有版本,并且未指定 VIFF_DONTDELETEOLD。 |
|
该函数无法加载内阁文件。 |
|
该函数无法加载压缩的文件。 |
|
该函数无法读取目标(现有)文件。 这可以防止函数检查文件的属性。 |
|
该函数无法读取源文件。 这可能意味着路径未正确指定。 |
|
该函数无法重命名临时文件,但已删除目标文件。 |
|
新文件需要当前正在运行的系统版本无法显示的代码页。 通过使用 VIFF_FORCEINSTALL 标志集调用 VerInstallFile,可以重写此错误。 |
|
新的和预先存在的文件具有不同的语言或代码页值。 通过使用 VIFF_FORCEINSTALL 标志集再次调用 VerInstallFile,可以重写此错误。 |
|
新文件具有与预先存在的文件不同的类型、子类型或操作系统。 通过使用 VIFF_FORCEINSTALL 标志集再次调用 VerInstallFile,可以重写此错误。 |
|
预先存在的文件由系统使用,无法删除。 |
|
新的和预先存在的文件在一个或多个属性中有所不同。 通过使用 VIFF_FORCEINSTALL 标志集再次调用 VerInstallFile,可以重写此错误。 |
|
由于内存不足,函数无法完成请求的操作。 通常,这意味着应用程序内存不足,试图扩展压缩文件。 |
|
由于目标驱动器上的磁盘空间不足,该函数无法创建临时文件。 |
|
由于共享冲突,读取、创建、删除或重命名操作失败。 |
|
要安装的文件早于预先存在的文件。 通过使用 VIFF_FORCEINSTALL 标志集再次调用 VerInstallFile,可以重写此错误。 |
|
新文件的临时副本位于目标目录中。 失败原因反映在其他标志中。 |
|
预先存在的文件受写保护。 通过使用 VIFF_FORCEINSTALL 标志集再次调用 VerInstallFile,可以重写此错误。 |
言论
此函数适用于 16 位、32 位和 64 位文件映像。
VerInstallFile 将文件从源目录复制到目标目录。 如果 szCurDir 指示系统上存在文件的早期版本,VerInstallFile 比较文件的版本戳信息。 如果以前安装的文件版本比新版本更新,或者文件的属性明显不同(例如,如果这些文件的语言不同,则 VerInstallFile 返回一个或多个可恢复错误代码。
VerInstallFile 将临时文件保留在目标目录中。 应用程序可以替代错误或删除临时文件。 如果应用程序重写错误,VerInstallFile 删除以前安装的版本,并使用原始文件名重命名临时文件。
注意
winver.h 标头将 VerInstallFile 定义为一个别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将中性编码别名与不中性编码的代码混合使用可能会导致编译或运行时错误不匹配。 有关详细信息,请参阅函数原型的
要求
要求 | 价值 |
---|---|
最低支持的客户端 | Windows 2000 Professional [仅限桌面应用] |
支持的最低服务器 | Windows 2000 Server [仅限桌面应用] |
目标平台 | 窗户 |
标头 | winver.h (包括 Windows.h) |
库 | Version.lib |
DLL | Api-ms-win-core-version-l1-1-0.dll |
另请参阅
概念
参考