Функция SetupInstallFromInfSectionA (setupapi.h)
[Эта функция доступна для использования в операционных системах, указанных в разделе Требования. В последующих версиях он может быть изменен или недоступен. SetupAPI больше не следует использовать для установки приложений. Вместо этого используйте установщик Windows для разработки установщиков приложений. SetupAPI по-прежнему используется для установки драйверов устройств.]
Функция SetupInstallFromInfSection выполняет все директивы в разделе Install INF-файла.
При изменении реестра или файла вызывающий объект этой функции должен иметь права на запись в системный или целевой каталог.
Синтаксис
WINSETUPAPI BOOL SetupInstallFromInfSectionA(
HWND Owner,
HINF InfHandle,
PCSTR SectionName,
UINT Flags,
HKEY RelativeKeyRoot,
PCSTR SourceRootPath,
UINT CopyFlags,
PSP_FILE_CALLBACK_A MsgHandler,
PVOID Context,
HDEVINFO DeviceInfoSet,
PSP_DEVINFO_DATA DeviceInfoData
);
Параметры
Owner
Необязательный указатель на дескриптор окна, которому принадлежат все диалоговые окна, созданные во время установки, например для запроса диска или копирования файлов. Если владелец не указан, эти диалоговые окна становятся окнами верхнего уровня.
InfHandle
Дескриптор INF-файла, содержащего обрабатываемый раздел.
SectionName
Имя раздела Install в ОБРАБАТЫВАЕМом INF-файле.
Flags
Управляет выполняемыми действиями. Флаги могут быть комбинацией следующих значений.
SPINST_INIFILES
Выполнение операций с INI-файлом (строки UpdateInis, UpdateIniFields в обрабатываемом разделе Установки).
SPINST_REGISTRY
Выполнение операций с реестром (строки AddReg, DelReg в обрабатываемом разделе Установки ).
SPINST_INI2REG
Выполнение операций ini-file в реестре (строки Ini2Reg в обрабатываемом разделе "Установка ").
SPINST_LOGCONFIG
Этот флаг используется только при установке драйвера устройства.
Выполнение операций логической конфигурации (строки LogConf в разделе "Установка " обрабатываются). Этот флаг используется, только если указаны DeviceInfoSet и DeviceInfoData .
Дополнительные сведения об установке драйверов устройств, LogConf, DeviceInfoSet или DeviceInfoData см. в руководстве программиста DDK.
SPINST_FILES
Выполнение операций с файлами (строки CopyFiles, DelFiles, RenFiles в обрабатываемом разделе Установки ).
SPINST_ALL
Выполнение всех операций установки.
SPINST_REGISTERCALLBACKAWARE
При использовании директивы INF RegisterDlls для самостоятельной регистрации библиотек DLL в Windows 2000 вызывающие элементы SetupInstallFromInfSection могут получать уведомления о каждом файле по мере его регистрации или отмены регистрации. Чтобы отправить SPFILENOTIFY_STARTREGISTRATION или SPFILENOTIFY_ENDREGISTRATION уведомление в подпрограмму обратного вызова, включите SPINST_REGISTERCALLBACKAWARE, а также SPINST_REGSVR или SPINST_UNREGSVR. Вызывающий объект также должен задать параметр MsgHandler .
SPINST_REGSVR
Чтобы отправить уведомление в подпрограмму обратного вызова при регистрации файла, включите SPINST_REGISTERCALLBACKAWARE и SPINST_REGSVR в раздел Флаги. Вызывающий объект также должен указать параметр MsgHandler .
SPINST_UNREGSVR
Чтобы отправить уведомление в подпрограмму обратного вызова при отмене регистрации файла, включите SPINST_REGISTERCALLBACKAWARE и SPINST_UNREGSVR в раздел Флаги. Вызывающий объект также должен указать параметр MsgHandler .
RelativeKeyRoot
Необязательный параметр, который необходимо указать, если флаги включают SPINST_REGISTRY или SPINST_INI2REG. Дескриптор раздела реестра, который будет использоваться в качестве корневого каталога, если в INF-файле в качестве ключа указан HKR. Обратите внимание, что этот параметр игнорируется, если вызывается SetupInstallFromInfSection с необязательными наборами DeviceInfoSet и DeviceInfoData .
SourceRootPath
Корневой каталог источника для копий файлов. Например, A:\ или \pegasus\win\install. Если flags включает SPINST_FILES, а SourceRootPath имеет значение NULL, система предоставляет корневой путь по умолчанию.
CopyFlags
Необязательный параметр, который необходимо указать, если flags включает SPINST_FILES. Указывает флаги, передаваемые функции SetupQueueCopySection , когда файлы помещаются в очередь для копирования. Эти флаги могут быть комбинацией следующих значений.
SP_COPY_DELETESOURCE
Удалите исходный файл после успешного копирования. Если удаление завершается сбоем, вызывающий объект не получает уведомление.
SP_COPY_REPLACEONLY
Скопируйте файл только в том случае, если это приведет к перезаписи файла по целевому пути.
SP_COPY_NEWER_OR_SAME
Проверьте каждый копируемый файл, чтобы узнать, указывает ли его версия ресурсов на то, что она либо та же, либо не новее, чем существующая копия в целевом объекте.
Сведения о версии файла, используемые при проверке версий, указываются в элементах dwFileVersionMS и dwFileVersionLSструктуры VS_FIXEDFILEINFO , заполненных функциями версии. Если у одного из файлов нет ресурсов версии или они содержат идентичные сведения о версии, исходный файл считается более новым.
Если исходный файл не равен по версии или более поздней версии и указан параметр CopyMsgHandler , вызывающий объект получает уведомление и может отменить копирование. Если параметр CopyMsgHandler не указан, файл не копируется.
SP_COPY_NEWER_ONLY
Проверьте каждый копируемый файл, чтобы узнать, указывают ли его ресурсы версии, что он не новее существующей копии в целевом объекте. Если исходный файл является более новым, но по версии не равен существующему целевому объекту, файл копируется.
SP_COPY_NOOVERWRITE
Проверьте, существует ли целевой файл, и, если да, уведомите абонента, который может наказать вето на копию. Если параметр CopyMsgHandler не указан, файл не перезаписывается.
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
Проверьте каждый копируемый файл, чтобы узнать, отличается ли его язык от языка любого существующего файла, уже размещенного в целевом объекте. Если это так, и указан параметр CopyMsgHandler , вызывающий объект получает уведомление и может отменить копирование. Если параметр CopyMsgHandler не указан, файл не копируется.
SP_COPY_SOURCE_ABSOLUTE
SourceFile — это полный исходный путь. Не ищите его в разделе SourceDisksNames INF-файла.
SP_COPY_SOURCEPATH_ABSOLUTE
SourcePathRoot — это полный путь к исходному файлу. Игнорируйте относительный источник, указанный в разделе SourceDisksNames INF-файла для исходного носителя, на котором находится файл. Этот флаг игнорируется, если указан SP_COPY_SOURCE_ABSOLUTE.
SP_COPY_FORCE_IN_USE
Если целевой объект существует, ведите себя так, как если бы он использовался, и поставьте файл в очередь для копирования при следующей перезагрузке системы.
SP_COPY_IN_USE_NEEDS_REBOOT
Если файл использовался во время операции копирования, сообщите пользователю о необходимости перезагрузки системы. Этот флаг используется только при последующем вызове SetupPromptReboot или SetupScanFileQueue.
SP_COPY_NOSKIP
Не предоставляйте пользователю возможность пропускать файл.
SP_COPY_FORCE_NOOVERWRITE
Проверьте, существует ли целевой файл, и если да, файл не перезаписан. Вызывающий объект не получает уведомление.
SP_COPY_FORCE_NEWER
Проверьте каждый копируемый файл, чтобы узнать, указывают ли его ресурсы версии (или метки времени для файлов, не являющихся изображениями), что они не новее существующей копии на целевом объекте. Если копируемый файл не является более новым, файл не копируется. Вызывающий объект не получает уведомления.
SP_COPY_WARNIFSKIP
Если пользователь пытается пропустить файл, предупредите его о том, что пропуск файла может повлиять на установку. (Используется для критически важных для системы файлов.)
MsgHandler
Указатель на подпрограмму обратного вызова. Подпрограмма обратного вызова должна иметь формат FileCallback. Дополнительные сведения см. в разделе Уведомления .
Этот параметр является необязательным, только если параметр Flags не включает SPINST_FILES, SPINST_REGISTERCALLBACKAWARE плюс SPINST_REGSVR или SPINST_UNREGSVR.
Параметр MsgHandler должен быть задан, если флаги включают SPINST_FILES. В этом случае в подпрограмму обратного вызова отправляется уведомление, когда очередь файлов зафиксирована с помощью SetupCommitFileQueue.
Параметр MsgHandler должен быть задан, если флаги включают SPINST_REGISTERCALLBACKAWARE плюс SPINST_REGSVR или SPINST_UNREGSVR. В этом случае SPFILENOTIFY_STARTREGISTRATION или SPFILENOTIFY_ENDREGISTRATION отправляется в подпрограмму обратного вызова каждый раз при регистрации или отмене регистрации файла с помощью директивы INF RegisterDlls в Windows 2000.
Context
Значение, передаваемое функции обратного вызова, когда очередь файлов, созданная этой подпрограммой, фиксируется через SetupCommitFileQueue. Параметр Context необязателен, только если параметр Flags не содержит SPINST_FILES. Этот параметр необходимо указать, если flags включает SPINST_FILES.
DeviceInfoSet
Необязательный указатель на дескриптор набора сведений об устройстве. Дополнительные сведения о функциях установки установщика устройств см. в руководстве по программированию DDK.
DeviceInfoData
Необязательный указатель на указатель на структуру SP_DEVINFO_DATA , которая предоставляет контекст для определенного элемента в наборе, заданном DeviceInfoSet. Дополнительные сведения о функциях установки установщика устройств см. в руководстве по программированию DDK.
Возвращаемое значение
Если функция выполнена успешно, возвращаемое значение будет ненулевым.
Если функция выполняется неудачно, возвращается нулевое значение. Дополнительные сведения об ошибке можно получить, вызвав GetLastError.
Комментарии
Если в качестве целевого каталога операции копирования файлов указан каталог UNC, необходимо убедиться, что он существует, прежде чем вызывать SetupInstallFromInfSection. Функции установки не проверка существования и не создают каталоги UNC. Если целевой каталог UNC не существует, установка файла завершится сбоем.
Для этой функции требуется INF-файл Windows. Некоторые старые форматы INF-файлов могут не поддерживаться.
Примечание
Заголовок setupapi.h определяет SetupInstallFromInfSection в качестве псевдонима, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора ЮНИКОД. Сочетание использования псевдонима, не зависящий от кодировки, с кодом, не зависящим от кодировки, может привести к несоответствиям, которые приводят к ошибкам компиляции или среды выполнения. Дополнительные сведения см. в разделе Соглашения для прототипов функций.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows XP [только классические приложения] |
Минимальная версия сервера | Windows Server 2003 [только классические приложения] |
Целевая платформа | Windows |
Header | setupapi.h |
Библиотека | Setupapi.lib |
DLL | Setupapi.dll |
Набор API | ext-ms-win-setupapi-classinstallers-l1-1-2 (появилось в Windows 10 версии 10.0.14393) |