Agregar requisitos previos personalizados

Actualización: noviembre 2007

El arranque es un instalador genérico que se puede configurar para arrancar prácticamente cualquier redistribuible que se empaquete como archivo de Windows Installer o como programa ejecutable. Se programa mediante un conjunto de manifiestos XML simples que especifican todos los metadatos requeridos por el Programa previo para administrar la instalación del componente. El programa previo no dicta la tecnología de instalador que debe utilizar la aplicación: Windows Installer o ClickOnce.

Cuando un usuario inicia Setup.exe, detecta primero si ya están instalados los requisitos previos. Si falta alguno de los requisitos previos, el programa previo muestra un cuadro de diálogo de instalación que enumera los componentes y muestra su contrato de licencia. De lo contrario, si se detectan todos los requisitos previos, el arranque se limita a iniciar el instalador de la aplicación.

Cuando el usuario acepta el contrato de licencia, se inicia el proceso de descarga y de instalación. Cuando se han instalado todos los requisitos previos, el arranque comienza el proceso de instalación de la propia aplicación.

En algunos casos no es necesario crear un paquete para el redistribuible. Normalmente, solo se necesita crear paquetes para componentes compartidos o componentes del sistema que tienen que instalar archivos en la GAC, realizar el registro global o formar un servicio de Windows.

Debe preguntar al proveedor de control si puede incluir el archivo redistribuible junto con la aplicación. Si basta una operación de copia simple para redistribuir el componente de requisitos previos (por ejemplo, si no tiene dependencias), no se necesita crear un paquete. Solo hay que asegurarse de que el archivo esté incluido en la instalación o que esté establecido en copia local. (La propiedad Copy del archivo en Vista de propiedades se debe establecer en True).

También debe determinar si tiene que utilizar un instalador. En ese caso, utilice un paquete del Programa previo.

Para crear un nuevo paquete de componente, debe proporcionar:

  • El componente redistribuible en forma de archivo EXE o MSI.

  • El manifiesto del producto, product.xml, que contiene los metadatos con referencias idiomáticas neutras para el paquete. Contiene los metadatos comunes a todas las versiones localizadas del componente redistribuible.

  • El manifiesto del paquete, package.xml, que contiene los metadatos específicos del idioma; contiene por lo general los mensajes de error localizados. El componente debe tener al menos un manifiesto del paquete para cada versión localizada de ese componente.

Debe crear manualmente los archivos de manifiestos, y los metadatos que contienen deben adherirse a un esquema concreto tal como se describe en los Package Schema Elements incluidos en Kit de desarrollo de software de Windows (SDK). Vea Referencia de esquemas de productos y paquetes para obtener la referencia del esquema. El generador de configuración integrado con Visual Studio validará los archivos de manifiestos en tiempo de generación.

Las dependencias entre los paquetes de estos manifiestos se especifican utilizando el elemento del esquema DependsOnProduct.

Debe copiar los archivos de manifiestos del paquete y del producto, junto con sus archivos redistribuibles, en una carpeta especial que Visual Studio ha reservado para los paquetes redistribuibles:

\Program Files\Microsoft SDKs\Windows\v6.0A\Bootstrapper\Packages

Para escribir un instalador que copie un componente redistribuible y sus manifiestos en esta carpeta, puede determinar mediante programación la ubicación de la carpeta de arranque en el valor Path de la clave del Registro siguiente.

HKLM\Software\Microsoft\GenericBootstrapper\3.5

Cada componente redistribuible aparece en su propia subcarpeta bajo el directorio de paquetes. El manifiesto del producto y los archivos redistribuibles se colocan a continuación en esta subcarpeta. Las versiones localizadas del componente, junto con los manifiestos del paquete, se colocan en subcarpetas denominadas de acuerdo con el nombre de referencia cultural (vea la tabla en CultureInfo).

Cuando estos archivos se han copiado en la carpeta del Programa previo, aparecen automáticamente en el cuadro de diálogo de los requisitos previos de Visual Studio, para que el desarrollador los pueda seleccionar haciendo clic en una casilla.

Para obtener más información sobre cómo utilizar el arranque para configurar la instalación, vea el artículo de MSDN Use the Visual Studio 2005 Bootstrapper to Kick-Start Your Installation.

Mantener los redistribuibles del paquete del Programa previo separados de las instalaciones de aplicaciones.

Como norma, debe separar los componentes que forman parte del redistribuible del paquete del arranque de las aplicaciones que usan estos componentes. Por ejemplo, suponga que tiene un paquete del Programa previo denominado Acme.DataWidgets.msi que contiene el componente Acme.DataWidgets.dll. Acme.DataWidgets.dll no debe aparecer en el directorio bindir del proyecto en el proceso del desarrollo y no se debe implementar en el paquete del instalador de la aplicación.

Por lo tanto, se recomienda instalar los componentes del arranque en la GAC en los equipos de desarrollo, usando el mismo instalador redistribuible del paquete del arranque principal. De esta forma se evitará que los componentes del Programa previo se copien en el directorio bindir del proyecto durante el proceso del desarrollo. Además, se recomienda definir un archivo RedistList para describir todos los ensamblados que forman parte del paquete redistribuible del arranque. Esto evitará que los componentes de Programa previo se incluyan en cualquier proyecto de implementación de aplicaciones. El archivo RedistList solo se debe instalar en los equipos del desarrollador.

Para ello, cree una lista redistribuible en la carpeta RedistList en su directorio .NET Framework (\WINDOWS\Microsoft.NET\Framework).

La lista redistribuible es un archivo XML que se debe denominar usando el formato siguiente: nombreDeCompañía + nombreDeComponente + RedistList.xml. Por ejemplo, si el componente se denomina "Datawidgets" realizado por "Acme", use Acme.DataWidgets.RedistList.xml. Un ejemplo del contenido de la lista redistribuible podría ser el siguiente:

<?xml version="1.0" encoding="UTF-8"?>
<FileList Redist="Acme.DataWidgets" >
<File AssemblyName="Acme.DataGrid" Version="1.0.0.0" PublicKeyToken="b03f5f7f11d50a3a" Culture="neutral" ProcessorArchitecture="MSIL" InGAC="true" />
</FileList>

El Requisitos previos (Cuadro de diálogo) permite seleccionar los componentes que requiere la aplicación antes de la instalación. Visual Studio incluye varios requisitos previos estándar. Sin embargo, puede agregar otros componentes Microsoft o de otros fabricantes como requisitos previos. Para ello, debe crear los manifiestos del producto y del paquete tal y como se ha descrito anteriormente.

En el cuadro de diálogo Requisitos previos, la lista Elija los requisitos previos que desea instalar muestra los paquetes de requisitos que se pueden instalar. El orden de los paquetes en esta lista se basa en las dependencias especificadas en los manifiestos y especifica el orden de instalación de los paquetes.

Después de haber agregado un paquete genérico al programa previo, aparecerá en el cuadro de diálogo Requisitos previos como MyPackage. Visual Studio no elige los paquetes que hay que instalar de forma automática.

En proyectos ClickOnce, Visual Studio recomienda incluir .NET Framework para todos los tipos de proyectos activando la casilla .NET Framework, de forma predeterminada, de Elija los requisitos previos que desea instalar.

De forma predeterminada, en los proyectos de Windows Installer, si el proyecto actual es un proyecto de instalación o de instalación en Web, se activará la casilla .NET Framework. Si en el tiempo de generación no está seleccionado ni .NET Framework ni el paquete Windows Installer, se emitirá una advertencia de generación.

Adiciones de comunidad

Mostrar: