I am developing an add in for Outlook which contains a custom tab, some groups and several buttons.
As a sanity test I have created a manifest which will provide me with the custom tab, one group and one button, see example code below (redacted due to security/confidentiality concerns):
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<OfficeApp
xsi:type="MailApp"
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:mailappor="http://schemas.microsoft.com/office/mailappversionoverrides/1.0">
<Id>3146b891-b800-431c-8fd3-feceea31a889</Id>
<Version>1.2</Version>
<ProviderName>redacted</ProviderName>
<DefaultLocale>en-US</DefaultLocale>
<DisplayName DefaultValue="redacted mikeeTest Add-In"/>
<Description DefaultValue="Various features from mikee directly in your Outlook or OWA."/>
<IconUrl DefaultValue="redacted"/>
<HighResolutionIconUrl DefaultValue="redacted"/>
<SupportUrl DefaultValue="redacted" />
<AppDomains>
<!-- redacted -->
</AppDomains>
<Hosts>
<Host Name="Mailbox"/>
</Hosts>
<Requirements>
<Sets>
<Set Name="MailBox" MinVersion="1.4"/>
</Sets>
</Requirements>
<FormSettings>
<Form xsi:type="ItemRead">
<DesktopSettings>
<SourceLocation DefaultValue="redacted"/>
<RequestedHeight>250</RequestedHeight>
</DesktopSettings>
</Form>
</FormSettings>
<Permissions>ReadWriteMailbox</Permissions>
<Rule xsi:type="RuleCollection" Mode="Or">
<Rule xsi:type="ItemIs" ItemType="Message" FormType="Edit" />
<Rule xsi:type="ItemIs" ItemType="Message" FormType="Read" />
</Rule>
<DisableEntityHighlighting>false</DisableEntityHighlighting>
<VersionOverrides xmlns="http://schemas.microsoft.com/office/mailappversionoverrides" xsi:type="VersionOverridesV1_0">
<Hosts>
<Host xsi:type="MailHost">
<DesktopFormFactor>
<FunctionFile resid="funcFile"/>
<ExtensionPoint xsi:type="MessageReadCommandSurface">
<CustomTab id="TabTest">
<Group id="mikeeTestGroup">
<Label resid="mikeeTestGroupLabel"/>
<Control xsi:type="Menu" id="mikeeTestMenu">
<Label resid="mikeeTestMenuLabel" />
<Supertip>
<Title resid="mikeeTestMenuTitle" />
<Description resid="mikeeTestMenuLabelDesc" />
</Supertip>
<Icon>
<bt:Image size="16" resid="mikeeTestMenuIcon-16" />
<bt:Image size="32" resid="mikeeTestMenuIcon-32" />
<bt:Image size="80" resid="mikeeTestMenuIcon-80" />
</Icon>
<Items>
<Item id="delBlock">
<Label resid="delBlockButtonLabel" />
<Supertip>
<Title resid="delBlockButtonTitle" />
<Description resid="delBlockButtonLabelDesc" />
</Supertip>
<Icon>
<bt:Image size="16" resid="delBlockIcon-16" />
<bt:Image size="32" resid="delBlockIcon-32" />
<bt:Image size="80" resid="delBlockIcon-80" />
</Icon>
<Action xsi:type="ExecuteFunction">
<FunctionName>deleteAndBlockSender</FunctionName>
</Action>
</Item>
<Item id="mvToInbox">
<Label resid="mvToInboxButtonLabel" />
<Supertip>
<Title resid="mvToInboxButtonTitle" />
<Description resid="mvToInboxButtonLabelDesc" />
</Supertip>
<Icon>
<bt:Image size="16" resid="mvToInboxIcon-16" />
<bt:Image size="32" resid="mvToInboxIcon-32" />
<bt:Image size="80" resid="mvToInboxIcon-80" />
</Icon>
<Action xsi:type="ExecuteFunction">
<FunctionName>moveToInbox</FunctionName>
</Action>
</Item>
<Item id="mvToLowPriority">
<Label resid="mvToLowPriorityButtonLabel" />
<Supertip>
<Title resid="mvToLowPriorityButtonTitle" />
<Description resid="mvToLowPriorityButtonLabelDesc" />
</Supertip>
<Icon>
<bt:Image size="16" resid="mvToLowPriorityIcon-16" />
<bt:Image size="32" resid="mvToLowPriorityIcon-32" />
<bt:Image size="80" resid="mvToLowPriorityIcon-80" />
</Icon>
<Action xsi:type="ExecuteFunction">
<FunctionName>moveToLowPriority</FunctionName>
</Action>
</Item>
<Item id="markAsSuspicious">
<Label resid="markAsSuspiciousButtonLabel" />
<Supertip>
<Title resid="markAsSuspiciousButtonTitle" />
<Description resid="markAsSuspiciousButtonLabelDesc" />
</Supertip>
<Icon>
<bt:Image size="16" resid="markAsSuspiciousIcon-16" />
<bt:Image size="32" resid="markAsSuspiciousIcon-32" />
<bt:Image size="80" resid="markAsSuspiciousIcon-80" />
</Icon>
<Action xsi:type="ExecuteFunction">
<FunctionName>markAsSuspicious</FunctionName>
</Action>
</Item>
</Items>
</Control>
</Group>
<Label resid="onePluginTabLabel"/>
</CustomTab>
</ExtensionPoint>
</DesktopFormFactor>
</Host>
</Hosts>
<Resources>
<bt:Images>
<bt:Image id="mikeeTestMenuIcon-16" DefaultValue="redacted"/>
<bt:Image id="mikeeTestMenuIcon-32" DefaultValue="redacted"/>
<bt:Image id="mikeeTestMenuIcon-80" DefaultValue="redacted"/>
<bt:Image id="delBlockIcon-16" DefaultValue="redacted"/>
<bt:Image id="delBlockIcon-32" DefaultValue="redacted"/>
<bt:Image id="delBlockIcon-80" DefaultValue="redacted"/>
<bt:Image id="mvToInboxIcon-16" DefaultValue="redacted"/>
<bt:Image id="mvToInboxIcon-32" DefaultValue="redacted"/>
<bt:Image id="mvToInboxIcon-80" DefaultValue="redacted"/>
<bt:Image id="mvToLowPriorityIcon-16" DefaultValue="redacted"/>
<bt:Image id="mvToLowPriorityIcon-32" DefaultValue="redacted"/>
<bt:Image id="mvToLowPriorityIcon-80" DefaultValue="redacted"/>
<bt:Image id="markAsSuspiciousIcon-16" DefaultValue="redacted"/>
<bt:Image id="markAsSuspiciousIcon-32" DefaultValue="redacted"/>
<bt:Image id="markAsSuspiciousIcon-80" DefaultValue="redacted"/>
</bt:Images>
<bt:Urls>
<bt:Url id="funcFile" DefaultValue="redacted"/>
</bt:Urls>
<bt:ShortStrings>
<bt:String id="mikeeTestGroupLabel" DefaultValue="Email Feedback"/>
<bt:String id="mikeeTestMenuLabel" DefaultValue="Email Feedback"/>
<bt:String id="mikeeTestMenuTitle" DefaultValue="Actions providing feedback"/>
<bt:String id="delBlockButtonLabel" DefaultValue="Delete and Block Sender"/>
<bt:String id="delBlockButtonTitle" DefaultValue="Delete and Block Sender"/>
<bt:String id="mvToInboxButtonLabel" DefaultValue="Move to Inbox"/>
<bt:String id="mvToInboxButtonTitle" DefaultValue="Mark as safe and put back in Inbox"/>
<bt:String id="mvToLowPriorityButtonLabel" DefaultValue="Move to Low Priority Inbox"/>
<bt:String id="mvToLowPriorityButtonTitle" DefaultValue="Remove from safe list and move to Low Priority"/>
<bt:String id="markAsSuspiciousButtonLabel" DefaultValue="Report as Suspicious"/>
<bt:String id="markAsSuspiciousButtonTitle" DefaultValue="Flag as suspicious"/>
<bt:String id="quarantineButtonLabel" DefaultValue="End User Web"/>
<bt:String id="quarantineButtonTitle" DefaultValue="Go to End User Web"/>
<bt:String id="aboutButtonLabel" DefaultValue="About"/>
<bt:String id="aboutButtonTitle" DefaultValue="About"/>
<bt:String id="onePluginTabLabel" DefaultValue="redacted"/>
</bt:ShortStrings>
<bt:LongStrings>
<bt:String id="mikeeTestMenuLabelDesc" DefaultValue="Give feedback about bulk and spam emails"/>
<bt:String id="delBlockButtonLabelDesc" DefaultValue="Move the email to Trash and add the sender to a block list"/>
<bt:String id="mvToInboxButtonLabelDesc" DefaultValue="Restore email to Inbox and remove from block list"/>
<bt:String id="mvToLowPriorityButtonLabelDesc" DefaultValue="Remove from safe list and move to Low Priority folder"/>
<bt:String id="markAsSuspiciousButtonLabelDesc" DefaultValue="Report this message as suspicious"/>
<bt:String id="quarantineButtonLabelDesc" DefaultValue="View you quarantine settings in end user web"/>
</bt:LongStrings>
</Resources>
</VersionOverrides>
</OfficeApp>
I have validated the manifest using Office Addin Validator which has provided the following output:
$ validate-office-addin ~/ef-manifest.xml
Calling validation service. This might take a moment...
-------------------------------------
Validation: Passed
Based on the requirements specified in your manifest, your add-in can run on the following platforms; your add-in will be tested on these platforms when you submit it to the Office Store:
- Outlook 2013 or later
- Outlook 2016 or later
- Outlook 2016 for Mac
- Outlook on the Web
Important: This analysis is based on the requirements specified in your manifest and does not account for any runtime JavaScript calls within your add-in. For information about which API sets and features are supported on each platform, see Office Add-in host and platform availability. (https://dev.office.com/add-in-availability).
*This does not include mobile apps. You can opt-in to support mobile apps when you submit your add-in.
-------------------------------------
I have also confirmed that my dummy template has worked in with the following setup:
Windows 10 Pro
Outlook 2019 Version 1808 (Build 10338.20019)
The picture below shows the add in, the custom tab, the group and the button:
custom tab working in Windows
The issue I am having is when I try to use the same manifest on a Mac whose setup is:
macOs High Sierra Version 10.13.6 (17G3025)
Outlook 2016 Version 16.16.4 (181110)
In this case the add in installs and can initially be seen in the 'my add-ins: custom add-ins' section of the store. However when I return to Outlook from the store the add in does not appear. If I then subsequently return to the store the add-in no longer shows up in the 'my add-ins: custom add-ins' section.
Some information I've already gathered:
MS maintains a list of supported/availability for the different parts of the add ins. Currently add in commands are listed as being supported on all available platforms (Web, Windows, Mac, Android, etc). See the list here:
MS Outlook add in support
Microsoft documentation states “You can use add-in commands to add a button on the ribbon or an item to a context menu.”, here:
MS add in commands definition
Their documentation goes on to say “An add-in command appears on the ribbon as a button. When a user installs an add-in, its commands appear in the UI as a group of buttons labeled with the add-in name. This can either be on the ribbon's default tab or on a custom tab.”, here:
MS custom tab support
I have already come across an issue on here which mentions that ribbon groups are not available in Outlook for Mac:
Related stackoverflow question
So given this brief history I have two questions:
1) Are custom tabs supported in Outlook for Mac?
and if so
2) Am I missing something in my manifest file?
You are not missing anything in the manifest.
Mac Outlook doesn't support custom tabs.
You will have to use Office Tab.
Related
Im creating a custom add in using the yo office command. I just want to know how i can change the icon on the outlook mail app. Ive. try everything but nothing works. Image Here
It seems you need to change the icon on the ribbon. For that you need to add an icon to your web app and define it in the resources section to which you can refer in the ribbon markup:
<!-- Define a control that calls a JavaScript function. -->
<Control xsi:type="Button" id="Button1Id1">
<Label resid="residLabel" />
<Tooltip resid="residToolTip" />
<Supertip>
<Title resid="residLabel" />
<Description resid="residToolTip" />
</Supertip>
<Icon>
<bt:Image size="16" resid="icon1_16x16" />
<bt:Image size="32" resid="icon1_32x32" />
<bt:Image size="80" resid="icon1_80x80" />
</Icon>
<Action xsi:type="ExecuteFunction">
<FunctionName>getData</FunctionName>
</Action>
</Control>
The resources section from the manifest file may look like that:
<Resources>
<bt:Images>
<bt:Image id="Icon_16x16" DefaultValue="https://localhost:3000/assets/icon-16.png"/>
<bt:Image id="Icon_32x32" DefaultValue="https://localhost:3000/assets/icon-32.png"/>
<bt:Image id="Icon_80x80" DefaultValue="https://localhost:3000/assets/icon-80.png"/>
</bt:Images>
<Resources>
Read more about that in the Add-in commands for Outlook article.
I developed a small Outlook plugin that is supposed to be used in a shared mailbox.
The problems are the following:
In the "new" Outlook for mac it can only be opened one time, in the shared Mailbox. After that the Addin is greyed out.
In Outlook on the web the pinning feature can not be used in the shared mailbox
The details:
I added
<DesktopFormFactor>
<SupportsSharedFolders>true</SupportsSharedFolders>
to the manifest, to make it work within a shared mailbox.
One of our users uses a mac and switched to "new Outlook". When he is in the shared mailbox the Addin can be opened once. (Right after opening the personal mailbox) After that the Icon is greyed out and it cant be opened again (only when switching to the personal mailbox and back) . When hovering over the Addin, this message appears:
(Changed the icon, title and email)
In the "old" Outlook for Mac it does seem to work, but the user does not want to use it.
At first i thought maybe it has something to do with the WebApplicationInfo and its authorization but it shows the same behavior without this part.
Interestingly it does also work for a while after a fresh installation. If I freshly add the manifest.xml it can be used for one or two sessions.
In the web client a different problem occurs, the Addin can be loaded in the shared mailbox but the pinning does not work.
Here is the full manifest (without urls and names), I am aware that it does not include a version for the older Outlook versions. But our user base is very limited and everybody uses the latest client.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<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:mailappor="http://schemas.microsoft.com/office/mailappversionoverrides/1.0" xsi:type="MailApp">
<Id>{{ID}}</Id>
<Version>1.0.0.0</Version>
<ProviderName>{{Provider}}</ProviderName>
<DefaultLocale>en-US</DefaultLocale>
<DisplayName DefaultValue="{{Name}"/>
<Description DefaultValue="{{Description}"/>
<IconUrl DefaultValue="https://test.app/Icon"/>
<HighResolutionIconUrl DefaultValue="https://test.app/Icon2"/>
<SupportUrl DefaultValue="https://test.app/Help"/>
<AppDomains>
<AppDomain>https://test.app/</AppDomain>
</AppDomains>
<Hosts>
<Host Name="Mailbox"/>
</Hosts>
<Requirements>
<Sets DefaultMinVersion="1.1">
<Set Name="Mailbox" MinVersion="1.1"/>
</Sets>
</Requirements>
<FormSettings>
<Form xsi:type="ItemRead">
<DesktopSettings>
<SourceLocation DefaultValue="https://test.app/pane"/>
<RequestedHeight>250</RequestedHeight>
</DesktopSettings>
</Form>
</FormSettings>
<Permissions>ReadWriteMailbox</Permissions>
<Rule xsi:type="RuleCollection" Mode="Or">
<Rule xsi:type="ItemIs" ItemType="Message" FormType="Read"/>
</Rule>
<DisableEntityHighlighting>false</DisableEntityHighlighting>
<VersionOverrides xmlns="http://schemas.microsoft.com/office/mailappversionoverrides" xsi:type="VersionOverridesV1_0">
<VersionOverrides xmlns="http://schemas.microsoft.com/office/mailappversionoverrides/1.1" xsi:type="VersionOverridesV1_1">
<Requirements>
<bt:Sets DefaultMinVersion="1.3">
<bt:Set Name="Mailbox"/>
</bt:Sets>
</Requirements>
<Hosts>
<Host xsi:type="MailHost">
<DesktopFormFactor>
<SupportsSharedFolders>true</SupportsSharedFolders>
<ExtensionPoint xsi:type="MessageReadCommandSurface">
<OfficeTab id="TabDefault">
<Group id="msgReadGroup">
<Label resid="GroupLabel"/>
<Control xsi:type="Button" id="msgReadOpenPaneButton">
<Label resid="TaskpaneButton.Label"/>
<Supertip>
<Title resid="TaskpaneButton.Label"/>
<Description resid="TaskpaneButton.Tooltip"/>
</Supertip>
<Icon>
<bt:Image size="16" resid="Icon.16x16"/>
<bt:Image size="32" resid="Icon.32x32"/>
<bt:Image size="80" resid="Icon.80x80"/>
</Icon>
<Action xsi:type="ShowTaskpane">
<SourceLocation resid="Taskpane.Url"/>
<SupportsPinning>true</SupportsPinning>
</Action>
</Control>
</Group>
</OfficeTab>
</ExtensionPoint>
</DesktopFormFactor>
</Host>
</Hosts>
<Resources>
<bt:Images>
<bt:Image id="Icon.16x16" DefaultValue="https://test.app/Icon1"/>
<bt:Image id="Icon.32x32" DefaultValue="https://test.app/Icon2"/>
<bt:Image id="Icon.80x80" DefaultValue="https://test.app/Icon3"/>
</bt:Images>
<bt:Urls>
<bt:Url id="Taskpane.Url" DefaultValue="https://test.app/Pane"/>
</bt:Urls>
<bt:ShortStrings>
<bt:String id="GroupLabel" DefaultValue=""/>
<bt:String id="TaskpaneButton.Label" DefaultValue=""/>
</bt:ShortStrings>
<bt:LongStrings>
<bt:String id="TaskpaneButton.Tooltip" DefaultValue="Opens a pane displaying all available properties."/>
</bt:LongStrings>
</Resources>
<WebApplicationInfo>
<Id>{{ID}}</Id>
<Resource>{{URI}}</Resource>
<Scopes>
<Scope>offline_access</Scope>
<Scope>openid</Scope>
<Scope>profile</Scope>
<Scope>Mail.ReadWrite.Shared</Scope>
<Scope>Mail.Send.Shared</Scope>
<Scope>User.Read</Scope>
</Scopes>
</WebApplicationInfo>
</VersionOverrides>
</VersionOverrides>
</OfficeApp>
Addins support for group shared mailbox is not yet supported on Outlook on Web. This is mentioned in our documentation here. We track Outlook add-in feature requests on our Tech Community Page. Please submit your request there and choose the appropriate label(s). Feature requests on Tech Community are considered, when we go through our planning process
I'm developing an add-in for Outlook to be used on the Appointments tabs. My issue is that the ribbon icon that initializes the add-in doesn't display the proper icon (ends up falling back to the default blue hexagon from Microsoft) but only on Windows Outlook apps.
The icon shows up properly on Outlook for Mac and on the Outlook web clients.
Tried already resizing the icons to 64x64 and 128x128 (high res), removing and reinstalling the add-in, and validating through the manifest validator. All seems fine but the issue persists.
These are parts of the manifest (URL's replaced with localhost) that I judge relevant to the issue (Please feel free to ask for other sections if I missed anything.
<IconUrl DefaultValue="https://localhost:8080/assets/icon-dark-64.png" />
<HighResolutionIconUrl DefaultValue="https://localhost:8080/assets/icon-dark-128.png" />
<DesktopFormFactor>
<FunctionFile resid="functionFile" />
<ExtensionPoint xsi:type="AppointmentOrganizerCommandSurface">
<OfficeTab id="TabDefault">
<Group id="meetingGroup">
<Label resid="groupLabel" />
<Control xsi:type="Button" id="meetingOpenPaneButton">
<Label resid="paneMeetingButtonLabel" />
<Supertip>
<Title resid="paneMeetingSuperTipTitle" />
<Description resid="paneMeetingSuperTipDescription" />
</Supertip>
<Icon>
<bt:Image size="16" resid="icon16" />
<bt:Image size="32" resid="icon32" />
<bt:Image size="64" resid="icon64" />
<bt:Image size="80" resid="icon80" />
</Icon>
<Action xsi:type="ShowTaskpane">
<SourceLocation resid="messageMeetingTaskPaneUrl" />
</Action>
</Control>
</Group>
</OfficeTab>
</ExtensionPoint>
</DesktopFormFactor>
<Resources>
<bt:Images>
<bt:Image id="icon16" DefaultValue="https://localhost:8080/assets/icon-dark-16.png" />
<bt:Image id="icon32" DefaultValue="https://localhost:8080/assets/icon-dark-32.png" />
<bt:Image id="icon64" DefaultValue="https://localhost:8080/assets/icon-dark-64.png" />
<bt:Image id="icon80" DefaultValue="https://localhost:8080/assets/icon-dark-80.png" />
</bt:Images>
... <!-- Other resources -->
</Resources>
All image URIs, such as those used for add-in commands, must support caching. The server hosting the image should not return a Cache-Control header specifying no-cache, no-store, or similar options in the HTTP response. Find more details here.
UPDATE #1:
TL;DR: I want to target:
Outlook 2016 or later
Outlook on the Web
Outlook 2016 for Mac
Outlook for iOS
Outlook for Android
I require Mailbox 1.5 in order to support calling the Outlook REST APIs and to support pinnable taskpanes.
Since pinnable taskpanes are only supported in Outlook 2016 for Windows, and because Mailbox 1.5 is currently only supported in Outlook on the Web, I will need to set Mailbox 1.5 in the <VersionOverrides> sections of the manifest.
Based on the validation report:
Your add-in manifest includes Tablet Settings and Phone Settings, however
Mailbox 1.4 is used in the core of your manifest. This mailbox is not
supported in the Outlook Web App.
That sounds like it conflicts with what Office Add-in host and platform availability says. So, I have set Mailbox 1.3 in the base level of the manifest.
Here is my manifest:
<?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:mailappor="http://schemas.microsoft.com/office/mailappversionoverrides" xsi:type="MailApp">
<Id>3042ed3a-6ca5-4b37-b5e3-a591f5605332</Id>
<Version>1.0.1.0</Version>
<ProviderName>Leap Legal Software</ProviderName>
<DefaultLocale>en-US</DefaultLocale>
<DisplayName DefaultValue="LEAP Mail Manager" />
<Description DefaultValue="Save your mail to LEAP."/>
<IconUrl DefaultValue="https://outlookapp.leap365.com/images/icon-64.png" />
<HighResolutionIconUrl DefaultValue="https://outlookapp.leap365.com/images/icon-128.png" />
<SupportUrl DefaultValue="https://leap.force.com/us/s/" />
<AppDomains>
<!--LEAP Add-in Domains -->
<AppDomain>https://outlookapp-dev.leap365.com/</AppDomain>
<AppDomain>https://outlookapp-test.leap365.com/</AppDomain>
<AppDomain>https://outlookapp.leap365.com/</AppDomain>
<!--TitleX Add-in Domains -->
<AppDomain>https://outlookapp.dev.titlex.com.au/</AppDomain>
<AppDomain>https://outlookapp.test.titlex.com.au/</AppDomain>
<AppDomain>https://outlookapp.titlex.com.au/</AppDomain>
<!-- LEAP Auth -->
<AppDomain>https://auth-dev.leap.services/</AppDomain>
<AppDomain>https://auth-test.leap.services/</AppDomain>
<AppDomain>https://auth.leap.services/</AppDomain>
<!-- TitleX Auth -->
<AppDomain>https://login.dev.titlex.com.au/</AppDomain>
<AppDomain>https://login.test.titlex.com.au/</AppDomain>
<AppDomain>https://login.titlex.com.au/</AppDomain>
<AppDomain>https://login.dev.titlex.co.uk/</AppDomain>
<AppDomain>https://login.test.titlex.co.uk/</AppDomain>
<AppDomain>https://login.titlex.co.uk/</AppDomain>
<AppDomain>https://login.dev.titlex.com/</AppDomain>
<AppDomain>https://login.test.titlex.com/</AppDomain>
<AppDomain>https://login.titlex.com/</AppDomain>
</AppDomains>
<Hosts>
<Host Name="Mailbox" />
</Hosts>
<Requirements>
<Sets DefaultMinVersion="1.3">
<Set Name="Mailbox" MinVersion="1.3" />
</Sets>
</Requirements>
<FormSettings>
<Form xsi:type="ItemRead">
<DesktopSettings>
<SourceLocation DefaultValue="https://outlookapp.leap365.com/index.html"/>
<RequestedHeight>280</RequestedHeight>
</DesktopSettings>
<TabletSettings>
<SourceLocation DefaultValue="https://outlookapp.leap365.com/index.html" />
<RequestedHeight>280</RequestedHeight>
</TabletSettings>
<PhoneSettings>
<SourceLocation DefaultValue="https://outlookapp.leap365.com/index.html" />
</PhoneSettings>
</Form>
</FormSettings>
<Permissions>ReadWriteMailbox</Permissions>
<Rule xsi:type="RuleCollection" Mode="Or">
<Rule xsi:type="ItemIs" ItemType="Message" FormType="Read" /></Rule>
<DisableEntityHighlighting>false</DisableEntityHighlighting>
<VersionOverrides
xmlns="http://schemas.microsoft.com/office/mailappversionoverrides" xsi:type="VersionOverridesV1_0">
<Requirements>
<bt:Sets DefaultMinVersion="1.5">
<bt:Set Name="Mailbox" MinVersion="1.5" />
</bt:Sets>
</Requirements>
<Hosts>
<Host xsi:type="MailHost">
<DesktopFormFactor>
<FunctionFile resid="Leap.Functions.Url" />
<!-- Message Read -->
<ExtensionPoint xsi:type="MessageReadCommandSurface">
<CustomTab id="TabLeap">
<Group id="Leap.Group1">
<Label resid="Leap.Group1Label" />
<Control xsi:type="Button" id="Leap.DefaultCommand">
<Label resid="Leap.DefaultCommand.Label" />
<Supertip>
<Title resid="Leap.DefaultCommand.Label" />
<Description resid="Leap.DefaultCommand.Tooltip" />
</Supertip>
<Icon>
<bt:Image size="16" resid="Leap.Icon.16" />
<bt:Image size="32" resid="Leap.Icon.32" />
<bt:Image size="80" resid="Leap.Icon.80" />
<bt:Image size="20" resid="Leap.Icon.20" />
<bt:Image size="24" resid="Leap.Icon.24" />
<bt:Image size="40" resid="Leap.Icon.40" />
<bt:Image size="48" resid="Leap.Icon.48" />
<bt:Image size="64" resid="Leap.Icon.64" />
</Icon>
<Action xsi:type="ShowTaskpane">
<SourceLocation resid="Leap.Taskpane.Url" />
</Action>
</Control>
</Group>
<Label resid="Leap.TabLabel"/>
</CustomTab>
</ExtensionPoint>
<!-- Go to http://aka.ms/ExtensionPointsCommands to learn how to add more Extension Points: MessageRead, AppointmentOrganizer, AppointmentAttendee -->
</DesktopFormFactor>
</Host>
</Hosts>
<Resources>
<bt:Images>
<bt:Image id="Leap.Icon.16" DefaultValue="https://outlookapp.leap365.com/images/icon-16.png"/>
<bt:Image id="Leap.Icon.32" DefaultValue="https://outlookapp.leap365.com/images/icon-32.png"/>
<bt:Image id="Leap.Icon.80" DefaultValue="https://outlookapp.leap365.com/images/icon-80.png"/>
<bt:Image id="Leap.Icon.20" DefaultValue="https://outlookapp.leap365.com/images/icon-20.png" />
<bt:Image id="Leap.Icon.24" DefaultValue="https://outlookapp.leap365.com/images/icon-24.png" />
<bt:Image id="Leap.Icon.25" DefaultValue="https://outlookapp.leap365.com/images/icon-25.png" />
<bt:Image id="Leap.Icon.40" DefaultValue="https://outlookapp.leap365.com/images/icon-40.png" />
<bt:Image id="Leap.Icon.48" DefaultValue="https://outlookapp.leap365.com/images/icon-48.png" />
<bt:Image id="Leap.Icon.64" DefaultValue="https://outlookapp.leap365.com/images/icon-64.png" />
</bt:Images>
<bt:Urls>
<bt:Url id="Leap.Taskpane.Url" DefaultValue="https://outlookapp.leap365.com/index.html" />
<bt:Url id="Leap.Functions.Url" DefaultValue="https://outlookapp.leap365.com/functions.html" />
</bt:Urls>
<bt:ShortStrings>
<bt:String id="Leap.TabLabel" DefaultValue="LEAP Mail Manager" />
<bt:String id="Leap.Group1Label" DefaultValue="LEAP" />
<bt:String id="Leap.DefaultCommand.Label" DefaultValue="LEAP Mail Manager" />
<bt:String id="Leap.DefaultCommand.Title" DefaultValue="LEAP Mail Manager" />
</bt:ShortStrings>
<bt:LongStrings>
<bt:String id="Leap.DefaultCommand.Tooltip" DefaultValue="Click to show the add-in." />
<bt:String id="Leap.Description" DefaultValue="Save your mail to LEAP." />
</bt:LongStrings>
</Resources>
<!-- NOTE: TO SUPPORT A PINNABLE TASKPANE AND MOBILEFORMFACTOR -->
<VersionOverrides
xmlns="http://schemas.microsoft.com/office/mailappversionoverrides/1.1" xsi:type="VersionOverridesV1_1">
<Requirements>
<bt:Sets DefaultMinVersion="1.5">
<bt:Set Name="Mailbox" MinVersion="1.5" />
</bt:Sets>
</Requirements>
<Hosts>
<Host xsi:type="MailHost">
<DesktopFormFactor>
<FunctionFile resid="Leap.Functions.Url" />
<!-- Message Read -->
<ExtensionPoint xsi:type="MessageReadCommandSurface">
<CustomTab id="TabLeap">
<Group id="Leap.Group1">
<Label resid="Leap.Group1Label" />
<Control xsi:type="Button" id="Leap.DefaultCommand">
<Label resid="Leap.DefaultCommand.Label" />
<Supertip>
<Title resid="Leap.DefaultCommand.Label" />
<Description resid="Leap.DefaultCommand.Tooltip" />
</Supertip>
<Icon>
<bt:Image size="16" resid="Leap.Icon.16" />
<bt:Image size="32" resid="Leap.Icon.32" />
<bt:Image size="80" resid="Leap.Icon.80" />
<bt:Image size="20" resid="Leap.Icon.20" />
<bt:Image size="24" resid="Leap.Icon.24" />
<bt:Image size="40" resid="Leap.Icon.40" />
<bt:Image size="48" resid="Leap.Icon.48" />
<bt:Image size="64" resid="Leap.Icon.64" />
</Icon>
<Action xsi:type="ShowTaskpane">
<SourceLocation resid="Leap.Taskpane.Url" />
<SupportsPinning>true</SupportsPinning>
</Action>
</Control>
<!-- Go to http://aka.ms/ButtonCommands to learn how to add more Controls: ExecuteFunction and Menu -->
</Group>
<Label resid="Leap.TabLabel"/>
</CustomTab>
</ExtensionPoint>
<!-- Go to http://aka.ms/ExtensionPointsCommands to learn how to add more Extension Points: MessageRead, AppointmentOrganizer, AppointmentAttendee -->
</DesktopFormFactor>
<!-- See https://learn.microsoft.com/en-us/outlook/add-ins/add-mobile-support -->
<MobileFormFactor>
<FunctionFile resid="Leap.Functions.Url" />
<ExtensionPoint xsi:type="MobileMessageReadCommandSurface">
<Group id="Leap.Group1">
<Label resid="Leap.Group1Label" />
<Control xsi:type="MobileButton" id="Leap.DefaultCommand">
<Label resid="Leap.DefaultCommand.Label" />
<Icon xsi:type="bt:MobileIconList">
<bt:Image size="25" scale="1" resid="Leap.Icon.25" />
<bt:Image size="25" scale="2" resid="Leap.Icon.25" />
<bt:Image size="25" scale="3" resid="Leap.Icon.25" />
<bt:Image size="32" scale="1" resid="Leap.Icon.32" />
<bt:Image size="32" scale="2" resid="Leap.Icon.32" />
<bt:Image size="32" scale="3" resid="Leap.Icon.32" />
<bt:Image size="48" scale="1" resid="Leap.Icon.48" />
<bt:Image size="48" scale="2" resid="Leap.Icon.48" />
<bt:Image size="48" scale="3" resid="Leap.Icon.48" />
</Icon>
<Action xsi:type="ShowTaskpane">
<SourceLocation resid="Leap.Taskpane.Url" />
</Action>
</Control>
</Group>
</ExtensionPoint>
</MobileFormFactor>
</Host>
</Hosts>
<Resources>
<bt:Images>
<bt:Image id="Leap.Icon.16" DefaultValue="https://outlookapp.leap365.com/images/icon-16.png"/>
<bt:Image id="Leap.Icon.32" DefaultValue="https://outlookapp.leap365.com/images/icon-32.png"/>
<bt:Image id="Leap.Icon.80" DefaultValue="https://outlookapp.leap365.com/images/icon-80.png"/>
<bt:Image id="Leap.Icon.20" DefaultValue="https://outlookapp.leap365.com/images/icon-20.png" />
<bt:Image id="Leap.Icon.24" DefaultValue="https://outlookapp.leap365.com/images/icon-24.png" />
<bt:Image id="Leap.Icon.25" DefaultValue="https://outlookapp.leap365.com/images/icon-25.png" />
<bt:Image id="Leap.Icon.40" DefaultValue="https://outlookapp.leap365.com/images/icon-40.png" />
<bt:Image id="Leap.Icon.48" DefaultValue="https://outlookapp.leap365.com/images/icon-48.png" />
<bt:Image id="Leap.Icon.64" DefaultValue="https://outlookapp.leap365.com/images/icon-64.png" />
</bt:Images>
<bt:Urls>
<bt:Url id="Leap.Taskpane.Url" DefaultValue="https://outlookapp.leap365.com/index.html" />
<bt:Url id="Leap.Functions.Url" DefaultValue="https://outlookapp.leap365.com/functions.html" />
</bt:Urls>
<bt:ShortStrings>
<bt:String id="Leap.TabLabel" DefaultValue="LEAP Mail Manager" />
<bt:String id="Leap.Group1Label" DefaultValue="LEAP" />
<bt:String id="Leap.DefaultCommand.Label" DefaultValue="LEAP Mail Manager" />
<bt:String id="Leap.DefaultCommand.Title" DefaultValue="LEAP Mail Manager" />
</bt:ShortStrings>
<bt:LongStrings>
<bt:String id="Leap.DefaultCommand.Tooltip" DefaultValue="Click to show the add-in." />
<bt:String id="Leap.Description" DefaultValue="Save your mail to LEAP." />
</bt:LongStrings>
</Resources>
</VersionOverrides>
</VersionOverrides>
</OfficeApp>
Here is the validate-office-addin result for the above add-in manifest:
Calling validation service. This might take a moment...
-------------------------------------
Validation: Passed
Based on the requirements specified in your manifest, your add-in can run on the following platforms; your add-in will be tested on these platforms when you submit it to the Office Store:
- Outlook 2013 Service Pack 1 or later
- Outlook 2016 or later
- Outlook on the Web
- Outlook 2016 for Mac
- Outlook for iOS
- Outlook for Android
Important: This analysis is based on the requirements specified in your manifest and does not account for any runtime JavaScript calls within your add-in. For information about which API sets and features are supported on each platform, see Office Add-in host and platfo
rm availability. (https://dev.office.com/add-in-availability).
*This does not include mobile apps. You can opt-in to support mobile apps when you submit your add-in.
-------------------------------------
However, the validation report from Microsoft says:
Your add-in is not working in Outlook 2016, Outlook 2013, Outlook for Mac,
the Outlook app on iOS or in the Outlook app on Android. Your add-in is not
available to be inserted in the above platforms. If you do not support 2013
SP1 because you are using an API only available in 2016/Online, you must put
these apis in the requirements tag in your manifest. If you are not using an
API only available in 2016/Online, then you must support 2013 SP1.
I have side-loaded the add-in from OWA.
I can see the add-in on:
Outlook 2016 or later (Windows)
Outlook on the Web (OWA)
I have yet to test if the add-in appears on Outlook 2016 for Mac.
For the life of me I can't seem to get the add-in to show up on:
Outlook 2013 Service Pack 1 or later
Outlook for iOS
Outlook for Android
I don't understand why. Am I missing something in the manifest? Have I perhaps misconfigured the manifest? Please help.
Support for Outlook mobile is added by defining the MobileFormFactor element in VersionOverridesV1_1. See here for more information on MobileFormFactor
Mailbox 1.5 is not supported in Outlook 2013 ( see here for availability information) For your add-in to appear in Outlook 2013, you need to use Mailbox 1.4 or lower
Adding some detail to the Add-in and Store team's responses.
The Outlook 2013 problem stems from two conflicting rules that Outlook is following:
You've declared your minimum mailbox version of 1.3 in the core manifest.
You've also declared a VersionOverridesV1_0 section with a minimum version of 1.5
The validation tool is declaring support for Outlook 2013 Service Pack 1 or later because (as the Store team mentioned), this version of Outlook supports 1.3.
Outlook 2013 Service Pack 1 or later also supports Add-in Commands via VersionOverridesV1_0. As soon as Outlook sees you have a Add-in Commands declared, it will pivot to using add-in commands. However, since these are defined as requiring 1.5 Outlook 2013 is unable to render them.
In order for your Add-in Commands to show up in Outlook 2013, you need to make sure the minimum version you're requiring within VersionOverridesV1_0 is 1.4 or lower (note that VersionOverridesV1_1 should remain at 1.5).
I'm currently developing an add-in for Outlook, I followed the basic steps in creating an add in, but whenever I run (the unedited pre-generated) project, I get the following error:
This add-in could not be started. Close this dialog to ignore the problem or click "Restart" to try again.
I first thought this might be related to Visual Studio ISS's HTTPS certificates, but after installing those (and testing that they work in Chrome). I also changed the logo to see if that had any effect but it keeps showing the default image.
Does anyone know what I'm doing wrong? This is my current manifest:
<?xml version="1.0" encoding="UTF-8"?>
<!--Created:ce44715c-8c4e-446b-879c-ea9ebe0f09c8-->
<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:mailappor="http://schemas.microsoft.com/office/mailappversionoverrides/1.0"
xsi:type="MailApp">
<!-- 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>d2240a8c-b832-493e-8056-5a14ca48a3f3</Id>
<!--Version. Updates from the store only get triggered if there is a version change. -->
<Version>1.0.0.0</Version>
<ProviderName>DearBytes B.V.</ProviderName>
<DefaultLocale>nl-NL</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="Test" />
<Description DefaultValue="Test"/>
<IconUrl DefaultValue="~remoteAppUrl/Images/icon64.png"/>
<SupportUrl DefaultValue="https://www.test.com/" />
<!-- 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>*.test.com</AppDomain>
<AppDomain>*.test.nl</AppDomain>
</AppDomains>
<!--End Basic Settings. -->
<Hosts>
<Host Name="Mailbox" />
</Hosts>
<Requirements>
<Sets>
<Set Name="Mailbox" MinVersion="1.1" />
</Sets>
</Requirements>
<FormSettings>
<Form xsi:type="ItemRead">
<DesktopSettings>
<SourceLocation DefaultValue="~remoteAppUrl/MessageRead.html"/>
<RequestedHeight>250</RequestedHeight>
</DesktopSettings>
</Form>
</FormSettings>
<Permissions>ReadWriteItem</Permissions>
<Rule xsi:type="RuleCollection" Mode="Or">
<Rule xsi:type="ItemIs" ItemType="Message" FormType="Read" />
</Rule>
<DisableEntityHighlighting>false</DisableEntityHighlighting>
<VersionOverrides xmlns="http://schemas.microsoft.com/office/mailappversionoverrides" xsi:type="VersionOverridesV1_0">
<Requirements>
<bt:Sets DefaultMinVersion="1.3">
<bt:Set Name="Mailbox" />
</bt:Sets>
</Requirements>
<Hosts>
<Host xsi:type="MailHost">
<DesktopFormFactor>
<!-- Location of the Functions that UI-less buttons can trigger (ExecuteFunction Actions). -->
<FunctionFile resid="functionFile" />
<!-- Message Read -->
<ExtensionPoint xsi:type="MessageReadCommandSurface">
<!-- Use the default tab of the ExtensionPoint or create your own with <CustomTab id="myTab"> -->
<OfficeTab id="TabDefault">
<!-- Up to 6 Groups added per Tab -->
<Group id="msgReadGroup">
<Label resid="groupLabel" />
<!-- Launch the add-in : task pane button -->
<Control xsi:type="Button" id="msgReadOpenPaneButton">
<Label resid="paneReadButtonLabel" />
<Supertip>
<Title resid="paneReadSuperTipTitle" />
<Description resid="paneReadSuperTipDescription" />
</Supertip>
<Icon>
<bt:Image size="16" resid="icon16" />
<bt:Image size="32" resid="icon32" />
<bt:Image size="80" resid="icon80" />
</Icon>
<Action xsi:type="ShowTaskpane">
<SourceLocation resid="messageReadTaskPaneUrl" />
</Action>
</Control>
<!-- Go to http://aka.ms/ButtonCommands to learn how to add more Controls: ExecuteFunction and Menu -->
</Group>
</OfficeTab>
</ExtensionPoint>
<!-- Go to http://aka.ms/ExtensionPointsCommands to learn how to add more Extension Points: MessageRead, AppointmentOrganizer, AppointmentAttendee -->
</DesktopFormFactor>
</Host>
</Hosts>
<Resources>
<bt:Images>
<bt:Image id="icon16" DefaultValue="~remoteAppUrl/Images/icon16.png"/>
<bt:Image id="icon32" DefaultValue="~remoteAppUrl/Images/icon32.png"/>
<bt:Image id="icon80" DefaultValue="~remoteAppUrl/Images/icon80.png"/>
<bt:Image id="icon128" DefaultValue="~remoteAppUrl/Images/icon128.png"/>
</bt:Images>
<bt:Urls>
<bt:Url id="functionFile" DefaultValue="~remoteAppUrl/Functions/FunctionFile.html"/>
<bt:Url id="messageReadTaskPaneUrl" DefaultValue="~remoteAppUrl/MessageRead.html"/>
</bt:Urls>
<bt:ShortStrings>
<bt:String id="groupLabel" DefaultValue="Test"/>
<bt:String id="paneReadButtonLabel" DefaultValue="Test"/>
<bt:String id="paneReadSuperTipTitle" DefaultValue="Test"/>
</bt:ShortStrings>
<bt:LongStrings>
<bt:String id="paneReadSuperTipDescription" DefaultValue="Test"/>
</bt:LongStrings>
</Resources>
</VersionOverrides>
</OfficeApp>
Screenshot of the error:
The most likely cause of this error is a timeout. Your add-in has 5 seconds to execute the Office.initialize method before Outlook tosses up an error.
Generally when this happens, it is because you're not referencing the office.js library in the <head> or your not executing Office.initialize until after the DOM is loaded.
You can find details on referencing office.js # Understanding the JavaScript API for Office
In the XML manifest file that you posted, there are 9 occurrences of ~remoteAppUrl. If you haven't already done so, you should replace each occurrence of ~remoteAppUrl with the HTTPS URL that represents where the add-in's (web app) files are deployed.
Also, as #Slava Ivanov mentioned in the comment above -- I believe each AppDomain value should be a URI that includes the protocol (ex: https://www.test.com).