• Outlook 2003 Add in 部署笔记


    在托管代码中通过VSTO可以很方便的创建Outlook 2003的Add in,但是部署相对于开发来说为我们带来的并非同样的便捷,以下将介绍Outlook 2003托管Add in的部署的步骤以及我在使用中遇到的一些问题及解决方案。

    其中大部分是来自于微软的在线视频,这里仅介绍部署部分,如果想要系统的学习,请访问微软网站以获取官方教学视频及PPT。

     

    1. 介绍一下托管Add in的工作原理。

    首先,我们需要明确一点,在Outlook 2003中,Outlook是不能直接加载托管代码编写的Add in的。这就注定,用托管代码编写的Add in必须通过其他的某个东西与Outlook交互。这个东西就是VSTO中所提供的AddinLoader.dll。

    Outlook 2003的Add in必须实现IDTExtensiblity2接口,这个接口在我们通过VSTO进行编程的时候基本上是不会接触到的,在运行时,AddinLoader.dll会将根据指定的托管Add in提供给Outlook 2003一个IDTExtensiblity2接口的对象。这样Outlook 2003就可以正确加载托管Add in了。

    AddinLoader.dll作为桥梁沟通了Outlook 2003和运行在VSTO Runtime中的托管Add in。

    同时,我们在创建Outlook外接程序项目后就可以发现,Add in项目的引用中包含Microsoft.Office.Interop.Outlook.dll这一项。在客户机器上,一般是不会存在这个文件的,这是Office PIA组件的一部分。

    1. 部署时的系统必备组件。

    作为系统必备组建,.Net Framework 2.0就不必细说了,托管嘛。

    当然,如果客户机上没有安装Outlook 2003的话,那就放弃吧……

    我们已经知道,AddinLoader.dll是托管Add in运行必备的部分,而AddinLoader.dll是VSTO Runtime的一部分。因此,VSTO Runtime也是系统必备组件之一。

    同时,为了是托管Add in正常工作,我们还需要为客户机安装Office PIA。

    最后,根据具体的运行环境,主要是系统语言,我们需要安装VSTO语言包。如果客户机是英文版Windows则可以忽略这个组件。

    1. 系统必备组件

    用过VS 2005做过安装程序的程序员都应该知道,VS 2005的安装程序项目可以提供系统必备组件的检查及安装,安装Outlook托管Add in所需的系统必备组件也可以通过此功能实现安装。

    在默认情况下,VS 2005中所提供的系统必备组件无法满足我们的需求,这就需要我们自己动手丰衣足食了。

    首先,下载三个组件的安装程序,VSTO RuntimeOffice PIAVSTO 语言包(可选)

    然后,下载并安装在VS 2005中使用的VSTO系统必备组件的支持文件:Deploying VSTO 2005 Solutions Using Windows Installer Sample

    • 编译{SamplesDir}\projects\Checks\ 下的AppCheck.cpp以及PIACheck.cpp

    cl.exe /Oxs /MT /GS AppCheck.cpp

    cl.exe -I "C:\Program Files\Microsoft Platform SDK\Include" /Oxs /MT

    /GS PIACheck.cpp "C:\Program Files\Microsoft Platform

    SDK\Lib\advapi32.lib"

    • 将AppCheck.exe和PIACheck.exe拷贝到{SamplesDir}\packages\Office2003PIA\ 下

    AppCheck.exe :检测Office 2003应用程序是否存在

    PIACheck.exe:检测Office 2003 PIA是否安装

    • 将下载的vstor.exe(VSTO Runtime)拷贝到{SamplesDir}\packages\VSTORuntime
    • 将下载的vstolp20.exe(VSTO语言包)拷贝到{SamplesDir}\packages\VSTOLP
    • 安装Office PIA将安装后的O2003PIA.msi 拷贝到{SamplesDir}\packages\Office2003PIA中
    • 将{SamplesDir}\packages\下的以上三个目录拷贝到{Bootstraper}\Packages下。{Bootstraper}的位置可以通过注册表HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework中sdkInstallRootv2.0的值来确定。

    做完以上的准备工作后,启动VS 2005,在安装项目中,我们就可以添加以上三个系统必备组件了。

    1. 注册表说明

    在VS 2005中创建的安装项目中,我们可以发现,安装程序对注册表进行了修改,这些注册表项目是用来向Outlook 2003描述Add in的全部信息的。Outlook 2003会根据这些信息加载Add in,在这里我们可以考到,托管Add in的启动项目实际上是AddinLoader.dll。

    这部分操作,我们无需做任何改动,如果不想通过默认的安装项目部署Add in,这部分操作则需要通过程序完成。如何操作注册表这里不多加描述了。

    1. 让客户机信任托管Add in

      相对于上述几个部分来说,最常见的困扰我们的问题在于如何让客户机信任我们的Add in。

    一般情况下,我们的开发环境中安装的都是.Net Framework 2.0的SDK,因此,我们可以在管理工具中找到"Microsoft .NET Framework 2.0 配置"。

    在Microsoft .NET Framework 2.0 配置中,运行库安全策略节点下,我们可以设置程序集在不同范围的安全策略,默认的安装程序不会帮我们完成这部分设置。但是如果不设置必要的安全策略,Outlook 2003是不会加载托管Add in的。

    • 将{SamplesDir}\projects中的SetSecurity工程添加到Outlook解决方案中
    • 在安装项目中添加SetSecurity的主输出
    • 在安装项目的自定义操作中添加SetSecurity的全部自定义操作
    • 在安装的自定义操作的属性窗口中,设置CustomActionData属性的值
      • /assemblyName="OutlookAddin.dll" /targetDir="[TARGETDIR]\"/solutionCodeGroupName="MyCompanyName.OutlookAddin" /solutionCodeGroupDescription="Code group for OutlookAddin" /assemblyCodeGroupName="OutlookAddin" /assemblyCodeGroupDescription="Code group for OutlookAddin" /allUsers=[ALLUSERS]
      • 注意,这个字符串中,等号前后不能有空格
      • 其中/assemblyName的值为Add in编译后的值
      • 除/targetDir和/allUsers以外,其他的值都可以根据具体需要进行更改
    • 设置Add in项目的程序集签名
      • 在Add in项目的属性窗口中的"签名"页签添加签名文件。

     

    至此,所有的配置都完成了。如果没有特殊情况的话,编译后的安装程序已经可以在客户机上正常安装了。

     

    在我实际使用的过程中,遇到了一个问题。进行程序集签名后的项目,要求其所有引用的程序集必须进行签名,否则无法正常编辑。而不巧的是,我们的项目中引用的两个第三方组件没有签名,导致了无法编译。

    这个问题可以通过修改SetSecurity项目中的代码解决。SetSecurity项目中使用的是强命名表示程序集,这就是要求对项目进行程序集签名的原因。而我们在"Microsoft .NET Framework 2.0 配置"中进行手动操作的时候可以发现,标识程序集的方法并非只有这一种,可以根据自己的需要选择不同的方式,当然这也意味着需要对SetSecurity中的代码有不同的修改,这里就不多写了。

  • 相关阅读:
    [工作积累点滴整理]虚拟化、云计算配置规划<一>
    视频监控——从其他浏览器打开低版本IE方案
    好记性不如烂笔头-nginx安装环境与Linux安装ftp组件
    (阿里巴巴)数据库连接池——Druid (未完持续更新)
    条形码和二维码编码解码工具类源码
    JS防抖与节流函数封装
    根据设备width(375)动态设置font-size
    JS写一个简单日历
    js常用身份校验规则
    list之flex布局写法及禁止橡皮筋效果
  • 原文地址:https://www.cnblogs.com/bluewelkin/p/1283231.html
Copyright © 2020-2023  润新知