我们是Microsoft合作伙伴(尽管我们从未从中获得任何价值)。我们有台式办公室VSTO插件,用于对出售给政府的文档进行分类,但由于他们的365云推入,该文档已迁移到在线文档。清单生成过程非常烦人。先前工作的清单会任意停止工作。我们发现坦率地说Office 365外接程序开发过程令人失望。处理这个堆栈就像是一个冷漠和不适的黑洞。它使我想起了在2000年尝试在服务器上编译我的C程序并收到奥术错误并且不知道出了什么问题的方法。如果我负责的话,我建议我们的管理层丢掉这堆钱,再找其他东西卖,因为这不值得头疼。我们正在与多个开发人员和质量检查人员共同努力,以弄清为什么一小段xml无法正常工作。
我们查看了yeoman生成器的输出,并试图将其与我们自己的输出进行比较,但是并没有太大的区别。我们不断收到1300X随机错误(该错误取决于我们所在的租户)。看完这里的代码https://github.com/OfficeDev/Office-Addin-Scripts之后,我不禁嘲笑您的愚蠢。您错误地选择了代码的配置(清单)。然后,您进行了一堆手工编码的xml处理,而不是创建一个通用的基于XSD的模式编辑工具(显然以前存在,但现在不存在)。
说。我知道您正在将内部关注点导出到平台用户,但是我需要出售软件,但是当我无法部署插件时我们就无法做到这一点,因此我们可以对其进行测试。手动插入进行调试时,清单起作用,但部署时则不起作用。有什么用?
有人能告诉我这种观点表现出什么问题吗?为什么不部署?
<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>Banana_CLASSIFIER_MANIFEST_GUID</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>Banana_CLASSIFIER_AZURE_APPLICATION_ID</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>
我在上方将您的清单安装到了一个交换帐户,它报告ID无效,并且资源必须位于您的基本URL(fruitsolutions)之下。我纠正了这些错误(使用虚拟值),然后将其上载到帐户,并将按钮加载到Outlook。我想,这些只是占位符在您身上吗?替换这些错误后是否看到其他错误?
<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://www.Fruitsolutions.com/assets/Banana_16.png" />
<bt:Image id="Fruit.tpicon_32x32" DefaultValue="https://www.Fruitsolutions.com/assets/Banana_32.png" />
<bt:Image id="Fruit.tpicon_80x80" DefaultValue="https://www.Fruitsolutions.com/assets/Banana_80.png" />
</bt:Images>
<bt:Urls>
<bt:Url id="Fruit.Taskpane.Url" DefaultValue="https://www.Fruitsolutions.com/index.html" />
<bt:Url id="Fruit.GetStarted.LearnMoreUrl" DefaultValue="https://www.Fruitsolutions.com/" />
<bt:Url id="Fruit.DesktopFunctionFile.Url" DefaultValue="https://www.Fruitsolutions.com/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>https://www.Fruitsolutions.com/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>