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 de Microsoft Office 2013 Preview y Microsoft Office 2010. 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 en las siguientes instrucciones. 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 2012 que incluye las herramientas para desarrolladores de Microsoft Office. Para obtener más información, vea [Configurar un equipo para desarrollar soluciones de Office](https://msdn.microsoft.com/es-es/library/bb398242\(v=vs.110\)).
Excel 2013 Preview 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 2012\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
En el menú Archivo, elija Agregar y, a continuación, haga clic en Nuevo proyecto.
En el cuadro de diálogo Agregar nuevo proyecto, en el panel Plantillas instaladas, haga clic en Windows.
En el panel Plantillas, haga clic en Biblioteca de clases.
En el campo Nombre, escriba FileCopyPDA y haga clic en Aceptar.
En Explorador de soluciones, haga clic en FileCopyPDA.
En el menú Proyecto , haga clic AgregarReferencia.
Aparecerá el cuadro de diálogo Agregar referencia.
En la pestaña .NET , agregue referencias a Microsoft.VisualStudio.Tools.Applications.Runtime y Microsoft.VisualStudio.Tools.Applications.ServerDocument.
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;
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
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.
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
En el Explorador de soluciones, haga clic con el botón secundario en FileCopyPDA y, a continuación, haga clic en Compilar.
En el Explorador de soluciones, haga clic con el botón secundario en ExcelWorkbook y, a continuación, haga clic en Compilar.
En el Explorador de soluciones, haga clic con el botón secundario en ExcelWorkbook y, a continuación, haga clic en Agregar referencia.
En el cuadro de diálogo Agregar referencia, seleccione la ficha Proyectos.
Haga clic en FileCopyPDA y, a continuación, en Aceptar.
En el Explorador de soluciones, haga clic en el proyecto ExcelWorkbook.
En el menú Proyecto, haga clic en Nueva carpeta.
Escriba Datos y presione la tecla Entrar.
En el Explorador de soluciones, haga clic en la carpeta Datos.
En el menú Proyecto, haga clic en Agregar elemento existente.
En el cuadro de diálogo Agregar elemento existente, vaya al directorio de salida del proyecto ExcelWorkbook.
Haga clic en ExcelWorkbook.xlsx y, a continuación, en Agregar.
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.
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.
Publique el proyecto ExcelWorkbook en la carpeta c:\publish. Para obtener más información, vea Cómo: Publicar una solución de Office usando 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
Abra el directorio c:\publish mediante el Explorador del archivo.
Abra la carpeta Archivos de aplicación y, a continuación, la carpeta ExcelWorkbook_1_0_0_0.
Abra el archivo ExcelWorkbook.dll.manifest en un editor de texto.
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
Copie el archivo de certificado ExcelWorkbook_TemporaryKey.pfx del directorio de la solución %perfilDeUsuario%\Documentos\Visual Studio 2012\Projects\ExcelWorkbook\ExcelWorkbook en el directorio c:\publish\Archivos de aplicación\ExcelWorkbook_1_0_0_0.
Abra el símbolo del sistema de Visual Studio.
Vaya al directorio c:\publish\Archivos de aplicación\ExcelWorkbook_1_0_0_0.
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".
Vaya al directorio c:\publish.
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".
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
Copie el directorio c:\publish en un equipo de pruebas.
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.
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.
Abra el archivo ExcelWorkbook.xlsx del escritorio.
Vea también
Tareas
Cómo: Volver a firmar manifiestos de aplicación e implementación