浅谈Excel开发(八) Excel项目的安装部署

相关文章:

浅谈Excel开发(1) Excel开发概述

浅谈Excel开发(二) Excel 菜单系统

浅谈Excel开发(三) Excel 对象模型

前面几篇文章讲解了Excel开发的几个比较主要的也是比较重要的方面,比如菜单系统,Excel对象模型,自定义函数,RTD函数,异步自定义函数,用户自定义任务面板等,在实际开发中我们还会遇到各种“千奇百怪”的问题,以及开发中的一些注意事项和技巧等,后面有空我会写文介绍。当我们的Excel外接应用程序开发好了之后,需要给用户使用,这就涉及到了应用程序的安装与部署,本文就简要介绍下Excel项目的安装和部署。

和一般的.NET 中的Windows Form程序不同,Excel开发通常是一种插件式的开发机制,它需要借宿在Excel上,并通过调用Excel的API来实现特定的业务逻辑。宿主Excel在运行的时候,会根据当前用户以及Excel版本信息,读取注册表特定位置,以查找在本机当前用户下面注册的插件信息,然后逐个加载。这里面就涉及到了和安装部署相关的一些需要考虑的问题了。

一 插件安装部署时需要考虑的问题

Excel在安装部署的时候,需要考虑一些问题:

插件的类型,是Document Level,还是Application Level,是基于VSTO开发还是Shared Add-in技术开发。这个对于安装部署有较大影响。

判断待部署机器的位数,32位和64位机器Excel的插件信息在注册表的位置有所不同,对于64位操作系统,某些内容会写到\Wow6432Node\节点下。

待部署用户的机器上是否安装有Excel,Excel的版本是多少,Excel的位数是多少,如果是安装的Office 2003 是否安装有SP3 补丁,以及补丁版本号是多少。这里需要说明的是,从Office 2010开始,Excel分为32位和64位版本,这两个版本的dll在一般情况下是不能够兼容的,在应用开发中,如果我们的插件决定兼容这两个版本,那么还需要对于不同的目标机器需要分别编译发布相应的dll;如果不兼容,则还需要判断Office的版本。

如果是使用.NET 技术开发,需要判断用户机器上是否安装有.NET Framework以及Framework的版本。

如果用户安装的是Excel 2003,如果用到了某些功能,需要判断用户是否安装了相应的补丁,如果没有安装,需要静默安装。

安装完成后,相应的权限设定,比如对于某些目录,需要添加到安全目录,这样Excel在打开自己的带有宏文件的目录时不会提示不安全。

在部署插件的时候,以上问题在安装部署的时候是需要进行考虑,并通过代码的方式获取的。还有一些条件,比如用户有可能是安装的绿色版或者不完全版的Excel,这些奇奇怪怪的问题我们都需要考虑。 但是如果考虑到了以上条件,插件的安装和部署应该可以达到90%以上。

要了解Excel插件的安装部署我们需要清楚Excel是如何加载插件的,下面介绍下Excel插件的加载和运行机制。

二 Excel插件的加载及运行机制

这里以VSTO Add-in为例,Shared Add-in原理和机制类似。

当我们使用Office开发工具来开发Add-in的时候,我们实际上是创建了一个用托管代码编写的能够被Office加载的程序集(assembly)。程序集加载之后,Add-in就能够响应Office应用程序发起的事件了。Add-in也可以调用Office开放的对象模型来扩展其功能,当然也可以使用.NET 类库中提供的各种功能。

程序集和Office的Com组件进行交互是通过Office提供的称之为Primary Interop Assembly (PIA)来实现的。

如果有多个VSTO创建的Add-in部署到了目标机器,在Office启动的时候,每一个Add-in会被加载到各自不同的AppDomain中,这样极大地提高了插件的稳定性,意味着如果有一个Add-in工作不正常,不会影响其他Add-in的功能,其次,当Office应用程序关闭的时候,所有的Add-in的程序集都可以从内存中清除。

虽然Add-in的程序集是开发中我们最要关注的东西,但是Office在发现和加载我们编写的Add-in的时候,其他几个组件和部分也发挥着重要作用。这对熟悉Add-in的安装和部署有着很重要的作用。

2.1 注册表项

Excel 通过一系列的注册表项来加载插件。在部署的时候,我们也需要将我们插件的相关信息写入到目标机器的注册表中。通常在Vista及以上版本的Windows中对注册表的操作需要获得管理员权限。

a) 在部署的时候,我们需要确定是部署到CurrentUser还是LocalMachine节点下。

时间: 2024-08-03 19:45:04

浅谈Excel开发(八) Excel项目的安装部署的相关文章

浅谈Android开发中项目的文件结构及规范化部署建议_java

一.几句话 使用Gradle及其推荐的项目框架 把密码等敏感数据放入gradle.properties 不要自己写Http客户端,使用Volley或OkHttp库 使用Jackson库来解析JSON数据 避免Guava并出于Dalvik 65K methods limit不要使用过多的库 使用Fragment来绘制UI界面 Activity主要用来管理Fragment 布局文件XML也是代码,好好组织它们 在布局文件里,使用styles以避免重复的属性 使用多个style文件而不是一个巨大的st

浅谈PHP开发团队的管理之道

说明:本文节选自<浅谈PHP开发团队管理及程序员做人问题>.全文请点击这里访问. 看了标题,也许很多程序员会反感的说:"程序员的做人问题先不用谈,你想出来这个标题,那你做人是不是有问题吧!" 笔者本人并不反驳这样的说法,每个人都有自己的做人原则.法国人的那句俗话说的好:"我不苟同你的思想,但是我绝对捍卫你思想的自由". 是,这是站在个人的立场上可以那么说.但是如果站在一个团队的立场上呢?一切不尽然了! 无论马拉车的原理也好,还是木桶原理也好,西方人整出来

浅谈通过缺陷分析进行项目质量分析

本篇文章浅谈如何进行测试缺陷分析和质量报告分析. 背景 如同代码是程序员的成果之一,测试报告和质量报告是测试人员的主要成果之一.对于一个测试,在测试项目结束时需要对测试过程中的典型bug.常出现bug进行bugreview:对bug修复周期.bug趋势进行总结分析:通过以上bug的分析以及测试过程中出现的任何问题进行总结形成质量报告,不仅仅对过去项目产品质量进行准确的评估,还需要对未来项目在质量方面的改进点和方向提出建议,以对产品质量进行不断改进和完善 缺陷分析 1.bugreview:代码引入

浅谈Excel开发(1) Excel开发概述

做Office相关的开发工作快一年多了,在这一年多里,在插件的开发中遇到了各种各样的问题和困难,还好同事们都很厉害,在和他们的交流讨论中学到了很多的知识.目前Office相关的开发资料是比较少的,最最开始的时候,我看的是一本英文资料,然后再就是MSDN上面去提问了.所以我想写一点东西,让大家也少走一些弯路. 这篇文章就简要介绍一下Office开发的一些相关的知识,使大家对这个有一个大体的了解. 首先来看一看Office 的开发方式. 一 Office开发方式 1 VBA (Visual Basi

浅谈Symphony Spreadsheet在Excel报表测试中的应用

读者通过阅读本文,可以学习到 Symphony Spreadsheet 简单公式的书写,以及一些使用技巧,可以快速的运用到报表测试中,降低测试复杂度,有效提高测试结果准确性. 报表测试中常见数据对比 在 ERP 和 BI 项目测试过程中,对报表数据进行校验是非常有必要的,常见的数据对比场景如下:从系统导出的 http://www.aliyun.com/zixun/aggregation/16544.html">Excel 格式的报表数据,然后再给一份业务数据的源数据,要求校验报表数据是否正

HIMI浅谈游戏开发DE自学历程!(仅供参考)

本站文章均为 李华明Himi 原创,转载务必在明显处注明:  转载自[黑米GameDev街区] 原文链接: http://www.himigame.com/game-detail/382.html .                              希望童鞋们不要在此篇博文中发表技术问题,谢谢合作 很多群友进群之后都会问我如何自学:那么今天就专门写篇博文说一下,供各位童鞋交流和学习: 大家先来看一段我每天时间安排的数据: 上班之前: 学习J2me的时候,每天除了饿了去吃饭之外,全部用来

浅谈Java开发人员对JCP感觉失望的原因

其中一种感觉就是JCP已经失去了它的吸引力,它不再是被当成针对解决问题的社区,相反,它只是被看成是一些大公司所利用的鉴定规范通过的橡皮图章.这些大公司凭着自身的钱势和力量来指定各种规范从而达到满足自己的利益. "这与有些官僚机构很相似,只不过是JCP在短时间出现这样的发展显得过于迅速." Redwood城市的Infravio公司的CTO,MukundBalasubramanian谈到JCP时,他这样说到,"现在有太多的程序员和公司都卷入JCP,每天都开发很多软件,每天都有大量

从设计师的角度浅谈网站开发

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 公司开发了一套新的系统,但界面看上去并不是太友好,这个方面就成了我的工作,面对N个界面设计,N个杂碎页面的整理,还合着很多策划和用户体验的东西,确实头疼了,还好的是已经完成了,简单的总结下吧. 珠海网站开发中设计师的工作流程 1.准备阶段:查看并熟悉统相关的文档,对系统的工作流,面对对象,用户体验等有个大致的把握和了解,不至于设计时钻牛角尖,

浅谈Android开发中ListView控件性能的一些优化方法

ListView优化一直是一个老生常谈的问题,不管是面试还是平常的开发中,ListView永远不会被忽略掉,那么这篇文章我们来看看如何最大化的优化ListView的性能. 1.在adapter中的getView方法中尽量少使用逻辑 2.尽最大可能避免GC 3.滑动的时候不加载图片 4.将ListView的scrollingCache和animateCache设置为false 5.item的布局层级越少越好 6.使用ViewHolder 下面就具体来看一些 1.在adapter中的getView方