• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 众包
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
bobird的学习笔记
博客园    首页    新随笔    联系   管理    订阅  订阅

简单部署用VSTO SE 2005开发的Excel,Word插件

文章出处

如何简单部署用VSTO SE 2005开发的Excel,Word插件

本文标题之所以要加上简单二字,是为了区别于msdn上的两篇讲述VSTO部署的经典长文。

http://msdn2.microsoft.com/en-us/library/bb332051.aspx

http://msdn2.microsoft.com/en-us/library/bb332052.aspx

其实VSTO插件的部署无非就是Prerequisites和grant full trust (因为注册表是模板帮我们处理好的,我们不需要去关心,下文有详述)。上面的两篇文章为了一步到位的解决好以上两个问题,并打包.msi文件,用了一些技术。一,给Setup项目添加prerequisites,并且使用launch condition来要求用户在安装setup.exe前必须保证所有的prerequisites都已经安装在目标机器上;二,利用Custom Action在安装过程完成后,调用caspol工具来设置程序集的权限。

第一篇文章讲解了各个技术点,第二篇文章通过具体的例子来完成两种类型项目的部署,并且提供了一个Sample,里面包含了要用到一些工程,如SetSecurity。例子就是引用这个工程做为Custom Action来设置权限的。

与上两者不同的是,本文抛开所有这些技术不看,仅仅打包一个最最简单的.msi文件,把prerequisites和grant trust的事情,留待插件安装完再去人工做。希望如此,能给在VSTO项目部署时遇到困难的人一个直观的印象,让大家看到VSTO项目要运行,其实就是这么几个东西。然后回头再看Microsoft提供的这两篇文章,幸许又会有另外的收获。

 

一.概述

如果你的VSTO SE插件在开发机器上工作良好,一旦装到客户机上,就不再装载了。可能的原因无非就是一下几种:(在此排除了软禁用,硬禁用的情况)

1.一些prerequisites没有装:

  1. a.       .NET Framework (这是所有.NET应用程序运行的必备,没有什么好说的。如果我们用VSTO SE开发的插件,我们应该在客户机上装上.NET 2.0以上的版本)
  2. b.       Office PIAs(这是连接.NET和Office COM的桥梁,CLR通过它来操作Office的COM对象,没有它,你的程序一样不能跑)
  3. c.       VSTO Runtime(这是所有用VSTO开发出来的软件,运行时必备的,目前有三个主本版,第三个版本用来支持ClickOnce部署,本文中不涉及。本文只用到第二个主版本的升级版)

2. 注册表,任何一个VSTO SE插件程序要运行,都是Office启动的时候先从注册表中找到插件的相关信息,主要是LoadBehavior和Manifest的地址,然后根据Manifest的地址,找到manifest文件,manifest文件中记录了dll的地址和一些配置信息 (manifest文件可以用notepad打开) ,根据manifest来装载程序集。我们用VSTO SE新建一个插件项目的时候,Microsoft提供给我们的模板会帮我们自动添加一个Setup项目。这个项目中已经默认地帮我们把要写入的注册表键值写好,无须我们多费心思。当然如果你把默认的Setup项目删掉了 (我经常这么干,因为看着碍眼,并且我一般只要Debug,不要Deploy),自己再添加一个新的Setup项目,这时候,新项目中,系统不会帮你写好注册表的键值。关于注册表,下面是默认Setup项目的注册表视图的截图:

 

 

3. 权限的设置问题,Office装载任何VSTO SE开发出来的.NET插件时,都需要这个插件被完全信任。有两种方法完成这个任务:

  1. a.       用Microsoft .NET Framework Wizard (图形化界面)
  2. b.      用Caspol.exe (命令行,本文采用这种方式,原因是好表述,不要图)

 

二.部署案例

                下面我们动手,用VSTO SE创建一个Excel 2007的插件(2003也是一样的,只不过客户机要装Excel 2003和Excel 2003 PIA,还有不要在同一台机器上同时安装Office 2003和2007),并且将它部署到一个客户机上。(由于手头只有英文版VS,菜单名都是英文的,大家自己对应看看吧)

  1. 1.       打开Visual Studio 2005,新建项目,在左边的导航板块中,选中C#->Office->2007 Add-ins,在右边选中Excel Add-in。取名ExcelAddIn,点OK。

 

 

然后系统会在solution中默认的创建两个项目,一个是插件项目,一个是Setup项目,如图:

 

 

 

  1. 2.       在ThisAddIn.cs文件中的ThisAddIn_Startup函数里加一句代码,以供回头测试是否部署成功。修改后的代码如下:

private void ThisAddIn_Startup(object sender, System.EventArgs e)

        {

            #region VSTO generated code

            this.Application = (Excel.Application)Microsoft.Office.Tools.Excel.ExcelLocale1033Proxy.Wrap(typeof(Excel.Application),this.Application);

            #endregion

 

            MessageBox.Show("Deploy successfully");

}

  1. 3.       在Solution Expolrer里面,右击ExcelAddInSetup项目,点击Build。
  2. 4.       到Setup项目文件夹中的debug目录下找到ExcelAddInSetup.msi文件,拷贝到目标机器上。
  3. 5.       在目标机器上,安装:

.Net Framework 2.0 http://www.microsoft.com/downloads/details.aspx?FamilyID=0856EACB-4362-4B0D-8EDD-AAB15C5E04F5&displaylang=en

Office 2007 PIAs: (运行完下载文件后,还要点击得到的o2007PIA.msi才是安装PIAs)

http://www.microsoft.com/downloads/details.aspx?familyid=59DAEBAA-BED4-4282-A28C-B864D8BFA513&displaylang=en

VSTO Runtime2.0:

http://www.microsoft.com/downloads/details.aspx?FamilyId=4468D8CB-B43E-4B09-82F6-8BA3F7B5E935&displaylang=en#filelist

还有目标机上要有对应的Office程序,比如这里就需要Excel 2007!

  1. 6.       双击刚刚拷贝到目标机器上的ExcelAddInSetup.msi,选择安装目录并安装,假设安装到了C:/Test目录下。安装完,该目录下会出现两个文件:ExcelAddIn.dll,ExcelAddIn.dll.manifest,其中的.dll文件就是我们下面要设置权限的程序集
  2. 7.       回到桌面,点击开始->运行,输入cmd,在命令行提示下,输入cd C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727,回车

然后输入下面命令:

Caspol –u –ag All_Code –url “C:/Test/ExcelAddIn.dll” FullTrust –n “Test”

回车

输入yes

回车   (请勿直接拷贝这段命令行,因为Word好像改变了字体,大家还是自己敲一下,顺带加深一下印象)

 

 

  1. 8.       打开Excel,MessageBox对话框跳出。

 

posted on 2013-01-22 14:11  bobird  阅读(569)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3