Manifiesto XML de complementos para Office

En este artículo se presenta el manifiesto con formato XML para complementos de Office. Se supone que está familiarizado con el manifiesto de complementos de Office. Además de los propósitos descritos en ese artículo, el manifiesto con formato XML también admite ciertas características de complemento de Outlook que no se admiten en el manifiesto unificado para Microsoft 365. Por ejemplo, un manifiesto XML para complementos de Outlook puede definir la regla o las reglas que especifican el contexto en el que se activa el complemento.

Sugerencia

Para obtener información general sobre el manifiesto unificado para Microsoft 365, consulte Complementos de Office con el manifiesto unificado para Microsoft 365 (versión preliminar).

Versiones de esquema

No todos los clientes de Office admiten las características más recientes y algunos usuarios de Office tendrán una versión anterior de Office. Tener versiones de esquema permite a los desarrolladores crear complementos que sean compatibles con versiones anteriores, con las últimas características que estén disponibles pero manteniendo el funcionamiento de las versiones anteriores.

El <elemento VersionOverrides> del manifiesto es un ejemplo de esto. Todos los elementos definidos dentro de< VersionOverrides> invalidarán el mismo elemento en la otra parte del manifiesto. Esto significa que, siempre que sea posible, Office usará lo que se encuentra en la <sección VersionOverrides> para configurar el complemento. Sin embargo, si la versión de Office no admite una versión determinada de <VersionOverrides>, Office la omitirá y dependerá de la información del resto del manifiesto.

Este enfoque significa que los desarrolladores no tienen que crear varios manifiestos, sino que deben definir todo en un archivo.

Las versiones actuales del esquema son:

Versión Descripción
v1.0 Admite la versión 1.0 de la API de JavaScript de Office. Por ejemplo, en los complementos de Outlook, esto admite el formulario de lectura.
v1.1 Admite la versión 1.1 de la API de JavaScript de Office y <VersionOverrides>. Por ejemplo, en los complementos de Outlook, esto agrega compatibilidad con el formulario de redacción.
<VersionOverrides> 1.0 Admite versiones posteriores de la API de JavaScript para Office. Admite comandos de complemento.
<VersionOverrides> 1.1 Solo es compatible con Outlook. Esta versión de <VersionOverrides> agrega compatibilidad con características más recientes, como paneles de tareas anclables y complementos móviles.

Incluso si el manifiesto del complemento usa el <elemento VersionOverrides> , sigue siendo importante incluir los elementos de manifiesto v1.1 para permitir que el complemento funcione con clientes anteriores que no admiten <VersionOverrides>.

Nota:

Office usa un esquema para validar manifiestos. El esquema requiere que los elementos del manifiesto aparezcan en un orden específico. Si incluye elementos fuera del orden obligatorio, es posible que obtenga errores al transferir localmente el complemento. Vea Cómo encontrar el orden correcto de los elementos de manifiesto en el orden necesario.

Elementos requeridos

En la tabla siguiente se especifican los elementos necesarios para los tres tipos de complementos de Office.

Nota:

También hay un orden obligatorio en que deben aparecer los elementos dentro de su elemento primario. Para obtener más información, consulte Cómo encontrar el orden correcto de los elementos de manifiesto XML.

Elementos requeridos por tipo de complemento de Office

Elemento Contenido Panel de tareas Correo
(Outlook)
OfficeApp Obligatorio Obligatorio Obligatorio
Id Obligatorio Obligatorio Obligatorio
Version Obligatorio Obligatorio Obligatorio
ProviderName Obligatorio Obligatorio Obligatorio
DefaultLocale Obligatorio Obligatorio Obligatorio
DisplayName Obligatorio Obligatorio Obligatorio
Descripción Obligatorio Obligatorio Obligatorio
SupportUrl** Obligatorio Obligatorio Obligatorio
DefaultSettings (ContentApp)
DefaultSettings (TaskPaneApp)
Obligatorio Obligatorio No disponible
SourceLocation (ContentApp)
SourceLocation (TaskPaneApp)
SourceLocation (MailApp)
Obligatorio Obligatorio Obligatorio
DesktopSettings No disponible No disponible Necesario
Permissions (ContentApp)
Permissions (TaskPaneApp)
Permissions (MailApp)
Obligatorio Obligatorio Obligatorio
Rule (RuleCollection)
Rule (MailApp)
No disponible No disponible Necesario
Requisitos (MailApp)* No aplicable No disponible Obligatorio
Set*
Sets (Requirements)*
Sets (MailAppRequirements)*
Obligatorio Obligatorio Obligatorio
Form*
FormSettings*
No disponible No disponible Necesario
Hosts* Obligatorio Obligatorio Opcional

*Se agregó en el esquema de manifiesto del complemento de Office versión 1.1.

** SupportUrl solo es necesario para los complementos que se distribuyen a través de AppSource.

Elemento raíz

El elemento raíz del manifiesto del complemento de Office es <OfficeApp>. Este elemento también declara el espacio de nombres predeterminado, la versión del esquema y el tipo de complemento. Coloque los demás elementos en el manifiesto dentro de las etiquetas de apertura y cierre. A continuación se muestra un ejemplo del elemento raíz.

<OfficeApp
  xmlns="http://schemas.microsoft.com/office/appforoffice/1.1"
  xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
  xmlns:bt="http://schemas.microsoft.com/office/officeappbasictypes/1.0"
  xmlns:mailappor="http://schemas.microsoft.com/office/mailappversionoverrides/1.0"
  xsi:type="MailApp">

  <!-- The rest of the manifest. -->

</OfficeApp>

Versión

Esta es la versión del complemento específico. Si un desarrollador actualiza algo en el manifiesto, también se debe incrementar la versión. De este modo, cuando se instale el nuevo manifiesto, se sobrescribirá el anterior y el usuario podrá disfrutar de las funciones nuevas. Si este complemento se ha enviado a la tienda, el nuevo manifiesto tendrá que volver a enviarse y validarse. Después, los usuarios de este complemento obtendrán el nuevo manifiesto actualizado automáticamente en unas horas, después de su aprobación.

Si los permisos solicitados del complemento cambian, se solicitará a los usuarios que actualicen y vuelvan a otorgar su consentimiento para el complemento. Si el administrador ha instalado este complemento para toda la organización, el administrador tendrá que volver a otorgar su consentimiento primero. Los usuarios no podrán usar el complemento hasta que se conceda el consentimiento.

Hosts

Los complementos de Office especifican el <elemento Hosts> como el siguiente:

<OfficeApp>
...
  <Hosts>
    <Host Name="Mailbox" />
  </Hosts>
...
</OfficeApp>

Esto es independiente del <elemento Hosts> dentro del <elemento VersionOverrides>, que se describe en Create comandos de complemento con el manifiesto XML.

Especificar dominios seguros con el elemento AppDomains

Hay un elemento AppDomains del archivo de manifiesto XML que se usa para indicar a Office a qué dominios debe poder navegar el complemento. Como se indica en Especificar dominios que desea abrir en la ventana del complemento, al ejecutarse en Office en la Web, el panel de tareas se puede navegar a cualquier dirección URL. Sin embargo, en las plataformas de escritorio, si el complemento intenta ir a una dirección URL en un dominio distinto del dominio que hospeda la página de inicio (como se especifica en el elemento SourceLocation ), esa dirección URL se abre en una nueva ventana del explorador fuera del panel de complementos de la aplicación de Office.

Para invalidar este comportamiento (escritorio de Office), agregue cada dominio que quiera abrir en la ventana del complemento en la lista de dominios especificados en el <elemento AppDomains> . Si el complemento intenta ir a una dirección URL en un dominio que está en la lista, se abrirá en el panel de tareas de Office de escritorio y Office en la web. Si intenta ir a una dirección URL que no está en la lista, en office de escritorio esa dirección URL se abre en una nueva ventana del explorador (fuera del panel del complemento).

La siguiente tabla describe el comportamiento del explorador cuando su complemento intenta navegar a una URL fuera del dominio predeterminado del complemento.

Cliente de Office ¿Dominio definido en AppDomains? Comportamiento del explorador
Todos los clientes El vínculo se abre en el panel de tareas del complemento.
Office 2016 en Windows (con licencia por volumen perpetua) No El vínculo se abre en Internet Explorer 11.
Otros clientes No El vínculo se abre en el explorador predeterminado del usuario.

En el siguiente ejemplo de manifiesto XML se hospeda su página de complemento principal en el https://www.contoso.com dominio, tal como se especifica en el <elemento SourceLocation> . También especifica el https://www.northwindtraders.com dominio en un elemento AppDomain dentro de la <lista de elementos AppDomains> . Si el complemento va a una página en el dominio www.northwindtraders.com, esa página se abre en el panel de complementos, incluso en Office de escritorio.

<?xml version="1.0" encoding="UTF-8"?>
<OfficeApp xmlns="http://schemas.microsoft.com/office/appforoffice/1.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="TaskPaneApp">
  <!--IMPORTANT! Id must be unique for each add-in. If you copy this manifest ensure that you change this id to your own GUID. -->
  <Id>c6890c26-5bbb-40ed-a321-37f07909a2f0</Id>
  <Version>1.0</Version>
  <ProviderName>Contoso, Ltd</ProviderName>
  <DefaultLocale>en-US</DefaultLocale>
  <DisplayName DefaultValue="Northwind Traders Excel" />
  <Description DefaultValue="Search Northwind Traders data from Excel"/>
  <SupportUrl DefaultValue="[Insert the URL of a page that provides support information for the app]" />
  <AppDomains>
    <AppDomain>https://www.northwindtraders.com</AppDomain>
  </AppDomains>
  <DefaultSettings>
    <SourceLocation DefaultValue="https://www.contoso.com/search_app/Default.aspx" />
  </DefaultSettings>
  <Permissions>ReadWriteDocument</Permissions>
</OfficeApp>

Invalidaciones de versión en el manifiesto

El elemento VersionOverrides opcional contiene marcado secundario que permite características adicionales del complemento. Algunas de estas son:

  • Personalizar la cinta de opciones y los menús de Office.
  • Personalizar el funcionamiento de Office con los tiempos de ejecución incrustados en los que se ejecutan los complementos.
  • Configuración de cómo interactúa el complemento con Azure Active Directory y Microsoft Graph para el inicio de sesión único.

Algunos elementos descendientes de VersionOverrides tienen valores que invalidan los valores del elemento primario OfficeApp. Por ejemplo, el elemento Hosts en VersionOverrides reemplaza al elemento Hosts en OfficeApp.

El elemento VersionOverrides tiene su propio esquema (en realidad, cuatro), según el tipo de complemento y las características que use. Los esquemas son:

Cuando se usa un elemento VersionOverrides, el elemento OfficeApp debe tener un atributo xmlns que identifique el esquema adecuado. Los valores posibles del atributo son los siguientes:

  • http://schemas.microsoft.com/office/taskpaneappversionoverrides
  • http://schemas.microsoft.com/office/contentappversionoverrides
  • http://schemas.microsoft.com/office/mailappversionoverrides

El elemento VersionOverrides debe tener también un atributo xmlns que especifique el esquema. Los valores posibles son los tres anteriores y los siguientes:

  • http://schemas.microsoft.com/office/mailappversionoverrides/1.1

El elemento VersionOverrides también debe tener un atributo xsi:type que especifique la versión del esquema. Los valores posibles son los siguientes:

  • VersionOverridesV1_0
  • VersionOverridesV1_1

A continuación se muestran ejemplos de VersionOverrides usados, respectivamente, en un complemento de panel de tareas y un complemento de correo. Tenga en cuenta que cuando se usa un correo VersionOverrides con la versión 1.1, debe ser el último elemento secundario de un VersionOverrides primario de tipo 1.0. Los valores de los elementos secundarios del VersionOverridesinterno reemplazan los valores de los elementos con el mismo nombre en el VersionOverrides primario y el elemento OfficeApp primario principal superior.

<VersionOverrides xmlns="http://schemas.microsoft.com/office/taskpaneappversionoverrides" xsi:type="VersionOverridesV1_0">
    <!-- Child elements are omitted. -->
</VersionOverrides>
<VersionOverrides xmlns="http://schemas.microsoft.com/office/mailappversionoverrides" xsi:type="VersionOverridesV1_0">
  <!-- Other child elements are omitted. -->
  <VersionOverrides xmlns="http://schemas.microsoft.com/office/mailappversionoverrides/1.1" xsi:type="VersionOverridesV1_1">
    <!-- Child elements are omitted. -->
  </VersionOverrides>
</VersionOverrides>

Para obtener un ejemplo de un manifiesto que incluye un elemento VersionOverrides, consulte Ejemplos y esquemas de archivo XML de manifiesto XML v1.1.

Requisitos

El <elemento Requirements> especifica el conjunto de API disponibles para el complemento. Para obtener información detallada sobre los conjuntos de requisitos, vea Disponibilidad de conjuntos de requisitos de Office. Por ejemplo, en un complemento de Outlook, el conjunto de requisitos debe ser Mailbox y un valor de 1,1 o superior.

El <elemento Requirements> también puede aparecer en el <elemento VersionOverrides> , lo que permite al complemento especificar un requisito diferente cuando se carga en clientes que admiten <VersionOverrides>.

En el ejemplo siguiente se usa el atributo DefaultMinVersion del <elemento Sets> para requerir office.js versión 1.1 o posterior, y el atributo MinVersion del <elemento Set> para requerir la versión 1.1 del conjunto de requisitos mailbox.

<OfficeApp>
...
  <Requirements>
    <Sets DefaultMinVersion="1.1">
      <Set Name="MailBox" MinVersion="1.1" />
    </Sets>
  </Requirements>
...
</OfficeApp>

Localización

Algunos aspectos del complemento deben estar localizados para distintas configuraciones regionales, como el nombre, la descripción y la dirección URL que se carga. Estos elementos se pueden localizar fácilmente especificando el valor predeterminado y, a continuación, invalidaciones de configuración regional en el <elemento Resources> dentro del <elemento VersionOverrides> . A continuación, se muestra cómo reemplazar una imagen, una dirección URL y una cadena:

<Resources>
  <bt:Images>
    <bt:Image id="icon1_16x16" DefaultValue="https://contoso.com/images/app_icon_small.png" >
      <bt:Override Locale="ar-sa" Value="https://contoso.com/images/app_icon_small_arsa.png" />
      <!-- Add information for other locales. -->
    </bt:Image>
  </bt:Images>

  <bt:Urls>
    <bt:Url id="residDesktopFuncUrl" DefaultValue="https://contoso.com/urls/page_appcmdcode.html" >
      <bt:Override Locale="ar-sa" Value="https://contoso.com/urls/page_appcmdcode.html?lcid=ar-sa" />
      <!-- Add information for other locales. -->
    </bt:Url>
  </bt:Urls>

  <bt:ShortStrings> 
    <bt:String id="residViewTemplates" DefaultValue="Launch My Add-in">
      <bt:Override Locale="ar-sa" Value="<add localized value here>" />
      <!-- Add information for other locales. -->
    </bt:String>
  </bt:ShortStrings>
</Resources>

La referencia de esquema contiene información completa sobre qué elementos se pueden localizar.

Ejemplos y esquemas de archivos XML de manifiesto versión 1.1

En las secciones siguientes se muestran ejemplos de archivos XML de manifiesto v1.1 para complementos de contenido, panel de tareas y correo (Outlook).

Esquemas de manifiesto de complementos

<?xml version="1.0" encoding="utf-8"?>
<OfficeApp xmlns="http://schemas.microsoft.com/office/appforoffice/1.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bt="http://schemas.microsoft.com/office/officeappbasictypes/1.0" xmlns:ov="http://schemas.microsoft.com/office/taskpaneappversionoverrides" xsi:type="TaskPaneApp">

  <!-- See https://github.com/OfficeDev/Office-Add-in-Commands-Samples for documentation. -->

  <!-- BeginBasicSettings: Add-in metadata, used for all versions of Office unless override provided. -->

  <!-- IMPORTANT! Id must be unique for your add-in. If you copy this manifest, ensure that you change this ID to your own GUID. -->
  <Id>e504fb41-a92a-4526-b101-542f357b7acb</Id>
  <Version>1.0.0.0</Version>
  <ProviderName>Contoso</ProviderName>
  <DefaultLocale>en-US</DefaultLocale>
  <!-- The display name of your add-in. Used on the store and various placed of the Office UI such as the add-in's dialog. -->
  <DisplayName DefaultValue="Add-in Commands Sample" />
  <Description DefaultValue="Sample that illustrates add-in commands basic control types and actions." />
  <!-- Icon for your add-in. Used on installation screens and the add-in's dialog. -->
  <IconUrl DefaultValue="https://contoso.com/assets/icon-32.png" />
  <HighResolutionIconUrl DefaultValue="https://contoso.com/assets/hi-res-icon.png" />
  <SupportUrl DefaultValue="[Insert the URL of a page that provides support information for the app]" />
  <!-- Domains that are allowed when navigating. For example, if you use ShowTaskpane and then have an href link, navigation is only allowed if the domain is on this list. -->
  <AppDomains>
    <AppDomain>AppDomain1</AppDomain>
    <AppDomain>AppDomain2</AppDomain>
  </AppDomains>
  <!-- End Basic Settings. -->

  <!-- BeginTaskPaneMode integration. Any client that doesn't understand commands will use this section.
    This section will also be used if there are no VersionOverrides. -->
  <Hosts>
    <Host Name="Document"/>
  </Hosts>
  <DefaultSettings>
    <SourceLocation DefaultValue="https://commandsimple.azurewebsites.net/Taskpane.html" />
  </DefaultSettings>
  <!-- EndTaskPaneMode integration. -->

  <Permissions>ReadWriteDocument</Permissions>

  <!-- BeginAddinCommandsMode integration. -->
  <VersionOverrides xmlns="http://schemas.microsoft.com/office/taskpaneappversionoverrides" xsi:type="VersionOverridesV1_0">
    <Hosts>
      <!-- Each host can have a different set of commands. Cool huh!? -->
      <!-- Workbook=Excel, Document=Word, Presentation=PowerPoint -->
      <!-- Make sure the hosts you override match the hosts declared in the top section of the manifest. -->
      <Host xsi:type="Document">
        <!-- Form factor. DesktopFormFactor is supported. Other form factors are available depending on the host and feature. -->
        <DesktopFormFactor>
          <!-- This code enables a customizable message to be displayed when the add-in is loaded successfully upon individual install. -->
          <GetStarted>
            <!-- Title of the Getting Started callout. The resid attribute points to a ShortString resource. -->
            <Title resid="Contoso.GetStarted.Title"/>
            <!-- Description of the Getting Started callout. resid points to a LongString resource. -->
            <Description resid="Contoso.GetStarted.Description"/>  
            <!-- Points to a URL resource which details how the add-in should be used. -->
            <LearnMoreUrl resid="Contoso.GetStarted.LearnMoreUrl"/>
          </GetStarted>
          <!-- Function file is an HTML page that includes, or loads, the JavaScript where functions for ExecuteAction will be called. Think of the FunctionFile as the "code behind" ExecuteFunction. -->
          <FunctionFile resid="Contoso.FunctionFile.Url" />

          <!-- PrimaryCommandSurface==Main Office app ribbon. -->
          <ExtensionPoint xsi:type="PrimaryCommandSurface">
            <!-- Use OfficeTab to extend an existing Tab. Use CustomTab to create a new tab. -->
            <!-- Documentation includes all the IDs currently tested to work. -->
            <CustomTab id="Contoso.Tab1">
              <!--Group ID-->
              <Group id="Contoso.Tab1.Group1">
                <!--Label for your group. resid must point to a ShortString resource. -->
                <Label resid="Contoso.Tab1.GroupLabel" />
                <Icon>
                  <!-- Each size needs its own icon resource or it will look distorted when resized. -->
                  <!-- Icons. Required sizes: 16, 32, 80; optional: 20, 24, 40, 48, 64. You should provide as many sizes as possible for a great user experience. -->
                  <!-- Use PNG icons and remember that all URLs on the resources section must use HTTPS. -->
                  <bt:Image size="16" resid="Contoso.TaskpaneButton.Icon16" />
                  <bt:Image size="32" resid="Contoso.TaskpaneButton.Icon32" />
                  <bt:Image size="80" resid="Contoso.TaskpaneButton.Icon80" />
                </Icon>

                <!-- Control. It can be of type "Button" or "Menu". -->
                <Control xsi:type="Button" id="Contoso.FunctionButton">
                  <!-- Label for your button. resid must point to a ShortString resource. -->
                  <Label resid="Contoso.FunctionButton.Label" />
                  <Supertip>
                    <!-- ToolTip title. resid must point to a ShortString resource. -->
                    <Title resid="Contoso.FunctionButton.Label" />
                    <!-- ToolTip description. resid must point to a LongString resource. -->
                    <Description resid="Contoso.FunctionButton.Tooltip" />
                  </Supertip>
                  <Icon>
                    <bt:Image size="16" resid="Contoso.FunctionButton.Icon16" />
                    <bt:Image size="32" resid="Contoso.FunctionButton.Icon32" />
                    <bt:Image size="80" resid="Contoso.FunctionButton.Icon80" />
                  </Icon>
                  <!-- This is what happens when the command is triggered (e.g., click on the ribbon button). -->
                  <!-- Supported actions are ExecuteFunction or ShowTaskpane. -->
                  <!-- Look at the FunctionFile.html page for reference on how to implement the function. -->
                  <Action xsi:type="ExecuteFunction">
                    <!-- Name of the function to call. This function needs to exist in the global DOM namespace of the function file. -->
                    <FunctionName>writeText</FunctionName>
                  </Action>
                </Control>

                <Control xsi:type="Button" id="Contoso.TaskpaneButton">
                  <Label resid="Contoso.TaskpaneButton.Label" />
                  <Supertip>
                    <Title resid="Contoso.TaskpaneButton.Label" />
                    <Description resid="Contoso.TaskpaneButton.Tooltip" />
                  </Supertip>
                  <Icon>
                    <bt:Image size="16" resid="Contoso.TaskpaneButton.Icon16" />
                    <bt:Image size="32" resid="Contoso.TaskpaneButton.Icon32" />
                    <bt:Image size="80" resid="Contoso.TaskpaneButton.Icon80" />
                  </Icon>
                  <Action xsi:type="ShowTaskpane">
                    <TaskpaneId>Button2Id1</TaskpaneId>
                    <!-- Provide a URL resource ID for the location that will be displayed on the task pane. -->
                    <SourceLocation resid="Contoso.Taskpane1.Url" />
                  </Action>
                </Control>
                <!-- Menu example. -->
                <Control xsi:type="Menu" id="Contoso.Menu">
                  <Label resid="Contoso.Dropdown.Label" />
                  <Supertip>
                    <Title resid="Contoso.Dropdown.Label" />
                    <Description resid="Contoso.Dropdown.Tooltip" />
                  </Supertip>
                  <Icon>
                    <bt:Image size="16" resid="Contoso.TaskpaneButton.Icon16" />
                    <bt:Image size="32" resid="Contoso.TaskpaneButton.Icon32" />
                    <bt:Image size="80" resid="Contoso.TaskpaneButton.Icon80" />
                  </Icon>
                  <Items>
                    <Item id="Contoso.Menu.Item1">
                      <Label resid="Contoso.Item1.Label"/>
                      <Supertip>
                        <Title resid="Contoso.Item1.Label" />
                        <Description resid="Contoso.Item1.Tooltip" />
                      </Supertip>
                      <Icon>
                        <bt:Image size="16" resid="Contoso.TaskpaneButton.Icon16" />
                        <bt:Image size="32" resid="Contoso.TaskpaneButton.Icon32" />
                        <bt:Image size="80" resid="Contoso.TaskpaneButton.Icon80" />
                      </Icon>
                      <Action xsi:type="ShowTaskpane">
                        <TaskpaneId>MyTaskPaneID1</TaskpaneId>
                        <SourceLocation resid="Contoso.Taskpane1.Url" />
                      </Action>
                    </Item>

                    <Item id="Contoso.Menu.Item2">
                      <Label resid="Contoso.Item2.Label"/>
                      <Supertip>
                        <Title resid="Contoso.Item2.Label" />
                        <Description resid="Contoso.Item2.Tooltip" />
                      </Supertip>
                      <Icon>
                        <bt:Image size="16" resid="Contoso.TaskpaneButton.Icon16" />
                        <bt:Image size="32" resid="Contoso.TaskpaneButton.Icon32" />
                        <bt:Image size="80" resid="Contoso.TaskpaneButton.Icon80" />
                      </Icon>
                      <Action xsi:type="ShowTaskpane">
                        <TaskpaneId>MyTaskPaneID2</TaskpaneId>
                        <SourceLocation resid="Contoso.Taskpane2.Url" />
                      </Action>
                    </Item>

                  </Items>
                </Control>

              </Group>

              <!-- Label of your tab. -->
              <!-- If validating with XSD, it needs to be at the end. -->
              <Label resid="Contoso.Tab1.TabLabel" />
            </CustomTab>
          </ExtensionPoint>
        </DesktopFormFactor>
      </Host>
    </Hosts>

    <!-- You can use resources across hosts and form factors. -->
    <Resources>
      <bt:Images>
        <bt:Image id="Contoso.TaskpaneButton.Icon16" DefaultValue="https://myCDN/Images/Button16x16.png" />
        <bt:Image id="Contoso.TaskpaneButton.Icon32" DefaultValue="https://myCDN/Images/Button32x32.png" />
        <bt:Image id="Contoso.TaskpaneButton.Icon80" DefaultValue="https://myCDN/Images/Button80x80.png" />
        <bt:Image id="Contoso.FunctionButton.Icon" DefaultValue="https://myCDN/Images/ButtonFunction.png" />
      </bt:Images>
      <bt:Urls>
        <bt:Url id="Contoso.FunctionFile.Url" DefaultValue="https://commandsimple.azurewebsites.net/FunctionFile.html" />
        <bt:Url id="Contoso.Taskpane1.Url" DefaultValue="https://commandsimple.azurewebsites.net/Taskpane.html" />
        <bt:Url id="Contoso.Taskpane2.Url" DefaultValue="https://commandsimple.azurewebsites.net/Taskpane2.html" />
      </bt:Urls>
      <!-- ShortStrings max characters=125. -->
      <bt:ShortStrings>
        <bt:String id="Contoso.FunctionButton.Label" DefaultValue="Execute Function" />
        <bt:String id="Contoso.TaskpaneButton.Label" DefaultValue="Show Task Pane" />
        <bt:String id="Contoso.Dropdown.Label" DefaultValue="Dropdown" />
        <bt:String id="Contoso.Item1.Label" DefaultValue="Show Task Pane 1" />
        <bt:String id="Contoso.Item2.Label" DefaultValue="Show Task Pane 2" />
        <bt:String id="Contoso.Tab1.GroupLabel" DefaultValue="Test Group" />
         <bt:String id="Contoso.Tab1.TabLabel" DefaultValue="Test Tab" />
      </bt:ShortStrings>
      <!-- LongStrings max characters=250. -->
      <bt:LongStrings>
        <bt:String id="Contoso.FunctionButton.Tooltip" DefaultValue="Click to execute function." />
        <bt:String id="Contoso.TaskpaneButton.Tooltip" DefaultValue="Click to show a task pane." />
        <bt:String id="Contoso.Dropdown.Tooltip" DefaultValue="Click to show options on this menu." />
        <bt:String id="Contoso.Item1.Tooltip" DefaultValue="Click to show Task Pane 1." />
        <bt:String id="Contoso.Item2.Tooltip" DefaultValue="Click to show Task Pane 2." />
      </bt:LongStrings>
    </Resources>
  </VersionOverrides>
  <!-- EndAddinCommandsMode integration. -->
</OfficeApp>

Validar un manifiesto del complemento de Office

Para más información sobre cómo validar un manifiesto con la Definición del esquema XML (XSD), consulte Validar un manifiesto del complemento de Office.

Consulte también