Compartir a través de


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

  1. Cree un directorio para el paquete de programa previo. En este ejemplo se usa C:\package.

  2. En Visual Studio, cree un archivo XML denominado product.xmly guárdelo en la carpeta C:\package.

  3. 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">
    
  4. 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>
    
  5. 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>
    
  6. Copie o mueva el archivo CorePackage.msi a la carpeta C:\package.

  7. 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="">
    
  8. 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>
    
  9. 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>
    
  10. 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>
    
  11. Agregue el siguiente XML para finalizar la sección de comandos del programa previo.

        </Command>
    </Commands>
    
  12. 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>