Partilhar via


Suplementos do Office com o manifesto apenas do suplemento

Este artigo apresenta o manifesto apenas de suplementos com formato XML para Suplementos do Office. Pressupõe que está familiarizado com o manifesto de Suplementos do Office.

Dica

Para obter uma descrição geral do manifesto unificado do Microsoft 365, consulte Suplementos do Office com o manifesto unificado do Microsoft 365.

Versões de esquema

Nem todos os clientes do Office suportam as funcionalidades mais recentes e alguns utilizadores 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 disto. Todos os elementos definidos dentro< de VersionOverrides> substituirão o mesmo elemento na outra parte do manifesto. Isto significa que, sempre que possível, o <Office utilizará o que está na secção VersionOverrides> para configurar o suplemento. No entanto, se a versão do Office não suportar uma determinada versão de <VersionOverrides>, o Office irá ignorá-la e depender das informações no resto 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 Suporta a versão 1.0 da API JavaScript do Office. Por exemplo, nos suplementos do Outlook, isto suporta o formulário de leitura.
v1.1 Suporta a versão 1.1 da API JavaScript do Office e <VersionOverrides>. Por exemplo, nos suplementos do Outlook, isto 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 Suportado apenas pelo Outlook. Esta versão do <VersionOverrides adiciona suporte para funcionalidades> mais recentes, como painéis de tarefas afixáveis e suplementos móveis.

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

Observação

O Office utiliza 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. Veja 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, veja How to find the proper order of add-in only manifest elements (Como encontrar a ordem adequada de elementos de manifesto apenas de suplementos).

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 na versão 1.1 do Esquema de Manifesto do Suplemento do Office.

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

Elemento root

O elemento raiz do manifesto do Suplemento do Office é <o 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 utilizadores não poderão utilizar o suplemento até que o consentimento seja concedido.

Hosts

Os suplementos do Office especificam o <elemento Anfitriões> da seguinte forma:

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

Isto é separado do <elemento Anfitriões> dentro do <elemento VersionOverrides> , que é abordado em Criar comandos de suplementos com o manifesto apenas de suplemento.

Especificar domínios seguros com o elemento AppDomains

Existe um elemento AppDomains do ficheiro de manifesto apenas de suplemento que é utilizado para indicar ao Office quais os domínios para os quais o seu suplemento deve ter permissão para navegar. Conforme indicado em Especificar domínios que pretende abrir na janela do suplemento, ao executar no Office na Web, o painel de tarefas pode ser navegado para qualquer URL. No entanto, nas plataformas de ambiente de trabalho, se o seu suplemento tentar aceder a um URL num domínio diferente do domínio que aloja a página inicial (conforme especificado no elemento SourceLocation ), esse URL é aberto numa nova janela do browser fora do painel de suplementos da aplicação do Office.

Para substituir este comportamento (de ambiente de trabalho do Office), adicione cada domínio que pretende abrir na janela do 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 tentar aceder a um URL que não está na lista, no Ambiente de trabalho, o URL é aberto numa nova janela do browser (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 com licenciamento em 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 apenas de suplemento seguinte aloja a respetiva página de suplemento main no https://www.contoso.com domínio, conforme especificado no <elemento SourceLocation>. Também especifica o https://www.northwindtraders.com domínio num 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 opcional VersionOverrides contém marcações subordinadas que permitem funcionalidades adicionais de suplementos. Alguns deles são:

  • Personalizando a faixa de opções do Office e os menus.
  • Personalizar a forma como o Office funciona com os runtimes incorporados 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 os conjuntos de requisitos, consulte Disponibilidade dos conjuntos de requisitos do Office. Por exemplo, num suplemento do Outlook, o conjunto de requisitos tem de ser Caixa de Correio e um valor igual ou superior a 1,1.

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

O exemplo seguinte utiliza 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 a versão 1.1 do< conjunto de requisitos da Caixa de Correio.

<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. Estes elementos podem ser facilmente localizados ao especificar o valor predefinido e, em seguida, substituir a <região no elemento Resources> no <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 os elementos que podem ser localizados.

Exemplos e esquemas do arquivo XML de manifesto v1.1

As secções seguintes mostram exemplos de ficheiros XML do manifesto v1.1 para conteúdo, painel de tarefas e suplementos de correio (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