根据是否在系统中找到文件的另一个版本,VerFindFile功能决定了在哪里安装文件。指定缓冲区中的值VerFindFile返回值将用于后续调用VerInstallFile.
与其他文件安装功能一样,VerFindFile只能与Win32文件映像配合使用。不支持16位Windows文件映像。
DWORD VerFindFile(
DWORD 【dwFlags中】, | //位标志,表示条件函数行为 |
LPTSTR 【szFileName】, | //要安装的文件 |
LPTSTR 【szWinDir】, | // Windows目录 |
LPTSTR 【szAppDir】, | //安装相关文件的目录 |
LPTSTR 【szCurDir】, | //接收当前安装文件的目录路径 |
PUINT 【lpuCurDirLen】, | // szCurDir中的字符串大小 |
LPTSTR 【szDestDir】, | //接收推荐目的地目录的路径 |
PUINT 【lpuDestDirLen】 | // szDestDir中的字符串大小 |
); |
参数
【dwFlags中】
包含一个标志的位掩码。该参数可以是以下值:
旗 | 描述 |
VFFF_ISSHAREDFILE | 源文件可以由多个应用程序共享。应用程序可以使用此信息来确定文件应在哪里复制。 |
所有其他值都保留。
【szFileName】
指向要安装的文件的名称。文件名只能包含文件名和扩展名,而不是路径。
【szWinDir】
指向Windows正在运行或将要运行的目录。该字符串由GetWindowsDirectory函数返回。
【szAppDir】
指向安装程序正在安装一组相关文件的目录。如果安装程序正在安装应用程序,则这是应用程序所在的目录。除非另有说明,否则此参数也指向应用程序的当前目录。
【szCurDir】
指向缓冲区,接收正在安装的文件的当前版本的路径。该路径是一个零终止的字符串。如果未安装当前版本,缓冲区将包含零长度的字符串。缓冲区应至少为_MAX_PATH个字符,尽管这不是必需的。
【lpuCurDirLen】
指向包含【szCurDir】缓冲区长度的变量。该指针不能为NULL。
当函数返回时,【lpuCurDirLen】包含【szCurDir】中返回的数据的大小(字符),包括终止空字符。如果缓冲区太小而不能包含所有数据,【lpuCurDirLen】将是保存路径所需的缓冲区的大小。
【szDestDir】
指向缓冲区,接收VerFindFile推荐的安装位置的路径。该路径是一个零终止的字符串。缓冲区应至少为_MAX_PATH个字符,尽管这不是必需的。
【lpuDestDirLen】
指向包含【szDestDir】缓冲区长度的变量。该指针不能为NULL。
当函数返回时,【lpuDestDirLen】包含【szDestDir】中返回的数据的大小(以字符为单位),包括终止空字符。如果缓冲区太小而不能包含所有数据,则【lpuDestDirLen】将是保存路径所需的缓冲区的大小。
返回值
返回值是指示文件状态的位掩码。它可以是一个或多个以下值:
值 | 含义 |
VFF_CURNEDEST | 当前安装的文件版本不在推荐的目的地。 |
VFF_FILEINUSE | Windows正在使用当前安装的文件版本;因此,文件不能被覆盖或删除。 |
VFF_BUFFTOOSMALL | 至少有一个缓冲区太小,不能包含相应的字符串。应用程序应检查输出缓冲区以确定哪个缓冲区太小。 |
所有其他值都保留。
备注
VerFindFile使用OpenFile功能搜索指定文件的副本。但是,它从指定的Windows目录中确定系统目录,或搜索路径。
如果【dwFlags中】参数指示该文件对该应用程序是私有的(不是VFFF_ISSHAREDFILE),则VerFindFile建议将文件安装在应用程序的目录中。否则,如果系统正在运行Windows的共享副本,则该函数建议在Windows目录中安装该文件。如果系统正在运行Windows的私有副本,则该函数建议将文件安装在系统目录中。
也可以看看