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

news/2024/11/12 10:52:02

如何简单部署用VSTO SE 2005开发的ExcelWord插件

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

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

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

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

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

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

 

一.概述

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

1.一些prerequisites没有装:

a.       .NET Framework (这是所有.NET应用程序运行的必备,没有什么好说的。如果我们用VSTO SE开发的插件,我们应该在客户机上装上.NET 2.0以上的版本)

b.       Office PIAs(这是连接.NETOffice COM的桥梁,CLR通过它来操作OfficeCOM对象,没有它,你的程序一样不能跑)

c.       VSTO Runtime(这是所有用VSTO开发出来的软件,运行时必备的,目前有三个主本版,第三个版本用来支持ClickOnce部署,本文中不涉及。本文只用到第二个主版本的升级版)

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

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

a.       Microsoft .NET Framework Wizard (图形化界面)

b.      Caspol.exe (命令行,本文采用这种方式,原因是好表述,不要图)

 

二.部署案例

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

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

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

 

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");

}

3.       Solution Expolrer里面,右击ExcelAddInSetup项目,点击Build

4.       Setup项目文件夹中的debug目录下找到ExcelAddInSetup.msi文件,拷贝到目标机器上。

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

6.       双击刚刚拷贝到目标机器上的ExcelAddInSetup.msi,选择安装目录并安装,假设安装到了C:/Test目录下。安装完,该目录下会出现两个文件:ExcelAddIn.dllExcelAddIn.dll.manifest,其中的.dll文件就是我们下面要设置权限的程序集

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好像改变了字体,大家还是自己敲一下,顺带加深一下印象)

8.       打开ExcelMessageBox对话框跳出。


原文地址:http://blog.csdn.net/v_jzho/article/details/1954454



http://www.niftyadmin.cn/n/3658789.html

相关文章

文件上传常用绕过方式

JavaScript前端验证绕过 JavaScript 验证就是所谓的客户端验证,也是最脆弱的一种验证。直接修改数据包或禁用 JavaScript.enable 即可绕过。 例如upload的第一题,在我们点击发送时,还没经过代理就直接弹窗报错,就考虑存在前端验证…

GCC编译器的使用

原文地址:http://www.myplaces.com.cn/index.php/action/viewspace/itemid/21751看下面的例子:test.c#includemain(){ char *str"I like Linux! I advices you jion in the Linux World";printf("%s/n",str);exit(0);}使用gcc编译输入gcc -c te…

kafka-manager部署安装

一、kafka-manager 简介 为了简化开发者和服务工程师维护Kafka集群的工作,yahoo构建了一个叫做Kafka管理器的基于Web工具,叫做 Kafka Manager。这个管理工具可以很容易地发现分布在集群中的哪些topic分布不均匀,或者是分区在整个集群分布不均…

Torrent文件格式

刚找到的,不敢独享,发来看看 Torrent文件格式 BT种子文件格式 BT种子文件使用了一种叫bencoding的编码方法来保存数据。 bencoding现有四种类型的数据:srings(字符串),integers(整数),lists(列表),…

cygwin/gcc与MinGW

cygwin/gcc和MinGW都是gcc在windows下的编译环境,但是它们有什么区别?在实际工作中如何选择这两种编译器呢?cygwin/gcc完全可以和在linux下的gcc划等号,这个从boost库的划分中就可以看出来端倪,cygwin下的gcc和linux下的gcc使用的是相同的T…

kafka集群中jmx端口设置

jmx端口主要用来监控kafka集群的。 在启动kafka的脚本kafka-server-start.sh中找到堆设置,添加export JMX_PORT"9999" if [ "x$KAFKA_HEAP_OPTS" "x" ]; then export KAFKA_HEAP_OPTS"-Xmx1G -Xms1G" export JMX_PORT&…

bat按任意键开始结束的脚本

功能: 双击 .bat -> 按任意键开始 -> do something -> 按任意键结束代码: echo off echo 按任意键开始 pause echo 执行中.... (你要执行的东东) echo 按任意键结束 pause exit