【问题标题】:Office Plugin won't show up in local desktop version of Excel - Manifest issue?Office 插件不会出现在本地桌面版本的 Excel 中 - 清单问题?
【发布时间】:2018-07-12 11:47:51
【问题描述】:

我是 Microsoft Office Addin 开发的新手,但我已经使用 JavaScript 和 Vue.js 完成了我的第一个 Excel Addin (yeh)。

它完全可以在在线 Office 365 Excel 变体中运行。由于我不是经过验证的开发人员或 365 管理员,因此我每次都将 manifest.xml 上传到 Office.com。

我现在正按照以下指南尝试让我的插件在本地版本中工作:https://docs.microsoft.com/en-us/office/dev/add-ins/testing/create-a-network-shared-folder-catalog-for-task-pane-and-content-add-ins

结果:对话框中没有显示单个插件(..“共享插件”...)

我尝试通过验证我的清单来解决问题 - 如下所示:

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

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

  <!-- IMPORTANT! Id must be unique for your add-in, if you reuse this manifest ensure that you change this id to a new GUID. -->
  <Id>8changed-249c-4bdf-8b4a-changed407f5</Id>

  <!--Version. Updates from the store only get triggered if there is a version change. -->
  <Version>1.0.0.0</Version>
  <ProviderName>[Provider name]</ProviderName>
  <DefaultLocale>en-US</DefaultLocale>
  <!-- The display name of your add-in. Used on the store and various places of the Office UI such as the add-ins dialog. -->
  <DisplayName DefaultValue="myAddin" />
  <Description DefaultValue="[Workbook Add-in description]"/>

  <!-- Icon for your add-in. Used on installation screens and the add-ins dialog. -->
  <IconUrl DefaultValue="https://myAddin..mydomain.xxx/assets/icon-32.png" />
  <HighResolutionIconUrl DefaultValue="https://myAddin..mydomain.xxx/assets/hi-res-icon.png"/>

  <!--If you plan to submit this add-in to the Office Store, uncomment the SupportUrl element below-->
  <!--<SupportUrl DefaultValue="[Insert the URL of a page that provides support information for the app]">-->

  <!--Begin TaskPane Mode integration. This section is used if there are no VersionOverrides or if the Office client version does not support add-in commands. -->
  <Hosts>
    <Host Name="Workbook" />
  </Hosts>
  <DefaultSettings>
    <SourceLocation DefaultValue="https://myAddin..mydomain.xxx/index.html" />
  </DefaultSettings>
  <!-- End TaskPane Mode integration.  -->

  <Permissions>ReadWriteDocument</Permissions>

  <!-- Domains that will be allowed when navigating. For example, if you use ShowTaskpane and then have an href link, navigation will only be allowed if the domain is on this list. -->
  <AppDomains>
    <AppDomain>some.text.io</AppDomain>
    <AppDomain>myAddin..mydomain.xxx</AppDomain>
  </AppDomains>
  <!--End Basic Settings. -->


  <!-- Begin Add-in Commands Mode integration. -->
  <VersionOverrides xmlns="http://schemas.microsoft.com/office/taskpaneappversionoverrides" xsi:type="VersionOverridesV1_0">

    <!-- The Hosts node is required. -->
    <Hosts>
      <!-- Each host can have a different set of commands. -->
      <!-- Excel host is Workbook, Word host is Document, and PowerPoint host is Presentation. -->
      <!-- Make sure the hosts you override match the hosts declared in the top section of the manifest. -->
      <Host xsi:type="Workbook">
        <!-- Form factor. Currently only DesktopFormFactor is supported. -->
        <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. resid 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"/>

            <!-- Point to a url resource which details how the add-in should be used. -->
            <LearnMoreUrl resid="Contoso.GetStarted.LearnMoreUrl"/>
          </GetStarted>
          <!-- Function file is a HTML page that includes the JavaScript where functions for ExecuteAction will be called.
            Think of the FunctionFile as the code behind ExecuteFunction. -->
          <!--<FunctionFile resid="Contoso.DesktopFunctionFile.Url" />-->

          <!-- PrimaryCommandSurface is the main Office Ribbon. -->
          <ExtensionPoint xsi:type="PrimaryCommandSurface">
            <!-- Use OfficeTab to extend an existing Tab. Use CustomTab to create a new tab. -->
            <OfficeTab id="TabHome">
              <!-- Ensure you provide a unique id for the group. Recommendation for any IDs is to namespace using your company name. -->
              <Group id="Contoso.Group1">
                <!-- Label for your group. resid must point to a ShortString resource. -->
                <Label resid="Contoso.Group1Label" />
                <!-- Icons. Required sizes 16,32,80, optional 20, 24, 40, 48, 64. Strongly recommended to provide all sizes for great UX. -->
                <!-- Use PNG icons. All URLs on the resources section must use HTTPS. -->
                <Icon>
                  <bt:Image size="16" resid="Contoso.tpicon_16x16" />
                  <bt:Image size="32" resid="Contoso.tpicon_32x32" />
                  <bt:Image size="80" resid="Contoso.tpicon_80x80" />
                </Icon>

                <!-- Control. It can be of type "Button" or "Menu". -->
                <Control xsi:type="Button" id="Contoso.TaskpaneButton">
                  <Label resid="Contoso.TaskpaneButton.Label" />
                  <Supertip>
                    <!-- ToolTip title. resid must point to a ShortString resource. -->
                    <Title resid="Contoso.TaskpaneButton.Label" />
                    <!-- ToolTip description. resid must point to a LongString resource. -->
                    <Description resid="Contoso.TaskpaneButton.Tooltip" />
                  </Supertip>
                  <Icon>
                    <bt:Image size="16" resid="Contoso.tpicon_16x16" />
                    <bt:Image size="32" resid="Contoso.tpicon_32x32" />
                    <bt:Image size="80" resid="Contoso.tpicon_80x80" />
                  </Icon>

                  <!-- This is what happens when the command is triggered (E.g. click on the Ribbon). Supported actions are ExecuteFunction or ShowTaskpane. -->
                  <Action xsi:type="ShowTaskpane">
                    <TaskpaneId>ButtonId1</TaskpaneId>
                    <!-- Provide a url resource id for the location that will be displayed on the task pane. -->
                    <SourceLocation resid="Contoso.Taskpane.Url" />
                  </Action>
                </Control>
              </Group>
            </OfficeTab>
          </ExtensionPoint>
        </DesktopFormFactor>
      </Host>
    </Hosts>

    <!-- You can use resources across hosts and form factors. -->
    <Resources>
      <bt:Images>
        <bt:Image id="Contoso.tpicon_16x16" DefaultValue="https://myAddin..mydomain.xxx/assets/img/textengine-logo-flat.svg" />
        <bt:Image id="Contoso.tpicon_32x32" DefaultValue="https://myAddin..mydomain.xxx/assets/img/textengine-logo-flat.svg" />
        <bt:Image id="Contoso.tpicon_80x80" DefaultValue="https://myAddin..mydomain.xxx/assets/img/textengine-logo-flat.svg" />
      </bt:Images>
      <bt:Urls>
        <bt:Url id="Contoso.Taskpane.Url" DefaultValue="https://myAddin..mydomain.xxx/index.html" />
        <bt:Url id="Contoso.GetStarted.LearnMoreUrl" DefaultValue="https://go.microsoft.com/fwlink/?LinkId=276812" />
        <bt:Url id="Contoso.DesktopFunctionFile.Url" DefaultValue="https://myAddin..mydomain.xxx/index.html" />
      </bt:Urls>
      <!-- ShortStrings max characters==125. -->
      <bt:ShortStrings>
        <bt:String id="Contoso.TaskpaneButton.Label" DefaultValue="myAddin" />
        <bt:String id="Contoso.Group1Label" DefaultValue="myAddin" />
        <bt:String id="Contoso.GetStarted.Title" DefaultValue="Get some Content generated!" />
      </bt:ShortStrings>
      <!-- LongStrings max characters==250. -->
      <bt:LongStrings>
        <bt:String id="Contoso.TaskpaneButton.Tooltip" DefaultValue="Click me to get some Content generated!" />
        <bt:String id="Contoso.GetStarted.Description" DefaultValue="myAddin loaded and ready to fire some Texts!" />
      </bt:LongStrings>
    </Resources>
  </VersionOverrides>
  <!-- End Add-in Commands Mode integration. -->

</OfficeApp>

验证给我以下错误:

    + validate-office-addin ./*manifest.xml
Calling validation service. This might take a moment...
-------------------------------------
Validation: Failed
Error #1: 
XML Schema Violation: Your manifest does not adhere to the current set of XML schema definitions for Office Add-in manifests. (link: https://aka.ms/add-in-manifest-schema-violation)
  - Details: The element 'OfficeApp' in namespace 'http://schemas.microsoft.com/office/appforoffice/1.1' has invalid child element 'AppDomains' in namespace 'http://schemas.microsoft.com/office/appforoffice/1.1'. List of possible elements expected: 'Dictionary' in namespace 'http://schemas.microsoft.com/office/appforoffice/1.1' as well as 'VersionOverrides' in namespace 'http://schemas.microsoft.com/office/taskpaneappversionoverrides' as well as any element in namespace 'http://www.w3.org/2000/09/xmldsig#'.
  - Line: 41
- Column: 4

按照链接指南https://aka.ms/add-in-manifest-schema-violation 看起来我没有犯任何错误。

可能有人比我更了解它或有一些调试技巧吗?

【问题讨论】:

    标签: xml excel vue.js office-js


    【解决方案1】:

    元素的顺序很重要。 (我们在 Microsoft 还没有正确记录所需的顺序。)我认为 AppDomains 必须位于您的 HighResolutionIconUrl 元素和正下方的 Hosts 元素之间它。清单的 XSD(几乎不)是人类可读的,可能会有所帮助:https://github.com/OfficeDev/office-js-docs-pr/tree/master/docs/overview/schemas/taskpane

    【讨论】:

      【解决方案2】:

      实际上,我的问题“为什么它没有出现在 Microsoft Office Excel 的离线变体中 - 甚至没有出现在“添加插件页面”中”的答案是: “离线 Excel”似乎不喜欢 .svg(甚至没有在 XML 中指定)——我一定是在文档中过度阅读了这个……我深入研究了我的 git 提交并逐步将其反转,直到我发现..

      就是这个:

        <bt:Images>
          <bt:Image id="Contoso.tpicon_16x16" DefaultValue="https://myAddin..mydomain.xxx/assets/img/textengine-logo-flat.svg" />
          <bt:Image id="Contoso.tpicon_32x32" DefaultValue="https://myAddin..mydomain.xxx/assets/img/textengine-logo-flat.svg" />
          <bt:Image id="Contoso.tpicon_80x80" DefaultValue="https://myAddin..mydomain.xxx/assets/img/textengine-logo-flat.svg" />
        </bt:Images>
      

      无论如何,谢谢 Rick,很高兴知道这对我有很大帮助,因为验证器服务仍然认为我的 Manifest 无效..(但它确实有效!:))

      【讨论】:

        猜你喜欢
        • 2021-06-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-11-30
        • 1970-01-01
        相关资源
        最近更新 更多