SetupInstallFilesFromInfSectionW 函数 (setupapi.h)

[此函数可用于“要求”部分所示的操作系统。 它可能在后续版本中变更或不可用。 不应再使用 SetupAPI 来安装应用程序。 请改用 Windows Installer 开发应用程序安装程序。 SetupAPI 继续用于安装设备驱动程序。]

SetupInstallFilesFromInfSection 函数将“复制文件”、“删除文件”和“重命名文件”部分中列出的安装的所有文件排队。

如果修改了文件,则此函数的调用方必须具有写入目标目录的权限。

语法

WINSETUPAPI BOOL SetupInstallFilesFromInfSectionW(
  [in] HINF     InfHandle,
  [in] HINF     LayoutInfHandle,
  [in] HSPFILEQ FileQueue,
  [in] PCWSTR   SectionName,
  [in] PCWSTR   SourceRootPath,
  [in] UINT     CopyFlags
);

参数

[in] InfHandle

包含要安装的节的 INF 文件的句柄。

[in] LayoutInfHandle

指向包含 SourceDisksFiles 和 SourceDisksNames 节的 INF 文件的句柄的可选指针。

如果未指定 LayoutInfHandle ,则使用 InfHandle 中的 SourceDisksFiles 和 SourceDisksNames 部分。

[in] FileQueue

要在其中添加安装操作的队列的句柄。

[in] SectionName

InfHandle 参数中“安装”部分的名称,该参数列出了包含要安装的文件的“复制文件”、“删除文件”和“重命名文件”部分。

使用 以 null 结尾的字符串。

[in] SourceRootPath

指向要复制的源文件的根路径的可选指针,例如 A:\ 或 \pegasus\win\install。

使用 以 null 结尾的字符串。

[in] CopyFlags

指向控制文件复制操作行为的一组标志的可选指针。

标志可以是以下值的组合。

SP_COPY_DELETESOURCE

复制任务成功时删除源文件。

如果删除任务失败,则不会通知调用方。

SP_COPY_REPLACEONLY

仅复制文件以覆盖目标路径中的文件。

SP_COPY_NEWER_OR_SAME

检查复制的每个文件,以确定版本资源指示它是同一版本,还是不比目标上的现有副本新。

如果源文件不是较新或相等的版本,函数会通知可以取消复制的调用方。

版本检查期间使用的文件版本信息在 VS_FIXEDFILEINFO 结构的 dwFileVersionMS dwFileVersionLS 成员中指定,由 Win32 版本函数填充。

如果其中一个文件没有版本资源,或者它们具有相同的版本信息,则会将源文件视为较新。

SP_COPY_NEWER_ONLY

检查要复制的每个文件,以确定其版本资源是否指示它不高于目标上的现有副本。

如果源文件较新,但在版本上不等于现有目标,则会复制该文件。

SP_COPY_NOOVERWRITE

检查以确定目标文件是否存在。

如果目标文件存在,该函数会通知可以取消复制的调用方。

SP_COPY_NODECOMP

不解压缩文件。

设置此标志后,不会为目标文件提供源名称的未压缩形式,例如,如果将 f:\x86\cmd.ex_ 复制到 \install\temp,则结果为以下目标文件:\install\temp\cmd.ex_。

如果未指定SP_COPY_NODECOMP标志,则会解压缩文件,并 \install\temp\cmd.exe 调用目标。

DestinationName 的 filename 部分(如果指定)将被删除,并替换为源文件的文件名。 指定SP_COPY_NODECOMP时,无法检查语言和版本信息。

SP_COPY_LANGUAGEAWARE

检查要复制的每个文件,以确定语言是否不同于目标上已有的任何现有文件的语言。

如果语言不同,函数会通知可以取消复制任务的调用方。

SP_COPY_SOURCE_ABSOLUTE

SourceFile 是完整的源路径。

不要在 INF 文件的 SourceDisksNames 部分中查找它。

SP_COPY_SOURCEPATH_ABSOLUTE

SourcePathRoot 是源文件的完整路径部分。

忽略在 INF 文件的 SourceDisksNames 节中为文件所在的源媒体指定的相对源源。 如果指定了SP_COPY_SOURCE_ABSOLUTE,则忽略此标志。

SP_COPY_FORCE_IN_USE

如果目标存在且正在使用中,请在下次系统重新启动时将文件排队进行复制。

SP_COPY_IN_USE_NEEDS_REBOOT

如果在复制操作期间使用文件,则提醒用户系统需要重新启动。

SP_COPY_NOSKIP

不为用户提供跳过文件的选项。

SP_COPY_FORCE_NOOVERWRITE

检查以确定目标文件是否存在,以及目标是否存在,该文件不会被覆盖,并且不会通知调用方。

SP_COPY_FORCE_NEWER

检查正在复制的每个文件,以确定其版本资源 (或非映像文件的时间戳) 指示它不比目标上的现有副本更新。

如果要复制的文件不是较新的文件,则不会复制该文件,并且不会通知调用方。

SP_COPY_WARNIFSKIP

警告如果用户尝试跳过文件,跳过文件可能会影响安装。

将此标志用于系统关键文件。

返回值

如果函数成功,则返回值为非零值。

如果函数失败,则返回值为 0(零)。 要获得更多的错误信息,请调用 GetLastError。

注解

SetupInstallFilesFromInfSection 可以多次调用,以将多个 INF 节中指定的文件排队。 成功提交队列并复制、重命名和/或删除文件后,可以调用 SetupInstallFromInfSection 来执行注册表和 INI 安装操作。

如果将 UNC 目录指定为文件安装的目标目录,则必须在调用 SetupInstallFilesFromInfSection 之前确保 UNC 目录存在。 安装函数不会检查是否存在目录,也不会创建 UNC 目录。 如果目标 UNC 目录不存在,则文件安装将失败。

注意

setupapi.h 标头将 SetupInstallFilesFromInfSection 定义为别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将非特定编码别名与非非特定编码的代码混合使用可能会导致不匹配,从而导致编译或运行时错误。 有关详细信息,请参阅 函数原型的约定

要求

要求
最低受支持的客户端 Windows XP [仅限桌面应用]
最低受支持的服务器 Windows Server 2003 [仅限桌面应用]
目标平台 Windows
标头 setupapi.h
Library Setupapi.lib
DLL Setupapi.dll

请参阅

函数

概述

SetupInstallFromInfSection

SetupInstallServicesFromInfSection