Tutorial: Implementar varias soluciones de Office en un instalador de ClickOnce único para .NET Framework 4

Puede implementar varias soluciones de Office en un paquete único para simplificar el proceso de instalación y actualización. Para ello tiene que modificar y volver a firmar los manifiestos de aplicación e implementación después de publicar y antes de instalar.

Se aplica a: la información de este tema se aplica a los proyectos de nivel de documento y los proyectos de nivel de aplicación para Microsoft Office 2010 y 2007 Microsoft Office System. Para obtener más información, vea Características disponibles por aplicación y tipo de proyecto de Office.

En este tutorial se muestran las tareas siguientes:

  • Crear dos soluciones de Office para implementar y una como proyecto de instalador.

  • Modificar el manifiesto de aplicación del proyecto de instalador para instalar dos soluciones de Office.

  • Volver a firmar los manifiestos de aplicación e implementación.

Nota

Es posible que su equipo muestre nombres o ubicaciones diferentes para algunos de los elementos de la interfaz de usuario de Visual Studio incluidos en las instrucciones siguientes. La edición de Visual Studio que se tenga y la configuración que se utilice determinan estos elementos. Para obtener más información, vea Valores de configuración de Visual Studio.

Requisitos previos

Necesita los componentes siguientes para completar este tutorial:

-

Una edición de Visual Studio 2010 que incluye las herramientas para desarrolladores de Microsoft Office. Para obtener más información, vea [Configurar un equipo para desarrollar soluciones de Office](bb398242\(v=vs.100\).md).
  • Word 2007 o Word 2010.

  • Outlook 2007 u Outlook 2010.

  • Excel 2007 o Excel 2010.

  • Un equipo de pruebas.

Crear varias soluciones de Office

Comience por crear tres proyectos de Office, uno de los cuales servirá como instalador. Los otros dos se implementarán en el equipo del usuario final.

Para crear y desarrollar nuevos proyectos de Word, Outlook y Excel

  1. Cree un proyecto de nivel de documento de Word para .NET Framework 4. Póngale el nombre ContosoInstaller y guarde el proyecto en el directorio %perfilDeUsuario%\Documentos\Visual Studio 2010\Projects.

    El proyecto ContosoInstaller se usará como instalador. Para obtener más información, vea Cómo: Crear proyectos de Office en Visual Studio.

  2. En la solución ContosoInstaller, agregue un proyecto de nivel de aplicación de Outlook con el nombre ContosoOutlookAddIn y agregue su código al proyecto de Outlook.

  3. En la solución ContosoInstaller, agregue un proyecto de nivel de documento de Excel con el nombre ContosoExcelWorkbook y agregue su código al proyecto de Excel.

Publicar las soluciones de Office

Emplee el Asistente para publicación o la página Proyecto del Diseñador de proyectos para publicar las soluciones de Office en el equipo de desarrollo.

Para publicar los proyectos de Word, Outlook y Excel

  1. Publique el proyecto ContosoInstaller en la carpeta c:\publish. Para obtener más información, vea Cómo: Implementar una solución de Office mediante ClickOnce.

  2. Publique el proyecto ContosoOutlookAddIn en la carpeta c:\publish.

  3. Publique el proyecto ContosoExcelWorkbook en la carpeta c:\publish.

Modificar el manifiesto de aplicación

Use el editor XML de Visual Studio para agregar dependencias de instalación, archivos, puntos de entrada y ensamblados al manifiesto de aplicación. El contenido de un manifiesto de aplicación es similar a una lista de materiales, que enumera el contenido completo de una caja; un manifiesto de aplicación enumera todos los ensamblados de requisito previo y dependientes, así como los archivos que necesita la aplicación. El manifiesto de aplicación para una solución de Office también enumera los ensamblados que debe cargar una aplicación de Office para los complementos de nivel de aplicación y las personalizaciones de nivel de documento.

Agregar las dependencias de instalación

Modifique el manifiesto de aplicación para instalar los ensamblados ContosoOutlookAddIn y ContosoExcelWorkbook y quite las referencias al ensamblado ContosoInstaller.

Para agregar dependencias de instalación al manifiesto de aplicación

  1. Mueva el contenido de los directorios ContosoOutlookAddIn_1_0_0_0 y ContosoExcelWorkbook_1_0_0_0 de la carpeta c:\publish\Archivos de aplicación al directorio ContosoInstaller_1_0_0_0.

  2. Abra los archivos ContosoInstaller.dll.manifest, ContosoOutlookAddIn.dll.manifest y ContosoExcelWorkbook.dll.manifest en un editor XML.

  3. Copie todas las dependencias de instalación y archivo, incluida ContosoOutlookAddIn.dll, del archivo ContosoOutlookAddIn.dll.manifest. Es decir, copie todas las dependencias que comienzan con <dependentAssembly dependencyType="install"> o <file name="app.config">. El código siguiente es lo que debe buscar: sólo variará el elemento <dsig:DigestValue>.

      <dependency>
        <dependentAssembly 
           dependencyType="install"
           allowDelayedBinding="true" 
           codebase="Microsoft.Office.Tools.Common.v4.0.Utilities.dll" 
           size="30816">
          <assemblyIdentity 
            name="Microsoft.Office.Tools.Common.v4.0.Utilities" 
            version="10.0.0.0"
            publicKeyToken="B03F5F7F11D50A3A"
            language="neutral"
            processorArchitecture="msil" />
          <hash>
            <dsig:Transforms>
              <dsig:Transform
                Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" />
            </dsig:Transforms>
            <dsig:DigestMethod 
              Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
            <dsig:DigestValue>Ki0…</dsig:DigestValue>
          </hash>
        </dependentAssembly>
      </dependency>
      <dependency>
        <dependentAssembly
          dependencyType="install"
          allowDelayedBinding="true" 
          codebase="Microsoft.Office.Tools.Outlook.v4.0.Utilities.dll"   
          size="47200">
          <assemblyIdentity 
            name="Microsoft.Office.Tools.Outlook.v4.0.Utilities" 
            version="10.0.0.0"
            publicKeyToken="B03F5F7F11D50A3A"
            language="neutral" 
            processorArchitecture="msil" />
          <hash>
            <dsig:Transforms>
              <dsig:Transform
                Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" />
            </dsig:Transforms>
            <dsig:DigestMethod 
              Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
            <dsig:DigestValue>050...</dsig:DigestValue>
          </hash>
        </dependentAssembly>
      </dependency>
      <dependency>
        <dependentAssembly
          dependencyType="install" 
          allowDelayedBinding="true"
          codebase="ContosoOutlookAddIn.dll"
          size="10240">
          <assemblyIdentity
            name="ContosoOutlookAddIn" 
            version="1.0.0.0" 
            language="neutral" 
            processorArchitecture="msil" />
          <hash>
            <dsig:Transforms>
              <dsig:Transform Algorithm=
                "urn:schemas-microsoft-com:HashTransforms.Identity" />
            </dsig:Transforms>
            <dsig:DigestMethod Algorithm=
              "http://www.w3.org/2000/09/xmldsig#sha1" />
            <dsig:DigestValue>i4e</dsig:DigestValue>
          </hash>
        </dependentAssembly>
      </dependency>
      <file name="ContosoOutlookAddIn.dll.config" size="77">
        <hash>
          <dsig:Transforms>
            <dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" />
          </dsig:Transforms>
          <dsig:DigestMethod 
             Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
          <dsig:DigestValue>w7W...</dsig:DigestValue>
        </hash>
      </file>
    
  4. En el archivo ContosoInstaller.dll.manifest, pegue la dependencia de instalación ContosoOutlookAddIn.dll al final de la sección de dependencia.

  5. Copie todas las dependencias de instalación y archivos, incluidas ContosoExcelWorkbook.dll y Microsoft.Office.Tools.Common.v4.0.Utilities.dll, del archivo ContosoExcelWorkbook.dll.manifest. Es decir, copie todas las dependencias que comienzan con <dependentAssembly dependencyType="install"> o <file name="app.config">. El código siguiente se parece a lo que debe buscar: solo variará el elemento <dsig:DigestValue>.

      <dependency>
        <dependentAssembly
          dependencyType="install"
          allowDelayedBinding="true"
          codebase="ContosoExcelWorkbook.dll"
          size="12800">
          <assemblyIdentity
            name="ContosoExcelWorkbook" 
            version="1.0.0.0"
            language="neutral"
            processorArchitecture="msil" />
          <hash>
            <dsig:Transforms>
              <dsig:Transform Algorithm=
                "urn:schemas-microsoft-com:HashTransforms.Identity" />
            </dsig:Transforms>
            <dsig:DigestMethod Algorithm=
              "http://www.w3.org/2000/09/xmldsig#sha1" />
            <dsig:DigestValue>i4e</dsig:DigestValue>
          </hash>
        </dependentAssembly>
      </dependency>
      <dependency>
        <dependentAssembly dependencyType="install" allowDelayedBinding="true" codebase="Microsoft.Office.Tools.Common.v4.0.Utilities.dll" size="30816">
          <assemblyIdentity name="Microsoft.Office.Tools.Common.v4.0.Utilities" version="10.0.0.0" publicKeyToken="B03F5F7F11D50A3A" language="neutral" processorArchitecture="msil" />
          <hash>
            <dsig:Transforms>
              <dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" />
            </dsig:Transforms>
            <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
            <dsig:DigestValue>Ki0A9wOpes1YX5NaAvjmUeFSh0g=</dsig:DigestValue>
          </hash>
        </dependentAssembly>
      </dependency>
      <dependency>
        <dependentAssembly
          dependencyType="install"
          allowDelayedBinding="true" 
          codebase="Microsoft.Office.Tools.Excel.v4.0.Utilities.dll" 
          size="235104">
          <assemblyIdentity 
            name="Microsoft.Office.Tools.Excel.v4.0.Utilities" 
            version="10.0.0.0"
            publicKeyToken="B03F5F7F11D50A3A"
            language="neutral"
            processorArchitecture="msil" />
          <hash>
            <dsig:Transforms>
              <dsig:Transform
               Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" />
            </dsig:Transforms>
            <dsig:DigestMethod 
              Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
            <dsig:DigestValue>Te/...</dsig:DigestValue>
          </hash>
        </dependentAssembly>
      </dependency>
      <file name=" ContosoExcelWorkbook.dll.config" size="77">
        <hash>
          <dsig:Transforms>
            <dsig:Transform
             Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" />
          </dsig:Transforms>
          <dsig:DigestMethod 
            Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
          <dsig:DigestValue>w7W...</dsig:DigestValue>
        </hash>
      </file>
    
  6. En el archivo ContosoInstaller.dll.manifest, pegue las dependencias de instalación al final de la sección de dependencia.

  7. En el archivo ContosoInstaller.dll.manifest, quite las dependencias de instalación ContosoInstaller.dll y Microsoft.Office.Tools.Word.v4.0.Utilities.dll. Quite también las dependencias duplicadas. Por ejemplo, puede haber copiado varias dependencias de instalación para Microsoft.Office.Tools.Common.v4.0.Utilities.dll.

    Nota

    Si está implementando una solución de nivel de documento de Word, conserve Microsoft.Office.Tools.Word.v4.0.Utilities.dll en el manifiesto final.

Agregar los puntos de entrada

Modifique el manifiesto de aplicación para cargar los ensamblados ContosoOutlookAddin y ContosoExcelWorkbook en el espacio de nombres <vstav3>.

Para agregar los puntos de entrada del espacio de nombres vstav3 al manifiesto de aplicación

  1. En el archivo ContosoInstaller.dll.manifest, quite el texto situado entre los elementos <vstav3:entryPointsCollection> y </vstav3:entryPointsCollection>.

  2. Copie el texto situado entre los elementos <vstav3:entryPointsCollection> y </vstav3:entryPointsCollection> del archivo ContosoOutlookAddIn.dll.manifest. El código siguiente se parece a lo que busca.

          <vstav3:entryPoints>
            <vstav3:entryPoint
              class="ContosoOutlookAddIn.ThisAddIn">
              <assemblyIdentity
                name="ContosoOutlookAddIn"
                version="1.0.0.0"
                language="neutral"
                processorArchitecture="msil" />
            </vstav3:entryPoint>
          </vstav3:entryPoints>
    

    Nota

    Si el complemento en el nivel de aplicación de Outlook utiliza un área del formulario, el punto de entrada de Outlook debe ser el último que aparece en la sección <vstav3:entryPoints>.

  3. En el archivo ContosoInstaller.dll.manifest, pegue el código después del elemento <vstav3:entryPointsCollection>.

  4. Agregue el atributo id al elemento <vstav3:entryPoints> para diferenciar este punto de entrada de otros.

          <vstav3:entryPoints id="ContosoOutlook">
    
  5. Copie el texto situado entre los elementos <vstav3:entryPointsCollection> y </vstav3:entryPointsCollection> del archivo ContosoExcelWorkbook.dll.manifest. El código siguiente se parece a lo que busca.

          <vstav3:entryPoints>
            <vstav3:entryPoint 
              class="ContosoExcelWorkbook.ThisWorkbook">
              <assemblyIdentity
                name="ContosoExcelWorkbook"
                version="1.0.0.0"
                language="neutral"
                processorArchitecture="msil" />
            </vstav3:entryPoint>
            <vstav3:entryPoint
               class="ContosoExcelWorkbook.Sheet1">
              <assemblyIdentity
                name="ContosoExcelWorkbook"
                version="1.0.0.0"
                language="neutral"
                processorArchitecture="msil" />
            </vstav3:entryPoint>
            <vstav3:entryPoint
              class="ContosoExcelWorkbook.Sheet2">
              <assemblyIdentity
                name="ContosoExcelWorkbook"
                version="1.0.0.0"
                language="neutral"
                processorArchitecture="msil" />
            </vstav3:entryPoint>
            <vstav3:entryPoint
              class="ContosoExcelWorkbook.Sheet3">
              <assemblyIdentity
                name="ContosoExcelWorkbook"
                version="1.0.0.0"
                language="neutral"
                processorArchitecture="msil" />
            </vstav3:entryPoint>
          </vstav3:entryPoints>
    
  6. En el archivo ContosoInstaller.dll.manifest, pegue el código situado después del elemento <vstav3:entryPointsCollection>.

  7. Agregue el atributo id al elemento <vstav3:entryPoints> para diferenciar este punto de entrada de otros.

          <vstav3:entryPoints id="ContosoExcel">
    

Agregar los ensamblados

Modifique el manifiesto de aplicación para cargar los ensamblados ContosoOutlookAddIn y ContosoExcelWorkbook en el espacio de nombres <vstov4>.

Para agregar los ensamblados al espacio de nombres vstov4 del manifiesto de aplicación

  1. En el archivo ContosoInstaller.dll.manifest, quite cualquier texto situado entre los elementos <vstov4:customizations xmlns:vstov4="urn:schemas-microsoft-com:vsto.v4"> y </vstov4:customizations>.

  2. Copie el texto situado entre los elementos <vstov4:customizations xmlns:vstov4="urn:schemas-microsoft-com:vsto.v4"> y </vstov4:customizations> del archivo ContosoOutlookAddIn.dll.manifest. El código siguiente es lo que busca.

            <vstov4:customization>
              <vstov4:appAddIn
                application="Outlook"
                loadBehavior="3"
                keyName="ContosoOutlookAddIn">
                <vstov4:friendlyName>
                  ContosoOutlookAddIn
                </vstov4:friendlyName>
                <vstov4:description>
                  ContosoOutlookAddIn - Outlook add-in created with
                  Visual Studio Tools for Office
                </vstov4:description>
              </vstov4:appAddIn>
            </vstov4:customization>
    
  3. En el archivo ContosoInstaller.dll.manifest, pegue el código situado después del elemento <vstov4:customizations xmlns:vstov4="urn:schemas-microsoft-com:vsto.v4">.

  4. Agregue el atributo id al elemento <vstav3:customization> para diferenciar esta personalización de otras. Este atributo id es el mismo que se agregó al elemento <vstav3:entryPoints> en el procedimiento anterior.

            <vstov4:customization id="ContosoOutlook">
    
  5. Copie el texto situado entre los elementos <vstov4:customizations xmlns:vstov4="urn:schemas-microsoft-com:vsto.v4"> y </vstov4:customizations> del archivo ContosoExcelWorkbook.dll.manifest. El código siguiente se parece a lo que debe buscar: sólo variará el elemento <solutionId>.

            <vstov4:customization>
              <vstov4:document
                solutionId="73e" />
            </vstov4:customization>
    
  6. En el archivo ContosoInstaller.dll.manifest, pegue el código situado después del elemento <vstov4:customizations xmlns:vstov4="urn:schemas-microsoft-com:vsto.v4">.

  7. Agregue el atributo id al elemento <vstov4:customizations xmlns:vstov4="urn:schemas-microsoft-com:vsto.v4"> para diferenciar esta personalización de otras. Este atributo id es el mismo que se agregó al elemento <vstav3:entryPoints> en el procedimiento anterior.

            <vstov4:customization id="ContosoExcel">
    

Modificar el proyecto en el nivel del documento

Para todos los proyectos en el nivel del documento en una implementación de varios proyectos, debe anexar el identificador a la propiedad de documento personalizada _AssemblyLocation. En esta sección se muestra cómo actualizar la propiedad _AssemblyLocation en el archivo ContosoExcelWorkbook.xlsx y este paso se debe repetir para todos los proyectos en el nivel del documento.

Para modificar la propiedad _AssemblyLocation en Excel o Word 2010

  1. En Excel, haga clic en la pestaña Archivo.

  2. Haga clic en Información.

  3. Haga clic en la flecha de lista desplegable de Propiedades y, a continuación, haga clic en Propiedades avanzadas.

  4. Haga clic en la pestaña Custom.

  5. En el recuadro Propiedades, haga clic _AssemblyLocation.

  6. En el cuadro de texto Valor, edite el texto para quitar |vstolocal (si existe el texto) y agregue |id=ContosoInstaller.

  7. Haga clic en Aceptar.

Para modificar la propiedad _AssemblyLocation en Excel o Word 2007

  1. En Excel, haga clic en Botón Microsoft Office.

  2. Seleccione Preparar y, a continuación, haga clic en Propiedades.

  3. Haga clic en la flecha de lista desplegable Propiedades del documento y, a continuación, haga clic en Propiedades avanzadas.

  4. Haga clic en la pestaña Custom.

  5. En el recuadro Propiedades, haga clic _AssemblyLocation.

  6. En el cuadro de texto Valor, edite el texto para quitar |vstolocal (si existe el texto) y agregue |id=ContosoInstaller.

  7. Haga clic en Aceptar.

Volver a firmar los manifiestos

Firme los manifiestos de aplicación e implementación con un certificado. Eso garantiza que los archivos no se han manipulado.

Para volver a firmar los manifiestos de aplicación e implementación

  1. Copie el archivo de certificado ContosoInstaller_TemporaryKey.pfx del directorio de la solución %perfilDeUsuario%\Documentos\Visual Studio 2010\Projects\ContosoInstaller\ContosoInstaller en el directorio c:\publish\Archivos de aplicación\ContosoInstaller_1_0_0_0.

  2. Abra el símbolo del sistema de Visual Studio.

  3. Vaya al directorio c:\publish\Archivos de aplicación\ContosoInstaller_1_0_0_0.

  4. Firme el manifiesto de aplicación modificado con el siguiente comando:

    mage -sign ContosoInstaller.dll.manifest -certfile ContosoInstaller_TemporaryKey.pfx
    

    Aparece el mensaje "ContosoInstaller.dll.manifest firmado correctamente".

  5. Vaya al directorio c:\publish.

  6. Actualice y firme el manifiesto de implementación con el comando siguiente:

    mage -update ContosoInstaller.vsto -appmanifest "Application Files\ContosoInstaller_1_0_0_0\ContosoInstaller.dll.manifest" -certfile "Application Files\ContosoInstaller_1_0_0_0\ContosoInstaller_TemporaryKey.pfx"
    

    Aparece el mensaje "ContosoInstaller.vsto firmado correctamente".

  7. Copie el archivo ContosoInstaller.vsto en el directorio c:\publish\Archivos de aplicación\ContosoInstaller_1_0_0_0.

Probar la implementación de varios proyectos

El procedimiento siguiente garantiza que el manifiesto instala el complemento de Outlook y el libro de Excel.

Para probar la implementación de varios proyectos

  1. Copie el directorio c:\publish en un equipo de pruebas.

  2. Ejecute el programa de instalación para instalar la implementación de varios proyectos.

    Aparece el Instalador de Personalización de Microsoft Office.

  3. Haga clic en Instalar.

    El cuadro de diálogo Instalador de Personalización de Microsoft Office muestra el mensaje siguiente: "La personalización de Microsoft Office se instaló correctamente".

  4. Abra Outlook para comprobar que el complemento funciona.

  5. Abra el archivo de libro de Excel para comprobar que la personalización de nivel de documento funciona.

  6. Compruebe que la implementación de varios proyectos tiene una entrada única en la lista de aplicaciones instaladas.

    Agregar o quitar programas en Windows XP o Programas y características en Windows Vista muestran ContosoInstaller.

Limpiar el directorio de publicación

El procedimiento siguiente quita cualquier archivo innecesario del directorio de publicación.

Para limpiar el directorio de publicación

  1. Quite los archivos siguientes del directorio c:\publish\Archivos de aplicación\ContosoInstaller_1_0_0_0.

    • ContosoExcelWorkbook.dll.manifest

    • ContosoExcelWorkbook.vsto

    • ContosoInstaller.dll.deploy

    • ContosoInstaller.docx

    • ContosoInstaller_TemporaryKey.pfx

    • ContosoOutlookAddIn.dll.manifest

    • ContosoOutlookAddIn.vsto

  2. Quite los archivos siguientes del directorio c:\publish.

    • ContosoExcelWorkbook.vsto

    • ContosoInstaller.docx

    • ContosoOutlookAddIn.vsto

Vea también

Tareas

Cómo: Volver a firmar manifiestos de aplicación e implementación

Conceptos

Proteger las aplicaciones ClickOnce

Implementación avanzada de soluciones de Office

Otros recursos

Implementar soluciones de Office

Historial de cambios

Fecha

Historial

Motivo

Septiembre de 2010

Se ha cambiado %USERPROFILE%\Documents\Visual Studio 10\Projects a %USERPROFILE%\Documents\Visual Studio 2010\Projects.

Corrección de errores de contenido.