Manifesto XML dos Suplementos do Office

Este artigo apresenta o manifesto formatado por XML para suplementos do Office. Ele pressupõe que você esteja familiarizado com o manifesto suplementos do Office.

Dica

Para obter uma visão geral do manifesto unificado do Microsoft 365, confira Suplementos do Office com o manifesto unificado do Microsoft 365.

Versões de esquema

Nem todos os clientes do Office dão suporte aos recursos mais recentes, e alguns usuários do Office terão uma versão mais antiga do Office. Ter versões do esquema permite que os desenvolvedores compilem suplementos compatíveis com versões anteriores, usando os recursos mais recentes quando estiverem disponíveis, mas ainda funcionando em versões mais antigas.

O <elemento VersionOverrides> no manifesto é um exemplo disso. Todos os elementos definidos dentro< de VersionOverrides> substituirão o mesmo elemento na outra parte do manifesto. Isso significa que, sempre que possível, o Office usará o que está na <seção VersionOverrides> para configurar o suplemento. No entanto, se a versão do Office não dá suporte a uma determinada versão do <VersionOverrides>, o Office a ignorará e dependerá das informações no restante do manifesto.

Com essa abordagem, os desenvolvedores não precisam criar vários manifestos individuais e podem, em vez disso, manter tudo definido em um único arquivo.

As versões atuais do esquema são:

Versão Descrição
v1.0 Dá suporte à versão 1.0 da API JavaScript do Office. Por exemplo, nos suplementos do Outlook, isso dá suporte ao formulário de leitura.
v1.1 Dá suporte à versão 1.1 da API JavaScript do Office e <versionOverrides>. Por exemplo, nos suplementos do Outlook, isso adiciona suporte para o formulário de composição.
<VersionOverrides> 1.0 Dá suporte a versões posteriores da API JavaScript do Office. Oferece suporte aos comandos de suplemento.
<VersionOverrides> 1.1 Com suporte apenas pelo Outlook. Esta versão do <VersionOverrides> adiciona suporte para recursos mais recentes, como painéis de tarefa fixados e suplementos móveis.

Mesmo que o manifesto de suplemento use o <elemento VersionOverrides, ainda é importante incluir os elementos> de manifesto v1.1 para permitir que seu suplemento funcione com clientes mais antigos que não dão suporte <a VersionOverrides>.

Observação

O Office usa um esquema para validar manifestos. O esquema requer que os elementos no manifesto apareçam em uma ordem específica. Se você incluir os elementos fora da ordem exigida, você poderá obter erros quando realizar o sideload de seu suplemento. Consulte Como encontrar a ordem adequada dos elementos de elementos de manifesto na ordem necessária.

Elementos exigidos

A tabela a seguir especifica os elementos exigidos para os três tipos de Suplementos do Office.

Observação

Também há uma ordem obrigatória na qual os elementos devem aparecer dentro de seu elemento-pai. Para obter mais informações , confira Como encontrar a ordem adequada dos elementos de manifesto XML.

Elementos obrigatórios de acordo com o tipo de Suplemento do Office

Elemento Conteúdo Painel de tarefas Email
(Outlook)
OfficeApp Obrigatório Obrigatório Obrigatório
Id Obrigatório Obrigatório Obrigatório
Versão Obrigatório Obrigatório Obrigatório
ProviderName Obrigatório Obrigatório Obrigatório
DefaultLocale Obrigatório Obrigatório Obrigatório
DisplayName Obrigatório Obrigatório Obrigatório
Description Obrigatório Obrigatório Obrigatório
SupportUrl** Obrigatório Obrigatório Obrigatório
DefaultSettings (ContentApp)
DefaultSettings (TaskPaneApp)
Obrigatório Obrigatório Não disponível
SourceLocation (ContentApp)
SourceLocation (TaskPaneApp)
SourceLocation (MailApp)
Obrigatório Obrigatório Obrigatório
DesktopSettings Não disponível Não disponível Obrigatório
Permissões (ContentApp)
Permissões (TaskPaneApp)
Permissões (MailApp)
Obrigatório Obrigatório Obrigatório
Regra (RuleCollection)
Regra (MailApp)
Não disponível Não disponível Obrigatório
Requisitos (MailApp)* Não aplicável Não disponível Obrigatório
Conjuntos*
Conjuntos (Requisitos)*
Conjuntos (MailAppRequirements)*
Obrigatório Obrigatório Obrigatório
Formulário*
FormSettings*
Não disponível Não disponível Obrigatório
Hosts* Obrigatório Obrigatório Opcional

*Adicionado no Esquema de Manifesto de Suplemento do Office versão 1.1.

** SupportUrl só é necessário para suplementos distribuídos por meio do AppSource.

Elemento root

O elemento raiz do manifesto de suplemento do Office é <OfficeApp>. Esse elemento também declara o namespace padrão, a versão do esquema e o tipo de suplemento. Coloque todos os outros elementos no manifesto dentro de suas marcas de abertura e fechamento. A seguir está um exemplo do elemento root.

<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>

Version

Esta é a versão do suplemento específico. Se um desenvolvedor atualiza algo no manifesto, a versão deve ser incrementada também. Dessa forma, quando o novo manifesto é instalado, ele substitui o existente, e o usuário recebe a nova funcionalidade. Se esse suplemento foi enviado para o repositório, o novo manifesto precisa ser re-enviado e revalidado. Em seguida, usuários desse suplemento obterão o novo manifesto atualizado automaticamente em algumas horas, depois da aprovação.

Se as permissões solicitadas do suplemento mudarem, os usuários serão solicitados a atualizar e novamente concordar com o suplemento. Se o administrador tiver instalado esse suplemento para toda a organização, o administrador precisará primeiro concordar novamente. Os usuários não poderão usar o suplemento até que o consentimento seja concedido.

Hosts

Os suplementos do Office especificam o <elemento Hosts> como o seguinte:

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

Isso é separado do <elemento Hosts> dentro do <elemento VersionOverrides>, que é discutido em Create comandos de suplemento com o manifesto XML.

Especificar domínios seguros com o elemento AppDomains

Há um elemento AppDomains do arquivo de manifesto XML que é usado para informar ao Office quais domínios seu suplemento deve ser permitido navegar. Conforme observado em Especificar domínios que você deseja abrir na janela de suplemento, ao executar em Office na Web, o painel de tarefas pode ser navegado para qualquer URL. No entanto, em plataformas de área de trabalho, se o suplemento tentar ir para uma URL em um domínio diferente do domínio que hospeda a página inicial (conforme especificado no elemento SourceLocation ), essa URL será aberta em uma nova janela do navegador fora do painel de suplemento do aplicativo do Office.

Para substituir esse comportamento (office da área de trabalho), adicione cada domínio que você deseja abrir na janela de suplemento na lista de domínios especificados no <elemento AppDomains> . Se o suplemento tentar ir para uma URL em um domínio que está na lista, ela então abre no painel de tarefas do Office para desktop e no Office Online. Se ele tentar ir para uma URL que não está na lista, então no Office da área de trabalho essa URL será aberta em uma nova janela do navegador (fora do painel de suplementos).

A tabela a seguir descreve o comportamento do navegador quando o seu suplemento tenta navegar para uma URL fora do domínio padrão do suplemento.

Cliente Office Domínio definido em AppDomains? Comportamento do navegador
Todos os clientes Sim O link é aberto no painel de tarefas do suplemento.
Office 2016 no Windows (perpétuo licenciado por volume) Não O link é aberto no Internet Explorer 11.
Outros clientes Não O link é aberto no navegador padrão do usuário.

O exemplo de manifesto XML a seguir hospeda sua página de suplemento main no https://www.contoso.com domínio, conforme especificado no <elemento SourceLocation>. Ele também especifica o https://www.northwindtraders.com domínio em um elemento AppDomain na <lista de elementos AppDomains> . Se o suplemento acessar uma página no www.northwindtraders.comdomínio, essa página abre no painel do suplemento, mesmo na área de trabalho do Office.

<?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>

Substituições de versão no manifesto

O elemento VersionOverrides opcional contém marcação filho que permite recursos adicionais de suplemento. Alguns deles são:

  • Personalizando a faixa de opções do Office e os menus.
  • Personalizando como o Office funciona com os runtimes inseridos nos quais os suplementos são executados.
  • Configurando como o suplemento interage com o Azure Active Directory e o Microsoft Graph para o Logon único.

Alguns elementos descendentes de VersionOverrides têm valores que substituem os valores do elemento pai OfficeApp. Por exemplo, o elemento Hosts em VersionOverrides substitui o elemento Hosts em OfficeApp.

O elemento VersionOverrides tem seu próprio esquema, na verdade quatro deles, dependendo do tipo de ação e dos recursos que utiliza. Os esquemas são:

Quando um elemento VersionOverrides é utilizado, então o elemento OfficeApp deve ter um atributo xmlns que identifica o esquema apropriado. Os possíveis valores do atributo são os seguintes:

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

O elemento VersionOverrides em si também deve ter um atributo xmlns especificando o esquema. Os possíveis valores são os três acima e os seguintes:

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

O elemento VersionOverrides também deve ter um atributo xsi:type que especifica a versão do esquema. Os valores possíveis são os seguintes:

  • VersionOverridesV1_0
  • VersionOverridesV1_1

A seguir estão alguns exemplos de VersionOverridesutilizados, respectivamente, em um suplemento do painel de tarefas e em um suplemento de email. Observe que quando um email VersionOverrides com a versão 1.1 é usado, ele deve ser o último filho de um pai VersionOverrides do tipo 1.0. Os valores dos elementos filho no interior de VersionOverrides substituem os valores dos elementos do mesmo nome no elemento pai VersionOverrides e do elemento avô OfficeApp.

<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 obter um exemplo de um manifesto que inclui um elemento VersionOverrides, consulte Exemplos e esquemas do arquivo XML de manifesto v1.1.

Requisitos

O <elemento Requisitos> especifica o conjunto de APIs disponíveis para o suplemento. Para obter informações detalhadas sobre conjuntos de requisitos, consulte Disponibilidade de conjuntos de requisitos do Office. Por exemplo, em um suplemento do Outlook, o conjunto de requisitos deve ser Caixa de Correio e um valor 1.1 ou superior.

O <elemento Requisitos> também pode aparecer no <elemento VersionOverrides, permitindo que o suplemento especifique> um requisito diferente quando carregado em clientes que dão suporte <a VersionOverrides>.

O exemplo a seguir usa o atributo DefaultMinVersion do <elemento Sets> para exigir office.js versão 1.1 ou superior e o atributo MinVersion do <elemento Set> para exigir o conjunto de requisitos da caixa de correio versão 1.1.

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

Localização

Alguns aspectos do suplemento precisam ser localizados para localidades diferentes, como nome, descrição e a URL que é carregada. Esses elementos podem ser facilmente localizados especificando o valor padrão e, em seguida, localizar substituições no <elemento Resources> dentro do <elemento VersionOverrides> . O exemplo a seguir mostra como substituir uma imagem, uma URL e uma cadeia de caracteres.

<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>

A referência de esquema contém informações completas sobre quais elementos podem ser localizados.

Exemplos e esquemas do arquivo XML de manifesto v1.1

As seções a seguir mostram exemplos de arquivos XML do manifesto v1.1 para conteúdo, painel de tarefas e suplementos de email (Outlook).

Esquemas de manifesto de suplemento

<?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 o manifesto de suplemento do Office

Para saber mais sobre como validar um manifesto em relação à Definição do Esquema XML (XSD), confira Validar o manifesto de suplemento do Office.

Confira também