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
此参数的取值可为下列值之一: 所有其他位都保留。
Value | 含义 |
---|---|
|
安装文件,而不考虑不匹配的版本号。 函数仅在安装过程中检查物理错误。 |
|
如果以前安装的文件不在目标目录中,则安装文件而不删除以前安装的文件。 |
[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
返回值是指示异常的位掩码。 它可以是下面的一个或多个值。 所有其他值都保留。
返回代码/值 | 说明 |
---|---|
|
由于访问冲突,读取、创建、删除或重命名操作失败。 |
|
szTmpFile 缓冲区太小,无法包含临时源文件的名称。 当函数返回时, lpuTmpFileLen 包含保存文件名所需的缓冲区大小。 |
|
函数无法创建临时文件。 特定错误可能由另一个标志描述。 |
|
函数无法删除目标文件,也不能删除位于另一个目录中的现有文件版本。 如果设置了 VIF_TEMPFILE 位,则安装失败,并且可能无法删除目标文件。 |
|
无法删除文件的现有版本,并且未指定 VIFF_DONTDELETEOLD 。 |
|
函数无法加载 cabinet 文件。 |
|
函数无法加载压缩的文件。 |
|
函数无法读取目标 (现有) 文件。 这会阻止函数检查文件的属性。 |
|
函数无法读取源文件。 这可能意味着未正确指定路径。 |
|
函数无法重命名临时文件,但已删除目标文件。 |
|
新文件需要当前运行的系统版本无法显示的代码页。 可以通过调用设置了 VIFF_FORCEINSTALL 标志的 VerInstallFile 来替代此错误。 |
|
新的和预先存在的文件具有不同的语言或代码页值。 可以通过再次调用 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 定义为别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将非特定编码别名的使用与非非特定编码的代码混合使用可能会导致不匹配,从而导致编译或运行时错误。 有关详细信息,请参阅 函数原型的约定。
要求
最低受支持的客户端 | Windows 2000 Professional [仅限桌面应用] |
最低受支持的服务器 | Windows 2000 Server [仅限桌面应用] |
目标平台 | Windows |
标头 | winver.h (包括 Windows.h) |
Library | Version.lib |
DLL | Api-ms-win-core-version-l1-1-0.dll |
请参阅
概念性
引用