Implementación de una solución VSTO mediante Windows Installer

Resumen

Obtenga información sobre cómo implementar un complemento de Microsoft Visual Studio Tools para Office (VSTO) o una solución de nivel de documento mediante un proyecto de Instalador de Visual Studio.

Wouter van Vugt, asesor de código

Ted Pattison, Ted Pattison Group

Microsoft actualizó este artículo con permiso de los autores originales.

Se aplica a: Visual Studio Tools para Office, Microsoft Office, Microsoft Visual Studio.

Puede desarrollar una solución VSTO e implementarla mediante un paquete de Windows Installer. En esta explicación se incluyen los pasos para implementar un complemento de Office sencillo.

Métodos de implementación

ClickOnce se puede usar fácilmente para crear configuraciones para sus complementos y soluciones. Sin embargo, no puede instalar complementos que requieran privilegios administrativos como complementos de nivel de máquina.

Los complementos que requieren privilegios administrativos se pueden instalar mediante Windows Installer, pero requiere más esfuerzo para crear la instalación.

Para obtener información general sobre cómo implementar una solución VSTO mediante ClickOnce, consulte Implementación de una solución de Office mediante ClickOnce.

Implementación de soluciones de Office destinadas al entorno de ejecución de VSTO

Los paquetes ClickOnce y Windows Installer deben realizar las mismas tareas rudimentarias al instalar una solución de Office.

  1. Instale los componentes de requisitos previos en el equipo de usuario.
  2. Implemente los componentes específicos para la solución.
  3. En Complementos, cree entradas del Registro.
  4. Confíe en la solución para permitir que se ejecute.

Componentes de requisitos previos necesarios en el equipo de destino

Esta es la lista de software que se debe instalar en el equipo para ejecutar soluciones de VSTO:

  • Microsoft Office 2010 o posterior.
  • Microsoft .NET Framework 4 o posterior.
  • Runtime de Microsoft Visual Studio 2010 Tools para Office. El entorno de ejecución proporciona un entorno que administra complementos y soluciones de nivel de documento. Una versión del entorno de ejecución se distribuye con Microsoft Office, pero es posible que quiera redistribuir una versión específica con el complemento.
  • Los ensamblados de interoperabilidad primarios para Microsoft Office, si no usa tipos de interoperabilidad insertados.
  • Cualquier ensamblado de utilidades al que hacen referencia los proyectos.

Componentes específicos para la solución

El paquete del instalador debe instalar estos componentes en el equipo del usuario:

  • El documento de Microsoft Office, si crea una solución de nivel de documento.
  • El ensamblado de personalización y los ensamblados que requiere.
  • Componentes adicionales, como archivos de configuración.
  • El manifiesto de aplicación (.manifest).
  • El manifiesto de implementación (.vsto).

Entradas del Registro para complementos

Microsoft Office usa entradas del Registro para buscar y cargar complementos. Estas entradas del Registro se deben crear como parte del proceso de implementación. Para obtener más información sobre estas entradas del Registro, consulte Entradas del Registro para complementos de VSTO.

Los complementos de Outlook que muestran áreas de formulario personalizadas requieren entradas adicionales del Registro que permiten identificar las áreas del formulario. Para obtener más información sobre las entradas del Registro, vea Entradas del Registro para las áreas del formulario de Outlook.

Las soluciones de nivel de documento no requieren ninguna entrada del Registro. En su lugar, las propiedades del documento se usan para buscar la personalización. Para obtener más información sobre estas propiedades, vea Custom Document Properties Overview.

Confiar en la solución VSTO

Para que se ejecute una personalización, la máquina debe confiar en una solución. El complemento puede ser de confianza firmando el manifiesto con un certificado, creando una relación de confianza con una lista de inclusión o instalandolo en una ubicación de confianza en el equipo.

Para obtener más información sobre cómo obtener un certificado para la firma, consulte Implementación de ClickOnce y Authenticode. Para obtener más información sobre las soluciones de confianza, vea Confiar en soluciones de Office mediante listas de inclusión. Puedes agregar una entrada de lista de inclusión con una acción personalizada en el archivo de Windows Installer. Para obtener más información sobre cómo habilitar la lista de inclusión, vea How to: Configure Inclusion List Security.

Si no se usa ninguna opción, se muestra un mensaje de confianza al usuario para que decida si confía en la solución.

Para obtener más información sobre la seguridad relacionada con las soluciones de nivel de documento, consulte Concesión de confianza a documentos.

Creación de un instalador básico

Las plantillas de proyecto de instalación e implementación se incluyen con la extensión Microsoft Instalador de Visual Studio Projects que está disponible para su descarga.

Para crear un instalador para una solución de Office, estas tareas deben realizarse:

  • Agregue los componentes de la solución de Office que se implementará.
  • Para complementos de nivel de aplicación, configure las claves del Registro.
  • Configure los componentes de requisitos previos para que se puedan instalar en los equipos de los usuarios finales.
  • Configure las condiciones de inicio para comprobar que los componentes de requisitos previos necesarios están disponibles. Las condiciones de inicio se pueden usar para bloquear la instalación si no se instalan todos los requisitos previos necesarios.

El primer paso es crear el proyecto de instalación.

Para crear el proyecto de instalación de AddIn

  1. Abra el proyecto de Complemento de Office que desea implementar. En este ejemplo, se usa un complemento de Excel denominado ExcelAddIn.
  2. Con el proyecto de Office Abierto, en el menú Archivo , expanda Agregar y haga clic en Nuevo proyecto para agregar un nuevo proyecto.
  1. En el cuadro de diálogo Agregar un nuevo proyecto , seleccione la plantilla Proyecto de instalación.
  2. Haga clic en Next.
  1. En el cuadro Nombre , escriba OfficeAddInSetup.
  1. Haga clic en Crear para crear el nuevo proyecto de instalación.

Visual Studio abre el Explorador de sistemas de archivos para el nuevo proyecto de instalación. El Explorador de sistemas de archivos permite agregar archivos al proyecto de instalación.

Screenshot of the File System Explorer for the setup project

Figura 1: Explorador de sistemas de archivos para el proyecto de instalación

El proyecto de instalación debe implementar ExcelAddIn. Para configurar el proyecto de instalación para esta tarea, agregue la salida del proyecto ExcelAddIn al proyecto de instalación.

Para agregar la salida del proyecto ExcelAddIn

  1. En el Explorador de soluciones, haga clic con el botón derecho en OfficeAddInSetup, haga clic en Agregar y, a continuación, en Salida del proyecto.

  2. En el cuadro de diálogo Agregar grupo de salida del proyecto, seleccione ExcelAddIn en la lista de proyectos y Salida principal.

  3. Haga clic en Aceptar para agregar la salida del proyecto al proyecto de instalación.

    Screenshot of the Setup Project Add Project Output Group dialog

    Figura 2: Cuadro de diálogo Agregar grupo de salida del proyecto de instalación

El proyecto de instalación debe implementar el manifiesto de implementación y el manifiesto de aplicación. Agregue estos dos archivos al proyecto de instalación como archivos independientes desde la carpeta de salida del proyecto ExcelAddIn.

Para agregar los manifiestos de implementación y aplicación

  1. En el Explorador de soluciones, haga clic con el botón derecho en OfficeAddInSetup, haga clic en Agregar y haga clic en Archivo.

  2. En el cuadro de diálogo Agregar archivos , vaya al directorio de salida ExcelAddIn . Normalmente, el directorio de salida es la subcarpeta bin\release del directorio raíz del proyecto, en función de la configuración de compilación seleccionada.

  3. Seleccione los archivos ExcelAddIn.vsto y ExcelAddIn.dll.manifest y haga clic en Abrir para agregar estos dos archivos al proyecto de instalación.

    Screenshot of the Application and deployment manifests in Solution Explorer

    Figura 3: Manifiestos de aplicación e implementación para el complemento Explorador de soluciones

Al hacer referencia a ExcelAddIn se incluyen todos los componentes que requiere ExcelAddIn. Estos componentes deben excluirse e implementarse mediante paquetes de requisitos previos para permitir que se registren correctamente. Además, los Términos de licencia de software deben mostrarse y aceptarse antes de que comience la instalación.

Para excluir las dependencias del proyecto ExcelAddIn

  1. En el Explorador de soluciones, en el nodo OfficeAddInSetup, seleccione todos los elementos de dependencia debajo del elemento Dependencias detectadas, excepto microsoft .NET Framework o cualquier ensamblado que termine con *. Utilities.dll. Los ensamblados de utilidades están diseñados para implementarse junto con la aplicación.

  2. Haga clic con el botón derecho en el grupo y seleccione Propiedades.

  3. En la ventana Propiedades , cambie la propiedad Exclude a True para excluir los ensamblados dependientes del proyecto de instalación. Asegúrese de no excluir ningún ensamblado de utilidades.

    Screenshot of Solution Explorer showing the dependencies to exclude

    Figura 4: Exclusión de dependencias

Puedes configurar el paquete de Windows Installer para instalar componentes de requisitos previos agregando un programa de instalación, también conocido como programa previo. Este programa de instalación puede instalar los componentes de requisitos previos, un proceso denominado arranque.

Para ExcelAddIn, estos requisitos previos deben instalarse para que el complemento se pueda ejecutar correctamente:

  • Versión de Microsoft .NET Framework destinada a la solución de Office.
  • Microsoft Visual Studio 2010 Tools para Office Runtime.

Para configurar los componentes dependientes como requisitos previos

  1. En el Explorador de soluciones, haga clic con el botón derecho en el proyecto OfficeAddInSetup y seleccione Propiedades.

  2. Aparece el cuadro de diálogo Páginas de propiedades officeAddInSetup.

  3. Haga clic en el botón Requisitos previos .

  4. En el cuadro de diálogo Requisitos previos, seleccione la versión correcta de .NET Framework y Microsoft Visual Studio Tools para Office Runtime.

    Screenshot of the Prerequisites Dialog Box

    Figura 5: Cuadro de diálogo Requisitos previos

    Nota:

    Algunos de los paquetes de requisitos previos configurados en el proyecto de instalación de Visual Studio dependen de la configuración de compilación seleccionada. Debe seleccionar los componentes de requisitos previos adecuados para cada configuración de compilación que use.

Microsoft Office busca complementos mediante claves del Registro. Las claves del HKEY_CURRENT_USER hive se usan para registrar el complemento para cada usuario individual. Las claves de la HKEY_LOCAL_MACHINE hive se usan para registrar el complemento para todos los usuarios de la máquina. Para obtener más información sobre las claves del Registro, consulte Entradas del Registro para complementos de VSTO.

Para configurar el Registro

  1. En el Explorador de soluciones, haga clic con el botón derecho en OfficeAddInSetup.

  2. Expanda Vista.

  3. Haga clic en Registro para abrir la ventana del editor del Registro.

  4. En el editor del Registro (OfficeAddInSetup), expanda HKEY_LOCAL_MACHINE y, a continuación , Software.

  5. Elimine la clave [Fabricante] que se encuentra en HKEY_LOCAL_MACHINE\Software.

  6. Expanda HKEY_CURRENT_USER y, a continuación, Software.

  7. Elimine la clave [Fabricante] que se encuentra en HKEY_CURRENT_USER\Software.

  8. Para agregar claves del Registro para la instalación del complemento, haga clic con el botón derecho en la clave de Hive usuario/máquina, seleccione Nueva clave. Use el texto Software para el nombre de la nueva clave. Haga clic con el botón derecho en la clave de software recién creada y cree una nueva clave con el texto Microsoft.

  9. Use un proceso similar para crear toda la jerarquía de claves necesaria para el registro del complemento:

    User/Machine Hive\Software\Microsoft\Office\Excel\Addins\SampleCompany.ExcelAddIn

    El nombre de la compañía se usa a menudo como prefijo para el nombre del complemento para proporcionar unicidad.

  10. Haga clic con el botón derecho en la tecla SampleCompany.ExcelAddIn , seleccione Nuevo y haga clic en Valor de cadena. Use el texto Description (Descripción ) para el nombre.

  11. Use este paso para agregar tres valores más:

    • FriendlyName de tipo String
    • LoadBehavior de tipo DWORD
    • Manifiesto de tipo String
  12. Haga clic con el botón derecho en el valor Descripción en el editor del Registro y haga clic en Ventana Propiedades. En la ventana Propiedades, escriba Complemento de demostración de Excel para la propiedad Value.

  13. Seleccione la clave FriendlyName en el editor del Registro. En la ventana Propiedades, cambie la propiedad Value a Excel Demo AddIn.

  14. Seleccione la clave LoadBehavior en el editor del Registro. En la ventana Propiedades, cambie la propiedad Value a 3. El valor 3 de LoadBehavior indica que el complemento debe cargarse al inicio de la aplicación host. Para obtener más información sobre el comportamiento de carga, consulte Entradas del Registro para complementos de VSTO.

  15. Seleccione la clave Manifiesto en el editor del Registro. En la ventana Propiedades, cambie la propiedad Value a file:///[TARGETDIR]ExcelAddIn.vsto|vstocal

    Screenshot of the Registry Editor

    Figura 6: Configuración de claves del Registro

    El tiempo de ejecución de VSTO usa esta clave del Registro para buscar el manifiesto de implementación. La macro [TARGETDIR] se reemplazará por la carpeta donde está instalado el complemento. La macro incluirá el carácter \final, por lo que el nombre de archivo del manifiesto de implementación debe ser ExcelAddIn.vsto sin el carácter \ . El postfijo vstolocal indica al tiempo de ejecución de VSTO que el complemento debe cargarse desde esta ubicación en lugar de la caché de ClickOnce. Al quitar este postfijo, el tiempo de ejecución copiará la personalización en la memoria caché de ClickOnce.

Advertencia

Debe tener mucho cuidado con el Editor del Registro en Visual Studio. Por ejemplo, si establece accidentalmente DeleteAtUninstall para la clave incorrecta, puede eliminar una parte activa del registro, dejar el equipo del usuario en un estado incoherente, o incluso peor, roto.

Las versiones de 64 bits de Office usarán el subárbol del Registro de 64 bits para buscar complementos. Para registrar complementos en el subárbol del Registro de 64 bits, la plataforma de destino del proyecto de instalación debe establecerse en solo 64 bits.

  1. Seleccione el proyecto OfficeAddInSetup en el Explorador de soluciones.
  2. Vaya a la ventana Propiedades y establezca La propiedad TargetPlatform en x64.

La instalación de un complemento para versiones de 32 y 64 bits de Office requerirá que cree dos paquetes MSI independientes. Uno para 32 bits y otro para 64 bits.

Screenshot of the Properties Window showing the Target Platform for registering Add-ins with 64-bit Office

Figura 7: Plataforma de destino para registrar complementos con Office de 64 bits

Si el paquete MSI se usa para instalar el complemento o la solución, puede instalarse sin los requisitos previos necesarios que se están instalando. Puede usar condiciones de inicio en msi para impedir que el complemento se instale si no están instalados los requisitos previos.

Configuración de una condición de inicio para detectar el entorno de ejecución de VSTO

  1. En el Explorador de soluciones, haga clic con el botón derecho en OfficeAddInSetup.

  2. Expanda Vista.

  3. Haga clic en Condiciones de inicio.

  4. En el editor Condiciones de inicio (OfficeAddInSetup), haga clic con el botón derecho en Requisitos en la máquina de destino y, a continuación, haga clic en Agregar condición de inicio del Registro. Esta condición de búsqueda puede buscar en el Registro una clave que instala el entorno de ejecución de VSTO. A continuación, el valor de la clave está disponible para las distintas partes del instalador a través de una propiedad con nombre. La condición de inicio usa la propiedad definida por la condición de búsqueda para comprobar si hay un valor determinado.

  5. En el editor Condiciones de inicio (OfficeAddInSetup), seleccione la condición de búsqueda Buscar RegistroEntry1 , haga clic con el botón derecho en la condición y seleccione Ventana Propiedades.

  6. En la ventana Propiedades , establezca estas propiedades:

    1. Establezca el valor de (Name)en Buscar VSTO 2010 Runtime.
    2. Cambie el valor de Property a VSTORUNTIMEREDIST.
    3. Establezca el valor de RegKey en SOFTWARE\Microsoft\VSTO Runtime Setup\v4R
    4. Deje la propiedad Root establecida en vsdrrHKLM.
    5. Cambie la propiedad Value a Version.
  7. En el editor Condiciones de inicio (OfficeAddInSetup), seleccione la condición de inicio Condition1 , haga clic con el botón derecho en la condición y seleccione Ventana Propiedades.

  8. En la ventana Propiedades , establezca estas propiedades:

    1. Establezca (Name) en Verify VSTO 2010 Runtime availability (Comprobar la disponibilidad en tiempo de ejecución de VSTO 2010).

    2. Cambie el valor de Condition a VSTORUNTIMEREDIST>="10.0.30319"

    3. Deje en blanco la propiedad InstallURL .

    4. Establezca el mensaje en The Visual Studio 2010 Tools for Office Runtime is not installed (No está instalado el mensaje en Visual Studio 2010 Tools para Office Runtime). Ejecute Setup.exe para instalar el complemento.

      Screenshot of the Properties Window for the Verify Runtime Availability launch condition

      Figura 8: Ventana Propiedades para comprobar la condición de inicio de disponibilidad en tiempo de ejecución

La condición de inicio anterior comprueba explícitamente la presencia del tiempo de ejecución de VSTO cuando el paquete de arranque lo instala.

Configurar una condición de inicio para detectar el entorno de ejecución de VSTO instalado por Office

  1. En el editor Condiciones de inicio (OfficeAddInSetup), haga clic con el botón derecho en Buscar máquina de destino y, a continuación, haga clic en Agregar búsqueda del Registro.

  2. Seleccione la condición de búsqueda Buscar RegistroEntry1 , haga clic con el botón derecho en la condición y seleccione Ventana Propiedades.

  3. En la ventana Propiedades , establezca estas propiedades:

    1. Establezca el valor de (Name) en Buscar el runtime de VSTO de Office.
    2. Cambie el valor de Property a OfficeRuntime.
    3. Establezca el valor de RegKey en SOFTWARE\Microsoft\VSTO Runtime Setup\v4.
    4. Deje la propiedad Root establecida en vsdrrHKLM.
    5. Cambie la propiedad Value a Version.
  4. En el editor Condiciones de inicio (OfficeAddInSetup), seleccione la condición de inicio Comprobar la condición de inicio de disponibilidad en tiempo de ejecución de VSTO 2010 definida anteriormente, haga clic con el botón derecho en la condición y seleccione Ventana Propiedades.

  5. Cambie el valor de la propiedad Condition a VSTORUNTIMEREDIST >="10.0.30319" OR OFFICERUNTIME>="10.0.21022". Los números de versión pueden ser diferentes en función de las versiones del entorno de ejecución que requiere el complemento.

    Screenshot of the Properties Windows for the launch condition

    Figura 9: Propiedades de Windows para comprobar la disponibilidad en tiempo de ejecución a través de la condición de inicio de Redist u Office

Si un complemento tiene como destino .NET Framework 4 o versiones posteriores, los tipos dentro de los ensamblados de interoperabilidad primarios (PIA), a los que se hace referencia, se pueden incrustar en el ensamblado VSTO.

Para comprobar si los tipos de interoperabilidad se incrustarán en el complemento, siga estos pasos:

  1. Expanda el nodo Referencias en Explorador de soluciones
  2. Seleccione una de las referencias de PIA, por ejemplo, Office.
  3. Para ver las ventanas de propiedades, presione F4 o seleccione Propiedades en el menú contextual Ensamblados.
  4. Compruebe el valor de la propiedad Insertar tipos de interoperabilidad.

Si el valor se establece en True, los tipos se insertan y puede ir directamente a la sección Para compilar el proyecto de instalación.

Para obtener más información, vea Tipos de equivalencia de tipos e interoperabilidad incrustados.

Para configurar las condiciones de inicio para detectar que para los PIA de Office

  1. En el editor Condiciones de inicio (OfficeAddInSetup), haga clic con el botón derecho en Requisitos en la máquina de destino y, a continuación , haga clic en Agregar condición de inicio de Windows Installer. Esta condición de inicio busca un PIA de Office buscando el identificador de componente específico.

  2. Haga clic con el botón derecho en Buscar componente1 y haga clic en Ventana Propiedades para mostrar las propiedades de la condición de inicio.

  3. En la ventana Propiedades, establezca estas propiedades:

    1. Cambie el valor de la propiedad (Name) a Search for Office Shared PIA (Buscar PIA compartido de Office)
    2. Cambie el valor de ComponentID a Id. de componente para el componente de Office que está usando. Puede encontrar la lista de identificadores de componente en la tabla siguiente, por ejemplo {64E2917E-AA13-4CA4-BFFE-EA6EDA3AFCB4}.
    3. Cambie el valor de la propiedad Property a HASSHAREDPIA.
  4. En el editor Condiciones de inicio (OfficeAddInSetup), haga clic con el botón derecho en Condición1 y haga clic en Ventana Propiedades para mostrar las propiedades de la condición de inicio.

  5. Cambie estas propiedades de Condition1:

    1. Cambie ( Nombre) a Comprobar la disponibilidad del PIA compartido de Office.
    2. Cambie la condición a HASSHAREDPIA.
    3. Deje InstallUrl en blanco.
    4. Cambie el mensaje a un componente necesario para interactuar con Excel no está disponible. Ejecute setup.exe.

    Screenshot of the Properties Window for the Verify Office Shared PIA launch condition

    Figura 10: Ventana Propiedades para la condición de inicio comprobar pia compartido de Office

Identificadores de componente de los ensamblados de interoperabilidad primarios para Microsoft Office

Ensamblado de interoperabilidad principal Office 2010 Office 2013 Office 2013 (64 bits) Office 2016 Office 2016 (64 bits)
Excel {EA7564AC-C67D-4868-BE5C-26E4FC2223FF} {C8A65ABE-3270-4FD7-B854-50C8082C8F39} {E3BD1151-B9CA-4D45-A77E-51A6E0ED322A} {C845E028-E091-442E-8202-21F596C559A0} {C4ACE6DB-AA99-401F-8BE6-8784BD09F003}
InfoPath {4153F732-D670-4E44-8AB7-500F2B576BDA} {0F825A16-25B2-4771-A497-FC8AF3B355D8} {C5BBD36E-B320-47EF-A512-556B99CB7E41} - -
Outlook {1D844339-3DAE-413E-BC13-62D6A52816B2} {F9F828D5-9F0B-46F9-9E3E-9C59F3C5E136} {7824A03F-28CC-4371-BC54-93D15EFC1E7F} {2C6C511D-4542-4E0C-95D0-05D4406032F2} {7C6D92EF-7B45-46E5-8670-819663220E4E}
PowerPoint {EECBA6B8-3A62-44AD-99EB-8666265466F9} {813139AD-6DAB-4DDD-8C6D-0CA30D073B41} {05758318-BCFD-4288-AD8D-81185841C235} {9E73CEA4-29D0-4D16-8FB9-5AB17387C960} {E0A76492-0FD5-4EC2-8570-AE1BAA61DC88}
Visio {3EA123B5-6316-452E-9D51-A489E06E2347} {C1713368-12A8-41F1-ACA1-934B01AD6EEB} {2CC0B221-22D2-4C15-A9FB-DE818E51AF75} {A4C55BC1-B94C-4058-B15C-B9D4AE540AD1} {2D4540EC-2C88-4C28-AE88-2614B5460648}
Word {8B74A499-37F8-4DEA-B5A0-D72FC501CEFA} {9FE736B7-B1EE-410C-8D07-082891C3DAC8} {13C07AF5-B206-4A48-BB5B-B8022333E3CA} {30CAC893-3CA4-494C-A5E9-A99141352216} {DC5CCACD-A7AC-4FD3-9F70-9454B5DE5161}
Microsoft Forms 2.0 {B2279272-3FD2-434D-B94E-E4E0F8561AC4} {B2279272-3FD2-434D-B94E-E4E0F8561AC4} {A5A30117-2D2A-4C5C-B3C8-8897AC32C2C2AC} - -
Microsoft Graph {011B9112-EBB1-4A6C-86CB-C2FDC9EA7B0E} {52DA4B37-B8EB-4B7F-89C1-824654CE4C70} {24706F33-F0CE-4EB4-BC91-9E935394F510} - -
Etiqueta inteligente {7102C98C-EF47-4F04-A227-FE33650BF954} {487A7921-EB3A-4262-BB5B-A5736B732486} {74EFC1F9-747D-4867-B951-EFCF29F51AF7} - -
Office Shared {64E2917E-AA13-4CA4-BFFE-EA6EDA3AFCB4} {6A174BDB-0049-4D1C-86EF-3114CB0C4C4E} {76601EBB-44A7-49EE-8DE3-7B7B9D7EBB05} {68477CB0-662A-48FB-AF2E-9573C92869F7} {625F5772-C1B3-497E-8ABE-7254EDB00506}
Proyecto {957A4EC0-E67B-4E86-A383-6AF7270B216A} {1C50E422-24FA-44A9-A120-E88280C8C341} {706D7F44-8231-489D-9B25-3025ADE9F114} {0B6EDA1D-4A15-4F88-8B20-EA6528978E4E} {107BCD9A-F1DC-4004-A444-33706FC10058}

Screenshot of the Final launch conditions

Figura 11: Condiciones de lanzamiento finales

Puede refinar aún más las condiciones de inicio de la instalación de ExcelAddIn. Por ejemplo, puede resultar útil comprobar si está instalado el destino real aplicación de Office lication.

Para compilar el proyecto de instalación

  1. En el Explorador de soluciones, haga clic con el botón derecho en el proyecto OfficeAddInSetup y haga clic en Compilar.
  2. Con el Explorador de Windows, vaya al directorio de salida del proyecto OfficeAddInSetup y vaya a la carpeta Versión o Depuración, en función de la configuración de compilación seleccionada. Copie todos los archivos de la carpeta en una ubicación a la que los usuarios puedan acceder.

Para probar la configuración de ExcelAddIn

  1. Vaya a la ubicación en la que copió OfficeAddInSetup .
  2. Haga doble clic en el archivo setup.exe para instalar el complemento OfficeAddInSetup . Acepte los términos de licencia de software que aparecen y complete el asistente para la instalación para instalar el complemento en el equipo de usuario.

La solución de Excel Office debe instalar y ejecutarse desde la ubicación especificada durante la instalación.

Requisitos adicionales para soluciones de nivel de documento

La implementación de soluciones de nivel de documento requiere algunos pasos de configuración diferentes en el proyecto de instalación de Windows Installer.

Esta es una lista de los pasos básicos necesarios para implementar una solución de nivel de documento:

  • Cree el proyecto de instalación de Visual Studio.
  • Agregue la salida principal de la solución de nivel de documento. La salida principal también incluye el documento de Microsoft Office.
  • Agregue los manifiestos de implementación y aplicación como archivos dinámicos.
  • Excluya los componentes dependientes del paquete del instalador (excepto los ensamblados de utilidades).
  • Configure los paquetes de requisitos previos.
  • Configure las condiciones de inicio.
  • Compile el proyecto de instalación y copie los resultados en la ubicación de implementación.
  • Implemente la solución de nivel de documento en el equipo de usuario ejecutando la configuración.
  • Actualice las propiedades del documento personalizadas si es necesario.

Cambiar la ubicación del documento implementado

Las propiedades dentro de un documento de Office se usan para buscar soluciones de nivel de documento. Si el documento está instalado en la misma carpeta que el ensamblado VSTO, no se requieren cambios. Sin embargo, si se instala en una carpeta diferente, estas propiedades deberán actualizarse durante la instalación.

Para obtener más información sobre estas propiedades de documento, vea Información general sobre las propiedades del documento personalizado.

Para cambiar estas propiedades, debe usar una acción personalizada durante la instalación.

En el ejemplo siguiente se usa una solución de nivel de documento denominada ExcelWorkbookProject y un proyecto de instalación denominado ExcelWorkbookSetup. El proyecto ExcelWorkbookSetup se configura mediante los mismos pasos descritos anteriormente, excepto para establecer las claves del Registro.

Para agregar el proyecto de acción personalizada a la solución de Visual Studio

  1. Para agregar un nuevo proyecto de consola de .NET a la solución, haga clic con el botón derecho en el proyecto de implementación de documentos de Office en el Explorador de soluciones

  2. Expanda Agregar y haga clic en Nuevo proyecto.

  3. Seleccione la plantilla Aplicación de consola y asigne el nombre AddCustomizationCustomAction al proyecto.

    Screenshot of the Solution Explorer - AddCustomizationCustomAction

    Figura 12: Explorador de soluciones: AddCustomizationCustomAction

  4. Agregue una referencia a estos ensamblados:

    1. System.ComponentModel
    2. System.Configuration.Install
    3. Microsoft.VisualStudio.Tools.Applications
    4. Microsoft.VisualStudio.Tools.Applications.ServerDocument
  5. Copie este código en Program.cs o Program.vb.

    using System;
    using System.IO;
    using System.Collections;
    using System.ComponentModel;
    using System.Configuration.Install;
    using Microsoft.VisualStudio.Tools.Applications;
    using Microsoft.VisualStudio.Tools.Applications.Runtime;

    namespace AddCustomizationCustomAction
    {
        [RunInstaller(true)]
        public class AddCustomizations : Installer
        {
            public AddCustomizations() : base() { }

            public override void Install(IDictionary savedState)
            {
                base.Install(savedState);

                //Get the CustomActionData Parameters
                string documentLocation = Context.Parameters.ContainsKey("documentLocation") ? Context.Parameters["documentLocation"] : String.Empty;
                string assemblyLocation = Context.Parameters.ContainsKey("assemblyLocation") ? Context.Parameters["assemblyLocation"] : String.Empty;
                string deploymentManifestLocation = Context.Parameters.ContainsKey("deploymentManifestLocation") ? Context.Parameters["deploymentManifestLocation"] : String.Empty;
                Guid solutionID = Context.Parameters.ContainsKey("solutionID") ? new Guid(Context.Parameters["solutionID"]) : new Guid();

                string newDocLocation = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), Path.GetFileName(documentLocation));

                try
                {
                    //Move the file and set the Customizations
                    if (Uri.TryCreate(deploymentManifestLocation, UriKind.Absolute, out Uri docManifestLocationUri))
                    {
                        File.Move(documentLocation, newDocLocation);
                        ServerDocument.RemoveCustomization(newDocLocation);
                        ServerDocument.AddCustomization(newDocLocation, assemblyLocation,
                                                        solutionID, docManifestLocationUri,
                                                        true, out string[] nonpublicCachedDataMembers);
                    }
                    else
                    {
                        LogMessage("The document could not be customized.");
                    }
                }
                catch (ArgumentException)
                {
                    LogMessage("The document could not be customized.");
                }
                catch (DocumentNotCustomizedException)
                {
                    LogMessage("The document could not be customized.");
                }
                catch (InvalidOperationException)
                {
                    LogMessage("The customization could not be removed.");
                }
                catch (IOException)
                {
                    LogMessage("The document does not exist or is read-only.");
                }
            }

            public override void Rollback(IDictionary savedState)
            {
                base.Rollback(savedState);
                DeleteDocument();
            }
            public override void Uninstall(IDictionary savedState)
            {
                base.Uninstall(savedState);
                DeleteDocument();
            }
            private void DeleteDocument()
            {
                string documentLocation = Context.Parameters.ContainsKey("documentLocation") ? Context.Parameters["documentLocation"] : String.Empty;

                try
                {
                    File.Delete(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), Path.GetFileName(documentLocation)));
                }
                catch (Exception)
                {
                    LogMessage("The document doesn't exist or is read-only.");
                }
            }
            private void LogMessage(string Message)
            {
                if (Context.Parameters.ContainsKey("LogFile"))
                {
                    Context.LogMessage(Message);
                }
            }

            static void Main() { }
            }
    }

Para agregar la personalización al documento, debe tener el identificador de solución de la solución de nivel de documento de VSTO. Este valor se recupera del archivo de proyecto de Visual Studio.

Para recuperar el identificador de la solución

  1. En el menú Compilar, haga clic en Compilar solución para compilar la solución de nivel de documento y agregue la propiedad id. de solución al archivo del proyecto.

  2. En el Explorador de soluciones, haga clic con el botón derecho en el proyecto de nivel de documento ExcelWorkbookProject

  3. Haga clic en DescargarProyecto para acceder al archivo del proyecto desde Visual Studio.

    Screenshot of Solution Explorer Unloading Excel Document Solution

    Figura 13: Descargar solución de documentos de Excel

  4. En el Explorador de soluciones, haga clic con el botón derecho en ExcelWorkbookProject y haga clic en EditarExcelWorkbookProject.vbproj o Editar ExcelWorkbookProject.csproj.

  5. En el editor ExcelWorkbookProject , busque el elemento SolutionID dentro del elemento PropertyGroup .

  6. Copie el valor GUID de este elemento.

    Retrieving the SolutionID

    Figura 14: Recuperación del id. de solución

  7. En el Explorador de soluciones, haga clic con el botón derecho en ExcelWorkbookProyecto y haga clic en Volver a cargar proyecto.

  8. Haga clic en en el cuadro de diálogo que aparece para cerrar el editor ExcelWorkbookProject .

  9. El identificador de solución se usará en la acción personalizada de instalación.

El último paso es configurar la acción personalizada para los pasos Instalar y desinstalar .

Para configurar el proyecto de instalación

  1. En el Explorador de soluciones, haga clic con el botón derecho en ExcelWorkbookSetup, expanda Agregar y haga clic en Salida del proyecto.

  2. En el cuadro de diálogo Agregar grupo de salida del proyecto, en la lista Proyecto , haga clic en AgregarCustomizationCustomAction.

  3. Seleccione Salida principal y haga clic en Aceptar para cerrar el cuadro de diálogo y agregar el ensamblado que contiene la acción personalizada al proyecto de instalación.

    Screenshot of the Document Manifest Custom Action - Add Project Output Group window

    Figura 15: Acción personalizada del manifiesto del documento: agregar grupo de salida del proyecto

  4. En el Explorador de soluciones, haga clic con el botón derecho en ExcelWorkbookSetup.

  5. Expanda Ver y haga clic en Acciones personalizadas.

  6. En el editor Acciones personalizadas (ExcelWorkbookSetup), haga clic con el botón derecho en Acciones personalizadas y haga clic en Agregar acción personalizada.

  7. En el cuadro de diálogo Seleccionar elemento en el proyecto , en la lista Buscar en , haga clic en Carpeta de aplicación. Seleccione Salida principal en AddCustomizationCustomAction(active) y haga clic en Aceptar para agregar la acción personalizada al paso Instalar.

  8. En el nodo Instalar, haga clic con el botón derecho en Salida principal de AddCustomizationCustomAction(Active) y haga clic en Cambiar nombre. Asigne un nombre a la acción personalizada Copiar documento a Mis documentos y adjunte la personalización.

  9. En el nodo Desinstalar, haga clic con el botón derecho en Salida principal de AddCustomizationCustomAction(Active) y haga clic en Cambiar nombre. Asigne un nombre a la acción personalizada Quitar documento de la carpeta Documentos.

    Screenshot of the Document Manifest Custom Actions window

    Figura 16: Acciones personalizadas del manifiesto del documento

  10. En el editor Acciones personalizadas (ExcelWorkbookSetup), haga clic con el botón derecho en Copiar documento en Mis documentos y adjunte la personalización y haga clic en Ventana Propiedades.

  11. En la ventana Propiedades de CustomActionData, escriba la ubicación del archivo DLL de personalización, el manifiesto de implementación y la ubicación del documento de Microsoft Office. También se necesita SolutionID.

  12. Si desea registrar errores de configuración en un archivo, incluya un parámetro LogFile. s

    /assemblyLocation="[INSTALLDIR]ExcelWorkbookProject.dll" /deploymentManifestLocation="[INSTALLDIR]ExcelWorkbookProject.vsto" /documentLocation="[INSTALLDIR]ExcelWorkbookProject.xlsx" /solutionID="Your Solution ID" /LogFile="[TARGETDIR]Setup.log"
    

    Screenshot of the Custom Action to Copy Document to My Documents Properties window

    Figura 17: Acción personalizada para copiar documento en mis documentos

  13. La acción personalizada para desinstalar necesita el nombre del documento, puede proporcionarlo mediante el mismo parámetro documentLocation en CustomActionData .

    /documentLocation="[INSTALLDIR]ExcelWorkbookProject.xlsx"
    
  14. Compile e implemente el proyecto ExcelWorkbookSetup .

  15. Busque en la carpeta Mis documentos y abra el archivo ExcelWorkbookProject.xlsx.

Recursos adicionales

Cómo: Instalar el entorno de ejecución de Visual Studio Tools para Office

Office Primary Interop Assemblies

Entradas del registro para complementos de VSTO

Custom Document Properties Overview

Especificar áreas de formulario en el Registro de Windows

Granting Trust to Documents

Acerca de los autores

Wouter van Vugt es un MVP de Microsoft con tecnologías open XML de Office y un consultor independiente centrado en la creación de aplicación empresarial de Office licaciones (OBAs) con SharePoint, Microsoft Office y tecnologías de .NET relacionadas. Wouter es un colaborador frecuente de sitios de la comunidad de desarrolladores, como MSDN. Ha publicado varias notas del producto y artículos, así como un libro disponible en línea titulado Open XML: Explained e-book. Wouter es el fundador de Code-Counsel, una empresa holandesa centrada en ofrecer contenido técnico de vanguardia a través de una variedad de canales. Puede obtener más información sobre Wouter leyendo su blog.

Ted Pattison es un MVP, autor, entrenador y fundador de Ted Pattison Group. En la caída de 2005, Ted fue contratado por el grupo Evangelism de la Plataforma para desarrolladores de Microsoft para crear el plan de estudios de aprendizaje para desarrolladores de Ascend para Windows SharePoint Services 3.0 y Microsoft Office SharePoint Server 2007. Desde ese momento, Ted se ha centrado completamente en educar a los desarrolladores profesionales en tecnologías de SharePoint 2007. Ted ha terminado de escribir un libro para Microsoft Press titulado Inside Windows SharePoint Services 3.0 que se centra en cómo usar SharePoint como plataforma de desarrollo para crear soluciones empresariales. Ted también escribe una columna centrada en el desarrollador para MSDN Magazine titulada Espacio de Office.