设为首页 收藏本站
查看: 907|回复: 0

[经验分享] Outlook 2003 Add in 部署笔记

[复制链接]

尚未签到

发表于 2015-9-13 08:55:00 | 显示全部楼层 |阅读模式
  在托管代码中通过VSTO可以很方便的创建Outlook 2003的Add in,但是部署相对于开发来说为我们带来的并非同样的便捷,以下将介绍Outlook 2003托管Add in的部署的步骤以及我在使用中遇到的一些问题及解决方案。
  其中大部分是来自于微软的在线视频,这里仅介绍部署部分,如果想要系统的学习,请访问微软网站以获取官方教学视频及PPT。
  

  • 介绍一下托管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组件的一部分。

  • 部署时的系统必备组件。

  作为系统必备组建,.Net Framework 2.0就不必细说了,托管嘛。
  当然,如果客户机上没有安装Outlook 2003的话,那就放弃吧……
  我们已经知道,AddinLoader.dll是托管Add in运行必备的部分,而AddinLoader.dll是VSTO Runtime的一部分。因此,VSTO Runtime也是系统必备组件之一。
  同时,为了是托管Add in正常工作,我们还需要为客户机安装Office PIA。
  最后,根据具体的运行环境,主要是系统语言,我们需要安装VSTO语言包。如果客户机是英文版Windows则可以忽略这个组件。

  • 系统必备组件

  用过VS 2005做过安装程序的程序员都应该知道,VS 2005的安装程序项目可以提供系统必备组件的检查及安装,安装Outlook托管Add in所需的系统必备组件也可以通过此功能实现安装。
  在默认情况下,VS 2005中所提供的系统必备组件无法满足我们的需求,这就需要我们自己动手丰衣足食了。
  首先,下载三个组件的安装程序,VSTO Runtime、Office PIA、VSTO 语言包(可选)
  然后,下载并安装在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,在安装项目中,我们就可以添加以上三个系统必备组件了。

  • 注册表说明

  在VS 2005中创建的安装项目中,我们可以发现,安装程序对注册表进行了修改,这些注册表项目是用来向Outlook 2003描述Add in的全部信息的。Outlook 2003会根据这些信息加载Add in,在这里我们可以考到,托管Add in的启动项目实际上是AddinLoader.dll。
  这部分操作,我们无需做任何改动,如果不想通过默认的安装项目部署Add in,这部分操作则需要通过程序完成。如何操作注册表这里不多加描述了。


  • 让客户机信任托管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中的代码有不同的修改,这里就不多写了。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-112869-1-1.html 上篇帖子: 在Outlook中设置农历生日周期性事件 下篇帖子: Outlook发送邮件自动添加BCC
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表