How to show addin in Outlook when composing mail?

1.5k views Asked by At

I used office-generator to scaffold out an Outlook addin and it seems to show up and run when mail opened in read mode but its not showing up in the addins section when a new mail is being composed. I wanted to show the addin to show up in compose mode and once clicked open the addin in pane.

Following is the generated manifest.xml:

<?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" xsi:type="MailApp" xmlns:bt="http://schemas.microsoft.com/office/officeappbasictypes/1.0">
  <Id>f1a2f021-ef67-4e8f-a08c-e24700c36c3d</Id>
  <Version>1.0.0.0</Version>
  <ProviderName>[Provider name]</ProviderName>
  <DefaultLocale>en-US</DefaultLocale>
  <DisplayName DefaultValue="Test"/>
  <Description DefaultValue="[Outlook Add-in description]"/>
  <IconUrl DefaultValue="https://localhost:8443/images/icon-32.png"/>
  <HighResolutionIconUrl DefaultValue="https://localhost:8443/images/hi-res-icon.png"/>
  <Hosts>
    <Host Name="Mailbox"/>
  </Hosts>
  <Requirements>
    <Sets>
      <Set Name="MailBox" MinVersion="1.1"/>
    </Sets>
  </Requirements>
  <FormSettings>
    <Form xsi:type="ItemRead">
      <DesktopSettings>
        <SourceLocation DefaultValue="https://localhost:8443/appread/home/home.html"/>
        <RequestedHeight>250</RequestedHeight>
      </DesktopSettings>
    </Form>
    <Form xsi:type="ItemEdit">
      <DesktopSettings>
        <SourceLocation DefaultValue="https://localhost:8443/appcompose/home/home.html"/>
      </DesktopSettings>
    </Form>
  </FormSettings>
  <Permissions>ReadWriteItem</Permissions>
  <Rule xsi:type="RuleCollection" Mode="Or">
    <Rule xsi:type="ItemIs" ItemType="Message" FormType="Edit" />
    <Rule xsi:type="ItemIs" ItemType="Message" FormType="Read"/>
    <Rule xsi:type="ItemIs" ItemType="Appointment" FormType="Edit"/>
    <Rule xsi:type="ItemIs" ItemType="Appointment" 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">
            <OfficeTab id="TabDefault">
              <Group id="msgReadCmdGroup">
                <Label resid="groupLabel"/>
                <Control xsi:type="Button" id="msgReadPaneButton">
                  <Label resid="msgReadPaneButtonLabel"/>
                  <Supertip>
                    <Title resid="msgReadPaneButtonTitle"/>
                    <Description resid="msgReadPaneButtonDesc"/>
                  </Supertip>
                  <Icon>
                    <bt:Image size="16" resid="icon-16"/>
                    <bt:Image size="32" resid="icon-32"/>
                    <bt:Image size="80" resid="icon-80"/>
                  </Icon>
                  <Action xsi:type="ShowTaskpane">
                    <SourceLocation resid="readPaneUrl"/>
                  </Action>
                </Control>
              </Group>
            </OfficeTab>
          </ExtensionPoint>
          <ExtensionPoint xsi:type="AppointmentAttendeeCommandSurface">
            <OfficeTab id="TabDefault">
              <Group id="attendeeCmdGroup">
                <Label resid="groupLabel"/>
                <Control xsi:type="Button" id="attendeePaneButton">
                  <Label resid="attendeePaneButtonLabel"/>
                  <Supertip>
                    <Title resid="attendeePaneButtonTitle"/>
                    <Description resid="attendeePaneButtonDesc"/>
                  </Supertip>
                  <Icon>
                    <bt:Image size="16" resid="icon-16"/>
                    <bt:Image size="32" resid="icon-32"/>
                    <bt:Image size="80" resid="icon-80"/>
                  </Icon>
                  <Action xsi:type="ShowTaskpane">
                    <SourceLocation resid="readPaneUrl"/>
                  </Action>
                </Control>
              </Group>
            </OfficeTab>
          </ExtensionPoint>
          <ExtensionPoint xsi:type="AppointmentOrganizerCommandSurface">
            <OfficeTab id="TabDefault">
              <Group id="organizerCmdGroup">
                <Label resid="groupLabel"/>
                <Control xsi:type="Button" id="organizerGetSubject">
                  <Label resid="getSubjectLabel"/>
                  <Supertip>
                    <Title resid="getSubjectTitle"/>
                    <Description resid="getSubjectDesc"/>
                  </Supertip>
                  <Icon>
                    <bt:Image size="16" resid="icon-16"/>
                    <bt:Image size="32" resid="icon-32"/>
                    <bt:Image size="80" resid="icon-80"/>
                  </Icon>
                  <Action xsi:type="ExecuteFunction">
                    <FunctionName>getSubject</FunctionName>
                  </Action>
                </Control>
                <Control xsi:type="Menu" id="organizerMenu">
                  <Label resid="menuLabel"/>
                  <Supertip>
                    <Title resid="menuTitle"/>
                    <Description resid="menuDescription"/>
                  </Supertip>
                  <Icon>
                    <bt:Image size="16" resid="icon-16"/>
                    <bt:Image size="32" resid="icon-32"/>
                    <bt:Image size="80" resid="icon-80"/>
                  </Icon>
                  <Items>
                    <Item id="organizerSetSubject">
                      <Label resid="setSubjectLabel"/>
                      <Supertip>
                        <Title resid="setSubjectTitle"/>
                        <Description resid="setSubjectDesc"/>
                      </Supertip>
                      <Icon>
                        <bt:Image size="16" resid="icon-16"/>
                        <bt:Image size="32" resid="icon-32"/>
                        <bt:Image size="80" resid="icon-80"/>
                      </Icon>
                      <Action xsi:type="ExecuteFunction">
                        <FunctionName>setSubject</FunctionName>
                      </Action>
                    </Item>
                    <Item id="organizerAddRecip">
                      <Label resid="addRecipLabel"/>
                      <Supertip>
                        <Title resid="addRecipTitle"/>
                        <Description resid="addRecipDesc"/>
                      </Supertip>
                      <Icon>
                        <bt:Image size="16" resid="icon-16"/>
                        <bt:Image size="32" resid="icon-32"/>
                        <bt:Image size="80" resid="icon-80"/>
                      </Icon>
                      <Action xsi:type="ExecuteFunction">
                        <FunctionName>addToRecipients</FunctionName>
                      </Action>
                    </Item>
                  </Items>
                </Control>
              </Group>
            </OfficeTab>
          </ExtensionPoint>
        </DesktopFormFactor>
      </Host>
    </Hosts>
    <Resources>
      <bt:Images>
        <bt:Image id="icon-16" DefaultValue="https://localhost:8443/images/icon-16.png"/>
        <bt:Image id="icon-32" DefaultValue="https://localhost:8443/images/icon-32.png"/>
        <bt:Image id="icon-80" DefaultValue="https://localhost:8443/images/icon-80.png"/>
      </bt:Images>
      <bt:Urls>
        <bt:Url id="funcFile" DefaultValue="https://localhost:8443/FunctionFile/Functions.html"/>
        <bt:Url id="readPaneUrl" DefaultValue="https://localhost:8443/appread/home/home.html"/>
      </bt:Urls>
      <bt:ShortStrings>
        <bt:String id="groupLabel" DefaultValue="Sample Add-in"/>
        <bt:String id="msgReadPaneButtonLabel" DefaultValue="See message details"/>
        <bt:String id="msgReadPaneButtonTitle" DefaultValue="See message details"/>
        <bt:String id="attendeePaneButtonLabel" DefaultValue="See appointment details"/>
        <bt:String id="attendeePaneButtonTitle" DefaultValue="See appointment details"/>
        <bt:String id="setSubjectLabel" DefaultValue="Set subject"/>
        <bt:String id="setSubjectTitle" DefaultValue="Set subject"/>
        <bt:String id="getSubjectLabel" DefaultValue="Get subject"/>
        <bt:String id="getSubjectTitle" DefaultValue="Get subject"/>
        <bt:String id="addRecipLabel" DefaultValue="Add recipient"/>
        <bt:String id="addRecipTitle" DefaultValue="Add recipient"/>
        <bt:String id="menuLabel" DefaultValue="Modify message"/>
        <bt:String id="menuTitle" DefaultValue="Modify message"/>
      </bt:ShortStrings>
      <bt:LongStrings>
        <bt:String id="msgReadPaneButtonDesc" DefaultValue="Opens a task pane showing the subject and sender of the currently selected message"/>
        <bt:String id="attendeePaneButtonDesc" DefaultValue="Opens a task pane showing the subject and sender of the currently selected appointment"/>
        <bt:String id="setSubjectDesc" DefaultValue="Sets the subject to 'Hello World!'"/>
        <bt:String id="getSubjectDesc" DefaultValue="Gets the current subject and displays it in the info bar"/>
        <bt:String id="addRecipDesc" DefaultValue="Add yourself to the recipient list (the To line for messages, the Required attendees line for appointments)"/>
        <bt:String id="menuDescription" DefaultValue="Expand this menu to set this subject or add yourself to the To line."/>
      </bt:LongStrings>
    </Resources>
  </VersionOverrides>
</OfficeApp>
1

There are 1 answers

2
Marc LaFleur On BEST ANSWER

This is handled in the VersionOverides section. In the manifest you included, you'll notice an ExentionPoint defined as <ExtensionPoint xsi:type="MessageReadCommandSurface">. This defines an extension point for Message Reading.

To enable the add-in during Compose you'll need to add an ExtentionPoint for MessageComposeCommandSurface.

If you would like to only show during Compose, simply remove the MessageReadCommandSurface section. The same applies to AppointmentAttendeeCommandSurface (reading appointments you were invited to) and AppointmentOrganizerCommandSurface (reading appointments you created).