Función SetupInstallFileA (setupapi.h)

[Esta función está disponible para su uso en los sistemas operativos indicados en la sección Requisitos. En versiones posteriores podría modificarse o no estar disponible. SetupAPI ya no debe usarse para instalar aplicaciones. En su lugar, use Windows Installer para desarrollar instaladores de aplicaciones. SetupAPI sigue utilizándose para instalar controladores de dispositivo.

La función SetupInstallFile instala un archivo tal y como especifica un INFCONTEXT devuelto por SetupFindXXXLine o explícitamente por el nombre de archivo y la ruta de acceso.

Si se copia un archivo, el autor de la llamada de esta función debe tener privilegios de escritura en el directorio de destino.

Sintaxis

WINSETUPAPI BOOL SetupInstallFileA(
  [in] HINF                InfHandle,
  [in] PINFCONTEXT         InfContext,
  [in] PCSTR               SourceFile,
  [in] PCSTR               SourcePathRoot,
  [in] PCSTR               DestinationName,
  [in] DWORD               CopyStyle,
  [in] PSP_FILE_CALLBACK_A CopyMsgHandler,
  [in] PVOID               Context
);

Parámetros

[in] InfHandle

Puntero opcional al identificador de un archivo INF que contiene secciones SourceDisksNames y SourceDisksFiles. Si existen secciones específicas de la plataforma para el sistema del usuario (por ejemplo, SourceDisksNames.x86 y SourceDisksFiles.x86), se usará la sección específica de la plataforma. Si InfContext es null y CopyStyle incluye SP_COPY_SOURCE_ABSOLUTE o SP_COPY_SOURCEPATH_ABSOLUTE, InfHandle se omite.

[in] InfContext

Puntero opcional al contexto de una línea en una sección Copiar archivos de un archivo INF. La rutina busca este archivo en la sección SourceDisksFiles de InfHandle para obtener información de copia de archivos. Si no se especifica InfHandle , SourceFile debe ser.

[in] SourceFile

Puntero opcional al nombre de archivo (sin ruta de acceso) del archivo que se va a copiar. El archivo se busca en la sección SourceDisksFiles. El parámetro SourceFile debe especificarse si InfContext no lo es. SourceFile se omite si se especifica InfContext .

[in] SourcePathRoot

Puntero opcional a la ruta de acceso raíz del archivo que se va a copiar (por ejemplo, A:\ o F:). Las rutas de acceso de la sección SourceDisksNames se anexan a esta ruta de acceso. El parámetro SourcePathRoot se omite si CopyStyle incluye la marca SP_COPY_SOURCE_ABSOLUTE.

[in] DestinationName

Puntero opcional solo al nombre de archivo (sin ruta de acceso) del archivo de destino. Este parámetro puede ser null para indicar que el archivo de destino debe tener el mismo nombre que el archivo de origen. Si no se especifica InfContext , DestinationName proporciona la ruta de acceso completa y el nombre de archivo para el destino.

[in] CopyStyle

Marcas que controlan el comportamiento de la operación de copia de archivos. Estas marcas pueden ser una combinación de los valores siguientes.

Valor Significado
SP_COPY_DELETESOURCE
Elimina el archivo de origen tras una copia correcta. El autor de la llamada no recibe una notificación si se produce un error en la operación de eliminación.
SP_COPY_REPLACEONLY
Copia el archivo solo si lo hace, sobrescribiría un archivo en la ruta de acceso de destino. Si el destino no existe, la función devuelve FALSE y GetLastError devuelve NO_ERROR.
SP_COPY_NEWER_OR_SAME
Examina cada archivo que se va a copiar para ver si sus recursos de versión indican que es la misma versión o no es más reciente que una copia existente en el destino.

La información de versión del archivo utilizada durante las comprobaciones de versión es que se especifica en los miembros dwFileVersionMS y dwFileVersionLS de una estructura de VS_FIXEDFILEINFO , tal como se rellenan en las funciones de versión. Si uno de los archivos no tiene recursos de versión o si tienen información de versión idéntica, el archivo de origen se considera más reciente.

Si el archivo de origen no es más reciente o igual en la versión y se especifica CopyMsgHandler , se notifica al autor de la llamada y se puede cancelar la operación de copia. Si no se especifica CopyMsgHandler , el archivo no se copia.

SP_COPY_NEWER_ONLY
Examine cada archivo que se va a copiar para ver si sus recursos de versión indican que no es más reciente que una copia existente en el destino. Si el archivo de origen es más reciente pero no es igual a la versión del destino existente, se copia el archivo.
SP_COPY_NOOVERWRITE
Compruebe si el archivo de destino existe y, si es así, notifique al autor de la llamada que pueda vetar la copia. Si no se especifica CopyMsgHandler , el archivo no se sobrescribe.
SP_COPY_NODECOMP
No descomprima el archivo. Cuando se establece esta marca, el archivo de destino no recibe la forma sin comprimir del nombre de origen (si procede). Por ejemplo, copiar F:\x86\cmd.ex_ en \\install\temp da como resultado un archivo de destino de \\install\temp\cmd.ex_. Si no se especificó la marca SP_COPY_NODECOMP, el archivo se descomprimiría y se llamaría al destino\\install\temp\cmd.exe. La parte del nombre de archivo de DestinationName, si se especifica, se quita y reemplaza por el nombre de archivo del archivo de origen. Cuando se especifica SP_COPY_NODECOMP, no se puede comprobar ninguna información de idioma o versión.
SP_COPY_LANGUAGEAWARE
Examine cada archivo que se va a copiar para ver si su idioma difiere del idioma de cualquier archivo existente que ya esté en el destino. Si es así, y se especifica CopyMsgHandler , se notifica al autor de la llamada y se puede cancelar la copia. Si no se especifica CopyMsgHandler , el archivo no se copia.
SP_COPY_SOURCE_ABSOLUTE
SourceFile es una ruta de acceso de origen completa. No lo busque en la sección SourceDisksNames del archivo INF.
SP_COPY_SOURCEPATH_ABSOLUTE
SourcePathRoot es la parte de ruta de acceso completa del archivo de origen. Omita el origen relativo especificado en la sección SourceDisksNames del archivo INF del medio de origen donde se encuentra el archivo. Esta marca se omite si se especifica SP_COPY_SOURCE_ABSOLUTE.
SP_COPY_FORCE_IN_USE
Si el destino existe, se comporta como si estuviera en uso y pone en cola el archivo para copiarlo en el siguiente reinicio del sistema.
SP_COPY_FORCE_NOOVERWRITE
Comprueba si el archivo de destino existe y, si es así, el archivo no se sobrescribe. No se notifica al autor de la llamada.
SP_COPY_FORCE_NEWER
Examina cada archivo que se va a copiar para ver si sus recursos de versión (o marcas de tiempo para archivos que no son de imagen) indican que no es más reciente que una copia existente en el destino. Si el archivo que se copia no es más reciente, el archivo no se copia. No se notifica al autor de la llamada. La función devuelve FALSE y GetLastError devuelve NO_ERROR.

[in] CopyMsgHandler

Puntero opcional a una función de devolución de llamada para recibir una notificación de varias condiciones que pueden surgir durante la operación de copia de archivos.

[in] Context

Puntero opcional a un valor definido por el autor de la llamada que se pasa como primer parámetro de la función de devolución de llamada.

Valor devuelto

Si la función se ejecuta correctamente, el valor devuelto es un valor distinto de cero.

Si la función no se realiza correctamente, el valor devuelto es cero. Para obtener información de error extendida, llame a GetLastError.

Si GetLastError devuelve NO_ERROR, no se completó la operación de copia de archivos. Es posible que el archivo no se haya copiado porque la operación de copia de archivos no era necesaria o porque la función de devolución de llamada de archivo devolvió FALSE.

Comentarios

Si se especifica un directorio UNC como directorio de destino de una instalación de archivos, debe asegurarse de que existe antes de llamar a SetupInstallFile. Las funciones de instalación no comprueban la existencia de ni crean directorios UNC. Si el directorio UNC de destino no existe, se producirá un error en la instalación del archivo.

Nota

El encabezado setupapi.h define SetupInstallFile como alias que selecciona automáticamente la versión ANSI o Unicode de esta función en función de la definición de la constante de preprocesador UNICODE. La combinación del uso del alias neutro de codificación con código que no es neutral de codificación puede provocar discrepancias que dan lugar a errores de compilación o en tiempo de ejecución. Para obtener más información, vea Convenciones para prototipos de función.

Requisitos

Requisito Value
Cliente mínimo compatible Windows XP [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2003 [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado setupapi.h
Library Setupapi.lib
Archivo DLL Setupapi.dll

Vea también

Funciones

Información general

SetupCloseFileQueue

SetupCommitFileQueue

SetupOpenFileQueue

SetupQueueCopy