We are a Microsoft partner (although we've never had any value derived from it). We have desktop office VSTO addins for classifying documents that we sell to governments but moved to online given their 365 cloud push. The manifest generation process is very irritating. Manifests that previously worked stop working arbitrarily. We've found the office 365 addin development process disappointing to be frank. Dealing with this stack is like a black hole of apathy and malaise. It reminds me of trying to compile my C program on a server back in 2000 and getting arcane errors and not knowing what went wrong. If I was in charge I would advise our management to drop this stack and find something else to sell, because it's just not worth the headache. We're bleeding money with multiple devs and QA trying to figure out why a blob of xml isn't working.
We looked at the yeoman generator's output and tried to compare it to our own, but didn't see much difference. We keep getting random 1300X errors (that change depending on which tenant we're on). After looking at the code here https://github.com/OfficeDev/Office-Addin-Scripts I can't help but laugh at your folly. You wrongly chose configuration (the manifest) over code. Then you made a bunch of hand-coded xml handling instead of creating a general XSD-based schema editing tool (which apparently previously existed but now does not).
That said. I get that you're exporting your internal concerns onto platform users, but I need to sell software and I can't do that when I can't get our addin deployed so we can test it. Manifests work when inserted manually for debug, but not when deployed. What gives?
Can anybody tell me what's wrong with this outlook manifest? Why don't it deploy?
edit in response to comments: Please bear with me as I gather info from our IT people as I posted this on their behalf because they were frustrated but were also hesitant to post here due to previous bad experiences etc. The manifest had many issues. The errors were different for word vs outlook. Sometimes we would get validation errors with no information (even though the addin passed the validation tool). Other times it threw 13004 (if I remember correctly). I suspect the validation tools don't fully do URL checking until deployment. A missing help URL threw us as well. I will take the latest manifests we have and diff them with the sample i provided and compare that to the answer below. It appears as though they eventually got it working after a lot of trial and error...
<OfficeApp xmlns="http://schemas.microsoft.com/office/appforoffice/1.1" xmlns:bt="http://schemas.microsoft.com/office/officeappbasictypes/1.0" xmlns:mailappor="http://schemas.microsoft.com/office/mailappversionoverrides/1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="MailApp">
<Id>22222222-1111-1111-1111-11111111ABCD</Id>
<Version>1.0.0.0</Version>
<ProviderName>Banana</ProviderName>
<DefaultLocale>en-US</DefaultLocale>
<DisplayName DefaultValue="Banana Classifier">
<Override Locale="fr-CA" Value="Classifieur Banana" />
<Override Locale="fr-FR" Value="Classifieur Banana" />
</DisplayName>
<Description DefaultValue="Fruit Banana Classifier">
<Override Locale="fr-CA" Value="Classifieur Banana de Fruit" />
<Override Locale="fr-FR" Value="Classifieur Banana de Fruit" />
</Description>
<IconUrl DefaultValue="https://localhost:3000/assets/Banana_32.png" />
<HighResolutionIconUrl DefaultValue="https://localhost:3000/assets/Banana_80.png" />
<SupportUrl DefaultValue="https://www.Fruitsolutions.com/" />
<AppDomains>
<AppDomain>https://login.microsoftonline.com/</AppDomain>
<AppDomain>https://localhost:3000/</AppDomain>
<AppDomain>https://www.Fruitsolutions.com/</AppDomain>
</AppDomains>
<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:3000/index.html" />
<RequestedHeight>450</RequestedHeight>
</DesktopSettings>
</Form>
<Form xsi:type="ItemEdit">
<DesktopSettings>
<SourceLocation DefaultValue="https://localhost:3000/index.html" />
</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">
<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>
<FunctionFile resid="Fruit.DesktopFunctionFile.Url" />
<ExtensionPoint xsi:type="CustomPane">
<RequestedHeight>450</RequestedHeight>
<SourceLocation resid="Fruit.Taskpane.Url" />
<Rule xsi:type="RuleCollection" Mode="Or">
<Rule xsi:type="ItemIs" ItemType="Message" />
</Rule>
</ExtensionPoint>
<ExtensionPoint xsi:type="MessageReadCommandSurface">
<OfficeTab id="TabDefault">
<Group id="msgReadGroup">
<Label resid="Fruit.Group1Label" />
<Control xsi:type="Button" id="msgReadOpenPaneButton">
<Label resid="Fruit.TaskpaneButton.Label" />
<Supertip>
<Title resid="Fruit.TaskpaneButton.Label" />
<Description resid="Fruit.TaskpaneButton.Tooltip" />
</Supertip>
<Icon>
<bt:Image size="16" resid="Fruit.tpicon_16x16" />
<bt:Image size="32" resid="Fruit.tpicon_32x32" />
<bt:Image size="80" resid="Fruit.tpicon_80x80" />
</Icon>
<Action xsi:type="ShowTaskpane">
<SourceLocation resid="Fruit.Taskpane.Url" />
</Action>
</Control>
</Group>
</OfficeTab>
</ExtensionPoint>
</DesktopFormFactor>
</Host>
</Hosts>
<Resources>
<bt:Images>
<bt:Image id="Fruit.tpicon_16x16" DefaultValue="https://localhost:3000/assets/Banana_16.png" />
<bt:Image id="Fruit.tpicon_32x32" DefaultValue="https://localhost:3000/assets/Banana_32.png" />
<bt:Image id="Fruit.tpicon_80x80" DefaultValue="https://localhost:3000/assets/Banana_80.png" />
</bt:Images>
<bt:Urls>
<bt:Url id="Fruit.Taskpane.Url" DefaultValue="https://localhost:3000/index.html" />
<bt:Url id="Fruit.GetStarted.LearnMoreUrl" DefaultValue="https://www.Fruitsolutions.com/" />
<bt:Url id="Fruit.DesktopFunctionFile.Url" DefaultValue="https://localhost:3000/function-file/function-file.html" />
</bt:Urls>
<bt:ShortStrings>
<bt:String id="Fruit.TaskpaneButton.Label" DefaultValue="Banana Classifier">
<bt:Override Locale="fr-CA" Value="Classifieur Banana" />
<bt:Override Locale="fr-FR" Value="Classifieur Banana" />
</bt:String>
<bt:String id="Fruit.Group1Label" DefaultValue="Fruit">
<bt:Override Locale="fr-CA" Value="Fruit" />
<bt:Override Locale="fr-FR" Value="Fruit" />
</bt:String>
<bt:String id="Fruit.GetStarted.Title" DefaultValue="Fruit Banana Classifier">
<bt:Override Locale="fr-CA" Value="Classifieur Banana de Fruit" />
<bt:Override Locale="fr-FR" Value="Classifieur Banana de Fruit" />
</bt:String>
</bt:ShortStrings>
<bt:LongStrings>
<bt:String id="Fruit.TaskpaneButton.Tooltip" DefaultValue="Click to Show the Fruit Banana Classifier">
<bt:Override Locale="fr-CA" Value="Cliquer pour afficher le Classifieur Banana" />
<bt:Override Locale="fr-FR" Value="Cliquer pour afficher le Classifieur Banana" />
</bt:String>
<bt:String id="Fruit.GetStarted.Description" DefaultValue="The Fruit Banana Classifier Add-in loaded successfully. Click the 'Banana Classifier' button to get started.">
<bt:Override Locale="fr-CA" Value="Le complément Classifieur Banana a été chargé avec succès. Veuillez cliquer sur le bouton 'Classifieur Banana' pour débuter." />
<bt:Override Locale="fr-FR" Value="Le complément Classifieur Banana a été chargé avec succès. Veuillez cliquer sur le bouton 'Classifieur Banana' pour débuter." />
</bt:String>
</bt:LongStrings>
</Resources>
<WebApplicationInfo>
<Id>22222222-1111-1111-1111-11111111ABCD</Id>
<Resource>api://localhost:3000/Banana_CLASSIFIER_AZURE_APPLICATION_ID</Resource>
<Scopes>
<Scope>Files.ReadWrite.All</Scope>
<Scope>Mail.Read</Scope>
<Scope>Mail.ReadWrite</Scope>
<Scope>Mail.ReadWrite.Shared</Scope>
<Scope>offline_access</Scope>
<Scope>openid</Scope>
<Scope>profile</Scope>
<Scope>Sites.ReadWrite.All</Scope>
<Scope>User.Read</Scope>
</Scopes>
</WebApplicationInfo>
</VersionOverrides>
</VersionOverrides>
</OfficeApp>