Search code examples
ms-wordoffice-jsoffice-store

Office add-in validation fails for IconUrl though it is a 32x32 px image


I have the following line in my manifest

<IconUrl DefaultValue="images/icon-32.png"/>

and also

<Host ...>
...
    <Control ...>
        ....
        <Icon>
            <bt:Image size="16" DefaultValue="images/icon-16.png"/>
            <bt:Image size="32" DefaultValue="images/icon-32.png"/>
            <bt:Image size="80" DefaultValue="images/icon-80.png"/>
        </Icon>
    </Control>

</Host>

But when I submit for approval, I am getting the following error from the Office Store Team.

The icon referenced in the IconUrl element of your add-in manifest must be 32x32 pixels in dimension.

And it is referred to the document Validation Policies point 5.10

I have verified the image to be exactly 32x32 px in size in PNG format. While testing the add-in, the icon-32.png is loaded in the Home menu panel

Update The complete manifest file is added below

<?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">
    <Id>aabbccdd-aabbccdd-aabbccdd-aabbccdd</Id>
    <Version>1.0</Version>
    <ProviderName>TestAddin</ProviderName>
    <DefaultLocale>en-US</DefaultLocale>
    <DisplayName DefaultValue="TestAddin" />
    <Description DefaultValue="A Test addin"/>
    <IconUrl DefaultValue="https://wireframepro.mockflow.com/integrations/office365/images/icon-32.png" />
    <SupportUrl DefaultValue="http://tesaddin.local" />
    <AppDomains>
        <AppDomain>http://tesaddin.local/</AppDomain>
    </AppDomains>
    <Hosts>
        <Host Name="Document" />
    </Hosts>
    <DefaultSettings>
        <SourceLocation DefaultValue="http://tesaddin.local/index.html" />
    </DefaultSettings>
    <Permissions>ReadWriteDocument</Permissions>
    <Requirements>
        <Sets DefaultMinVersion="1.1">
            <Set Name="WordApi" MinVersion="1.1"/>
        </Sets>
    </Requirements>
    <VersionOverrides 
        xmlns="http://schemas.microsoft.com/office/taskpaneappversionoverrides" xsi:type="VersionOverridesV1_0">
        <Hosts>
            <Host xsi:type="Document">
                <DesktopFormFactor>
                    <GetStarted>
                        <Title resid="ACME.GetStarted.Title"/>
                        <Description resid="ACME.GetStarted.Description"/>
                        <LearnMoreUrl resid="ACME.GetStarted.LearnMoreUrl"/>
                    </GetStarted>
                    <ExtensionPoint xsi:type="PrimaryCommandSurface">
                        <OfficeTab id="TabHome">
                            <Group id="ACME.Group1">
                                <Label resid="ACME.Group1Label" />
                                <Icon>
                                    <bt:Image size="16" resid="ACME.tpicon_16x16" />
                                    <bt:Image size="32" resid="ACME.tpicon_32x32" />
                                    <bt:Image size="80" resid="ACME.tpicon_80x80" />
                                </Icon>
                                <Control xsi:type="Button" id="ACME.TaskpaneButton">
                                    <Label resid="ACME.TaskpaneButton.Label" />
                                    <Supertip>
                                        <Title resid="ACME.TaskpaneButton.Label" />
                                        <Description resid="ACME.TaskpaneButton.Tooltip" />
                                    </Supertip>
                                    <Icon>
                                        <bt:Image size="16" resid="ACME.tpicon_16x16" />
                                        <bt:Image size="32" resid="ACME.tpicon_32x32" />
                                        <bt:Image size="80" resid="ACME.tpicon_80x80" />
                                    </Icon>
                                    <Action xsi:type="ShowTaskpane">
                                        <TaskpaneId>ButtonId1</TaskpaneId>
                                        <SourceLocation resid="ACME.Taskpane.Url" />
                                    </Action>
                                </Control>
                            </Group>
                        </OfficeTab>
                    </ExtensionPoint>
                </DesktopFormFactor>
            </Host>
        </Hosts>
        <Resources>
            <bt:Images>
                <bt:Image id="ACME.tpicon_16x16" DefaultValue="https://wireframepro.mockflow.com/integrations/office365/images/icon-16.png" />
                <bt:Image id="ACME.tpicon_32x32" DefaultValue="https://wireframepro.mockflow.com/integrations/office365/images/icon-32.png" />
                <bt:Image id="ACME.tpicon_80x80" DefaultValue="https://wireframepro.mockflow.com/integrations/office365/images/icon-80.png" />
            </bt:Images>
            <bt:Urls>
                <bt:Url id="ACME.Taskpane.Url" DefaultValue="http://tesaddin.local/index.html" />
                <bt:Url id="ACME.GetStarted.LearnMoreUrl" DefaultValue="https://go.microsoft.com/fwlink/?LinkId=276812" />
            </bt:Urls>
            <bt:ShortStrings>
                <bt:String id="ACME.TaskpaneButton.Label" DefaultValue="Open Editor" />
                <bt:String id="ACME.Group1Label" DefaultValue="Test Addin" />
                <bt:String id="ACME.GetStarted.Title" DefaultValue="Get started with Test Addin" />
            </bt:ShortStrings>
            <bt:LongStrings>
                <bt:String id="ACME.TaskpaneButton.Tooltip" DefaultValue="Open Editor" />
                <bt:String id="ACME.GetStarted.Description" DefaultValue="Test add-in has been loaded succesfully. You can access the editor in HOME tab, click Open Editor" />
            </bt:LongStrings>
        </Resources>
    </VersionOverrides>
</OfficeApp>

Solution

  • I confirmed the image referenced in your IconUrl is 32x32. Based on what you've posted, I don't see a problem with your image. I suggest re-submitting and mentioning that you couldn't replicate the icon issue from the previous failure.

    There are a couple of issue with your manifest that you should address first:

    1. The requirements element should come immediately after your hosts element. While this shouldn't effect the add-in, it is tripping up the automated validation script. Simply moving it after hosts will eliminate this being incorrectly flagged during manifest validation.

    2. You've got a couple of references to http://tesaddin.local/index.html. Add-ins are required to operate over a secure transport (https). The only URIs in your manifest that should use http are the XML schema references. Given the .local, I assume this is just a standing URL for posting on SO so this may not be an issue in your actual manifest.