Tutorial: Copiar un documento en el equipo del usuario final tras una instalación de ClickOnce

Con una acción posterior a la implementación de ClickOnce, puede instalar soluciones de Office de nivel de documento y, a continuación, copiar el documento en el equipo del usuario final. Eso exige que se modifique el manifiesto de aplicación y se vuelvan a firmar los manifiestos de aplicación e implementación antes de la instalación.

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 una solución de Office para implementar.

  • Implementar una acción posterior a la implementación que copie un documento en el escritorio del usuario final.

  • Modificar el manifiesto de aplicación de la solución de Office para ejecutar la acción posterior a la implementación.

  • 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).
  • Excel 2007 o Excel 2010.

  • Un equipo de pruebas.

Crear un proyecto nuevo

En primer lugar, cree un proyecto de libro de Excel.

Para crear un nuevo proyecto de Excel

  • Cree un proyecto de nivel de documento de Excel. Póngale el nombre ExcelWorkbook y guarde el proyecto en el directorio %perfilDeUsuario%\Documentos\Visual Studio 2010\Projects. Para obtener más información, vea Cómo: Crear proyectos de Office en Visual Studio.

    Visual Studio abre el nuevo libro de Excel en el diseñador y agrega el proyecto ExcelWorkbook al Explorador de soluciones.

Crear un proyecto de biblioteca de clases que defina la acción posterior a la implementación

Debe definir la acción posterior a la implementación en una biblioteca de clases independiente. La acción posterior a la implementación copia el documento en el equipo del usuario final.

Para crear una biblioteca de clases para la acción posterior a la implementación

  1. En el menú Archivo, elija Agregar y, a continuación, haga clic en Nuevo proyecto.

  2. En el cuadro de diálogo Agregar nuevo proyecto, en el recuadro Plantillas instaladas, haga clic en Windows.

  3. En el recuadro Plantillas, haga clic en Biblioteca de clases.

  4. En el campo Nombre, escriba FileCopyPDA y haga clic en Aceptar.

  5. En el Explorador de soluciones, haga clic en FileCopyPDA.

  6. En el menú Proyecto, haga clic en Agregar referencia.

  7. En el cuadro de diálogo Agregar referencia, en la pestaña .NET, agregue las referencias siguientes:

    • Si el proyecto de Excel tiene como destino .NET Framework 3.5, agregue referencias a Microsoft.VisualStudio.Tools.Applications.Runtime.v10.0 y Microsoft.VisualStudio.Tools.Applications.ServerDocument.v10.0.

    • Si el proyecto de Excel tiene como destino .NET Framework 4, agregue referencias a Microsoft.VisualStudio.Tools.Applications.Runtime y Microsoft.VisualStudio.Tools.Applications.ServerDocument.

  8. Agregue las siguientes instrucciones using o Imports a la parte superior del archivo de código Class1.

    Imports Microsoft.VisualStudio.Tools.Applications.Deployment
    Imports Microsoft.VisualStudio.Tools.Applications
    
    using Microsoft.VisualStudio.Tools.Applications.Deployment;
    using Microsoft.VisualStudio.Tools.Applications;
    using System.IO;
    
  9. Cambie el nombre de la clase a FileCopyPDA y agregue el siguiente código a la clase FileCopyPDA. Este código indica que la clase FileCopyPDA hereda de IAddInPostDeploymentAction.

    Public Class FileCopyPDA
        Implements IAddInPostDeploymentAction
    
    public class FileCopyPDA : IAddInPostDeploymentAction
    
  10. Agregue el código siguiente para implementar el método IAddInPostDeploymentAction.Execute. Este código realiza las tareas siguientes:

    • Copia el archivo de libro de Excel en el escritorio del usuario si la solución se instala o actualiza.

    • Cambia la propiedad _AssemblyLocation de una ruta de acceso relativa a una ruta de acceso completa para el manifiesto de implementación. Lo hace mediante los métodos AddCustomization y RemoveCustomization.

    • Elimina el archivo si se desinstala la solución.

      Nota

      La acción posterior a la implementación se ejecuta durante el paso de desinstalación para .NET Framework 3.5.

    Sub Execute(ByVal args As AddInPostDeploymentActionArgs) Implements IAddInPostDeploymentAction.Execute
        Dim dataDirectory As String = "Data\ExcelWorkbook.xlsx"
        Dim file As String = "ExcelWorkbook.xlsx"
        Dim sourcePath As String = args.AddInPath
        Dim deploymentManifestUri As Uri = args.ManifestLocation
        Dim destPath As String = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory)
        Dim sourceFile As String = System.IO.Path.Combine(sourcePath, dataDirectory)
        Dim destFile As String = System.IO.Path.Combine(destPath, file)
    
        Select Case args.InstallationStatus
            Case AddInInstallationStatus.InitialInstall, AddInInstallationStatus.Update
                System.IO.File.Copy(sourceFile, destFile)
                ServerDocument.RemoveCustomization(destFile)
                ServerDocument.AddCustomization(destFile, deploymentManifestUri)
                Exit Select
            Case AddInInstallationStatus.Uninstall
                If System.IO.File.Exists(destFile) Then
                    System.IO.File.Delete(destFile)
                End If
                Exit Select
        End Select
    End Sub
    
    public void Execute(AddInPostDeploymentActionArgs args) 
    {
        string dataDirectory = @"Data\ExcelWorkbook.xlsx";
        string file = @"ExcelWorkbook.xlsx";
        string sourcePath = args.AddInPath;
        Uri deploymentManifestUri = args.ManifestLocation;
        string destPath = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory);
        string sourceFile = System.IO.Path.Combine(sourcePath, dataDirectory);
        string destFile = System.IO.Path.Combine(destPath, file);
    
        switch (args.InstallationStatus)
        {
            case AddInInstallationStatus.InitialInstall:
            case AddInInstallationStatus.Update:
                File.Copy(sourceFile, destFile);
                ServerDocument.RemoveCustomization(destFile);
                ServerDocument.AddCustomization(destFile, deploymentManifestUri);
                break;
            case AddInInstallationStatus.Uninstall:
                if (File.Exists(destFile))
                {
                    File.Delete(destFile);
                }
                break;
        }
    }
    

Compilar y publicar la solución

Emplee el Asistente para publicación o la página Proyecto para compilar y publicar las soluciones de Office en su equipo de desarrollo.

Para publicar el proyecto Excel

  1. En el Explorador de soluciones, haga clic con el botón secundario en FileCopyPDA y, a continuación, haga clic en Generar.

  2. En el Explorador de soluciones, haga clic con el botón secundario en ExcelWorkbook y, a continuación, haga clic en Generar.

  3. En el Explorador de soluciones, haga clic con el botón secundario en ExcelWorkbook y, a continuación, haga clic en Agregar referencia.

  4. En el cuadro de diálogo Agregar referencia, seleccione la ficha Proyectos.

  5. Haga clic en FileCopyPDA y, a continuación, en Aceptar.

  6. En el Explorador de soluciones, haga clic en el proyecto ExcelWorkbook.

  7. En el menú Proyecto, haga clic en Nueva carpeta.

  8. Escriba Datos y presione la tecla Entrar.

  9. En el Explorador de soluciones, haga clic en la carpeta Datos.

  10. En el menú Proyecto, haga clic en Agregar elemento existente.

  11. En el cuadro de diálogo Agregar elemento existente, vaya al directorio de salida del proyecto ExcelWorkbook.

  12. Haga clic en ExcelWorkbook.xlsx y, a continuación, en Agregar.

  13. En el Explorador de soluciones, haga clic en ExcelWorkbook.xlsx.

    Nota

    Si modifica este archivo más adelante, asegúrese de actualizarlo agregando la última versión del archivo.

  14. En la ventana Propiedades, cambie la propiedad Acción de compilación a Contenido y la propiedad Copiar en el directorio de salida a Copiar si es posterior.

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

Modificar el manifiesto de aplicación

Use el editor XML de Visual Studio para modificar el manifiesto de aplicación a fin de ejecutar la acción posterior a la implementación Copia de archivos. 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. 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.

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

  1. Abra el directorio c:\publish mediante el Explorador de Windows.

  2. Abra la carpeta Archivos de aplicación y, a continuación, la carpeta ExcelWorkbook_1_0_0_0.

  3. Abra el archivo ExcelWorkbook.dll.manifest en un editor de texto.

  4. Agregue el código siguiente después del elemento </vstav3:update>. Para el atributo de clase del elemento <vstav3:entryPoint>, emplee la sintaxis siguiente: nombreDeEspacioDeNombres.nombreDeClase. En este ejemplo, los nombres de clase y espacio de nombres son los mismos, para que el nombre del punto de entrada resultante sea FileCopyPDA.FileCopyPDA.

    <vstav3:postActions>
      <vstav3:postAction>
        <vstav3:entryPoint
          class="FileCopyPDA.FileCopyPDA">
          <assemblyIdentity
            name="FileCopyPDA"
            version="1.0.0.0"
            language="neutral"
            processorArchitecture="msil" />
        </vstav3:entryPoint>
        <vstav3:postActionData>
        </vstav3:postActionData>
      </vstav3:postAction>
    </vstav3:postActions>
    

Volver a firmar los manifiestos

El procedimiento siguiente firma el manifiesto de aplicación y actualiza el manifiesto de implementación. Eso garantiza que no se instalen archivos manipulados en los equipos de los usuarios finales.

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

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

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

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

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

    mage -sign ExcelWorkbook.dll.manifest -certfile ExcelWorkbook_TemporaryKey.pfx
    

    Aparece el mensaje "ExcelWorkbook.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 ExcelWorkbook.vsto -appmanifest "Application Files\Ex
    celWorkbook_1_0_0_0\ExcelWorkbook.dll.manifest" -certfile "Application Files\ExcelWorkbook_1_0_0_0\ExcelWorkbook_TemporaryKey.pfx"
    

    Aparece el mensaje "ExcelWorkbook.vsto firmado correctamente".

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

Probar la acción posterior a la implementación

El procedimiento siguiente garantiza que el manifiesto actualizado instala el libro de Excel y lo copia en el escritorio del usuario final.

Para probar la acción posterior a la implementación

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

  2. Ejecute el programa Setup.exe, o si los requisitos previos ya están instalados en el equipo de pruebas, haga doble clic en el manifiesto de implementación ExcelWorkbook.vsto.

    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". El libro de Excel se copia en el escritorio del usuario final.

  4. Abra el archivo ExcelWorkbook.xlsx del escritorio.

Vea también

Tareas

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

Conceptos

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.