SetupInstallFilesFromInfSectionA 函数 (setupapi.h)

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

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

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

语法

WINSETUPAPI BOOL SetupInstallFilesFromInfSectionA(
  [in] HINF     InfHandle,
  [in] HINF     LayoutInfHandle,
  [in] HSPFILEQ FileQueue,
  [in] PCSTR    SectionName,
  [in] PCSTR    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 的文件名部分(如果指定)将被删除,并替换为源文件的文件名。 指定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