工作中遇到一个数据处理自动化的问题,于是打算开发一个基于excel的小工具。在业余时间一边自学Excel开发一边动手实践,最近终于完成了雏形。抽空把一些知识写下来以备今后参考,因为走的是盲人摸象的野路子,幼稚与错误请多包涵。
开发环境基于VSTO(没有用VBA),具体配置:visual studio 2010,VB .Net,excel 2007,文档级别的定制程序。
因为是自用的小工具,对部署的要求很低,有个安装文件即可,也不要求兼容老版本的office。这样最简单的就是使用vs2010的publish功能,但实际操作仍然不是一帆风顺。因为发布的内容除了自己的代码,还涉及一系列部署依赖项。可以通过右键点击项目工程-->properties-->publish-->prerequisites查看与设置当前项目的依赖项。对于我的工程来说有3个:
- .NET framework 4 Client profile
- vs 2010 tools for office runtime
- windows installer 3.1
这些依赖项的默认安装方式是通过web安装,不适合我的部署要求(隔离的局域网),所以在这个界面修改为和本地程序一起发布。然后右键项目工程 -->publish,进入发布向导界面,一路向前,默认情况会在工程文件目录下生成一个publish目录,里面包含以下内容:
- application files目录:里面是自己代码的发布文件
- DotNetFX40Client目录:里面是.net依赖文件
- VSTOR40目录:里面是vsto依赖文件
- windowsInstaller3_1目录:安装依赖文件
- xxxx.vsto文件:安装配置
- xxxx.xlsx文件:程序文件,我这里是文档级的定制程序
- setup.exe文件:安装文件
安装的时候把整个publish目录拷贝到目标机器,然后双击setup,会自动先安装依赖项,然后再安装我们的程序。
对于比较新的操作系统来说这些就足够了,比如windows 2008 server sp2,但我的环境中还有windows 2003 server 64bit的机器,这时会安装失败,这个环境问题搞了我很长时间,google了好久才在stackoverflow找到一个帖子,结论是需要事先安装 Windows Imaging Component (WIC,可以去微软下载相应的版本)。我开发机器上以前就下载有这个文件,安装搞定。