如何在Outlook COM/VSTO和Office JS加载项之间共享用户漫游设置

如何在Outlook COM/VSTO和Office JS加载项之间共享用户漫游设置,outlook,ms-office,vsto,office365,outlook-addin,Outlook,Ms Office,Vsto,Office365,Outlook Addin,是否可以在COM/VSTO Outlook和Office JS加载项之间共享用户的漫游设置和首选项?Scope 以下文章介绍了开发人员在COM/VSTO Outlook外接程序和Office JS外接程序之间搭建桥梁的方法,以共享用户的漫游设置和首选项 介绍 有很多公司通过COM/VSTO Outlook插件为客户提供reach体验,Outlook 2000至最新版本的支持对他们来说是正常的。随着Microsoft Office Store的成熟和Office JS插件背后的技术,越来越多的公司

是否可以在COM/VSTO Outlook和Office JS加载项之间共享用户的漫游设置和首选项?

Scope 以下文章介绍了开发人员在COM/VSTO Outlook外接程序和Office JS外接程序之间搭建桥梁的方法,以共享用户的漫游设置和首选项

介绍 有很多公司通过COM/VSTO Outlook插件为客户提供reach体验,Outlook 2000至最新版本的支持对他们来说是正常的。随着Microsoft Office Store的成熟和Office JS插件背后的技术,越来越多的公司希望使用Office JS API实现其现有解决方案。能够在Office工作的环境中编写一次并轻松分发应用程序是非常有吸引力的一点。但是,那些仍然使用旧的可靠的Office 2010甚至更旧版本的客户呢。您可能会说:“让他们使用我们的旧COM插件,不要回头看”。在该客户开始使用Outlook for Web并意识到您已经为此环境创建了外接程序之前,这一点可能是有效的。伟大的开始使用它…但请稍候,当使用Outlook桌面解决方案时,我在工作场所设置的设置和首选项在哪里?如果我想改变我的偏好呢?现在我必须做两次?开发人员会说:“继续使用我们的新解决方案,忘掉旧的COM。”。但是,用户可能有一个原因,为什么他们在工作时使用旧的Outlook版本和COM加载项,而在远程使用OWA和新的Office JS加载项(在出差、在家工作等期间)。读者现在可能已经明白我的意思了。作为开发人员,您可能希望通过在全新闪亮的Office JS加载项以及旧的、可靠且功能齐全的COM/VSTO解决方案之间共享首选项,简化这些客户的生活。那么,让我们看看如何做到这一点

Office JS加载项漫游设置 从需求集1.0开始,Office JS API对象引入了四种方法,可以通过用户设置进行操作。您可以设置、获取和删除{String | Number | Boolean | Object | Array}的用户设置/属性类型的任何自定义值。此对象保留每个用户邮箱的设置,并可从任何位置、设备等供Office JS加载项使用。真正的漫游可以保留用户的首选项和设置,不是吗?请注意:您不应使用此对象保存敏感信息,如用户凭据或安全令牌。以下示例演示对象的用法:

// Get the current value of the 'myKey' setting
var value = Office.context.roamingSettings.get('myKey');
// Update the value of the 'myKey' setting
Office.context.roamingSettings.set('myKey', 'Hello World!');
// Persist the change
Office.context.roamingSettings.saveAsync();
COM/VSTO桌面Outlook加载项 让我们回到COM/VSTO解决方案。有一个预请求:要处理存储在用户邮箱中的设置,开发人员需要知道Office JS加载项ID,因为每个加载项和每个用户都存储了这些设置。好的,你会知道的,因为这是你/你公司的插件。我们正在查找的设置存储在中,该设置存储在收件箱文件夹的中,可以使用界面进行访问。哇,这是整篇文章的关键句子,需要详细解释。
首先,您需要枚举关联内容表中的所有消息,并找到类为“IPM.Configuration.ClientExtension.00000000000000000000”的消息,其中零必须是Office JS加载项的ID。



选择消息时,您需要获取“PR\u ROAMING\u DICTIONARY”属性。


此属性将包含在上面示例中使用Office JS加载项时存储为漫游设置的序列化数据:

<?xml version="1.0" encoding="utf-8"?>
<UserConfiguration>
    <Info version="Exchange.12" />
    <Data>
        <e k="18-ExtensionSettings" v="18-{"myKey":"\"Hello World!\""}" />
    </Data>
</UserConfiguration>

您的COM/VSTO加载项将能够通过简单的解析读取和修改这些设置。您可能还想公开COM加载项用户设置。通常,开发人员将这些设置保存在HKCU Windows注册表中,以每个用户邮箱访问漫游世界。这样做的好处不仅在于Office JS外接程序之间的功能,还在于每个用户邮箱的外接程序的一组独立设置。从桌面Outlook创建的这些设置使用不同的信息版本时,例如:

<Info version="Outlook.16"/>

结论 作为本主题的最后一点说明,我想举例说明来自同一提供商的应用程序的共享设置的简单示例,其中COM和Office JS加载项共享用户设置。


工具书类

  • 谢谢斯拉瓦!我很高兴我偶然发现了这一点——我想知道这些东西存放在哪里,我用OutlookSpy到处寻找。Eric,我的故事是从我对“CustomProperties”Office.js API对象感到好奇时开始的。我想了解这些属性是如何保存的,以及是否可以将它们转换为传输x头。OutlookSpy会在IMessage对象中显示这些自定义属性,这不是火箭科学。它们是带有外接程序Id的沙盒。长话短说,我最终没有使用它们,因为没有办法将它们翻译成x-Header。但这让我想到了“漫游设置”对象存储在哪里的问题,经过一段时间的思考,我找到了一条路,我想与大家分享;)基本上,这是我在MSDN上问的最初问题:我很高兴你没有在MS海报上说这是不可能的之后放弃。他只是在看Outlook对象模型,这是“失败”的第一点。通过使用Redemption和OutlookSpy与MAPI道具一起工作,您可以做很多事情,也可以隐藏很多数据。我们都知道,但很多人不知道。