Crear un manifiesto de producto
Para implementar los requisitos previos de la aplicación, puede crear un paquete de programa previo. Un paquete de programa previo contiene un único archivo de manifiesto de producto, pero un manifiesto de paquete para cada configuración regional. El manifiesto del paquete contiene aspectos específicos de la localización del paquete. Entre estos aspectos se incluyen cadenas, contratos de licencia de usuario final y paquetes de idioma.
Para más información sobre los manifiestos de paquete, consulte Procedimiento: Creación de un manifiesto de paquete.
Creación del manifiesto del producto
Para crear el manifiesto del producto
Cree un directorio para el paquete de programa previo. En este ejemplo se usa C:\package.
En Visual Studio, cree un archivo XML denominado product.xmly guárdelo en la carpeta C:\package.
Agregue el siguiente XML para describir el espacio de nombres XML y el código de producto del paquete. Reemplace el código del producto por un identificador único del paquete.
<Product xmlns="http://schemas.microsoft.com/developer/2004/01/bootstrapper" ProductCode="Custom.Bootstrapper.Package">
Agregue XML para especificar que el paquete tiene una dependencia. En este ejemplo se usa una dependencia de Microsoft Windows Installer 3.1.
<RelatedProducts> <DependsOnProduct Code="Microsoft.Windows.Installer.3.1" /> </RelatedProducts>
Agregue XML para enumerar todos los archivos que están en el paquete del programa previo. En este ejemplo se usa el nombre del archivo de paquete CorePackage.msi.
<PackageFiles> <PackageFile Name="CorePackage.msi"/> </PackageFiles>
Copie o mueva el archivo CorePackage.msi a la carpeta C:\package.
Agregue XML para instalar el paquete mediante comandos del programa previo. El programa previo agrega automáticamente la marca /qn al archivo .msi, que se instalará de forma silenciosa. Si el archivo es un .exe, el programa previo ejecuta el archivo .exe mediante el shell. El siguiente XML no muestra ningún argumento para CorePackage.msi, pero se puede insertar el argumento de línea de comandos en el atributo
Arguments
.<Commands> <Command PackageFile="CorePackage.msi" Arguments="">
Agregue el siguiente XML para comprobar si el paquete de programa previo está instalado. Reemplace el código del producto por el identificador único del componente redistribuible.
<InstallChecks> <MsiProductCheck Property="IsMsiInstalled" Product="{XXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}"/> </InstallChecks>
Agregue XML para cambiar el comportamiento del programa previo en función de si el componente del programa previo ya está instalado. Si lo está, el paquete del programa previo no se ejecuta. El siguiente XML comprueba si el usuario actual es administrador porque este componente requiere privilegios administrativos.
<InstallConditions> <BypassIf Property="IsMsiInstalled" Compare="ValueGreaterThan" Value="0"/> <FailIf Property="AdminUser" Compare="ValueNotEqualTo" Value="True" String="NotAnAdmin"/> </InstallConditions>
Agregue XML para establecer códigos de salida si la instalación se realiza correctamente y si es necesario reiniciar. En el siguiente XML se muestran los códigos de salida Fail y FailReboot, que indican que el programa previo no continuará instalando paquetes.
<ExitCodes> <ExitCode Value="0" Result="Success"/> <ExitCode Value="1641" Result="SuccessReboot"/> <ExitCode Value="3010" Result="SuccessReboot"/> <DefaultExitCode Result="Fail" String="GeneralFailure"/> </ExitCodes>
Agregue el siguiente XML para finalizar la sección de comandos del programa previo.
</Command> </Commands>
Mueva la carpeta C:\package al directorio del programa previo de Visual Studio. Para versiones anteriores de Visual Studio, se trata del directorio \Archivos de programa\Microsoft SDKs\Windows\v7.0A\Bootstrapper\Packages.
Ejemplo
El manifiesto del producto contiene instrucciones de instalación para requisitos previos personalizados.
<?xml version="1.0" encoding="utf-8" ?>
<Product
xmlns="http://schemas.microsoft.com/developer/2004/01/bootstrapper"
ProductCode="Custom.Bootstrapper.Package">
<RelatedProducts>
<DependsOnProduct Code="Microsoft.Windows.Installer.3.1" />
</RelatedProducts>
<PackageFiles>
<PackageFile Name="CorePackage.msi"/>
</PackageFiles>
<InstallChecks>
<MsiProductCheck Property="IsMsiInstalled"
Product="{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}"/>
</InstallChecks>
<Commands>
<Command PackageFile="CorePackage.msi" Arguments="">
<InstallConditions>
<BypassIf Property="IsMsiInstalled"
Compare="ValueGreaterThan" Value="0"/>
<FailIf Property="AdminUser"
Compare="ValueNotEqualTo" Value="True"
String="NotAnAdmin"/>
</InstallConditions>
<ExitCodes>
<ExitCode Value="0" Result="Success"/>
<ExitCode Value="1641" Result="SuccessReboot"/>
<ExitCode Value="3010" Result="SuccessReboot"/>
<DefaultExitCode Result="Fail" String="GeneralFailure"/>
</ExitCodes>
</Command>
</Commands>
</Product>