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

时间:2016-11-30 19:38:59

标签: outlook ms-office vsto office365 outlook-addin

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

1 个答案:

答案 0 :(得分:4)

范围

以下文章介绍了开发人员在COM / VSTO Outlook加载项和Office JS加载项之间建立桥梁以共享用户漫游设置和首选项的方法。

简介

有很多公司通过COM / VSTO Outlook加载项向客户提供多年的访问体验,而Outlook 2000到最新版本的支持对他们来说是正常的。随着Microsoft Office Store的成熟和Office JS Add-ins背后的技术,越来越多的公司希望使用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 RoamingSettings对象,其中有四种方法可以使用用户设置进行操作。您可以设置,获取和删除{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();

桌面Outlook的COM / VSTO加载项

让我们回到我们的COM / VSTO解决方案。有一个预先请求:处理存储在用户邮箱中的设置开发人员需要知道Office JS加载项ID,因为每个加载项和每个用户都存储RoamingSettings。嗯,你确实知道,因为这是你/你的公司加载项。我们要查找的设置存储在message property中,可以使用Associated contents table界面访问存储在收件箱文件夹的IMAPIFolder中的设置。哇,这是整个帖子的关键句子,需要详细解释 首先,您需要枚举关联内容表中的所有消息,并找到类为“IPM.Configuration.ClientExtension.00000000000000000000000000000000”的消息,其中零必须是您的Office JS加载项的ID。



选择消息后,您需要获取“PR_ROAMING_DICTIONARY”属性。


当我们在上面的示例中使用Office JS Add-in时,此属性将包含我们存储为漫游设置的序列化数据:

<?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加载项共享用户设置的同一提供商的应用程序共享设置的简单示例。


参考

  1. https://dev.outlook.com/reference/add-ins/RoamingSettings.html
  2. https://msdn.microsoft.com/en-us/library/office/cc842083.aspx
  3. https://msdn.microsoft.com/en-us/library/office/cc842374.aspx?f=255&MSPPError=-2147217396
  4. https://msdn.microsoft.com/en-us/library/office/cc842386.aspx