我们开发完成一个插件之后,当然是打包发布给其他人安装使用。

打包的作用是安装必要的运行环境和减少安装的难度。VSTO自带有个发布安装的功能,位置如下图:

该功能生成的安装包有自动检查所需要的.Net框架和VSTO组件并下载和安装。但其最后安装的位置我们不能自己定义,会自动把插件安装到用户的AppData目录里面。

so~ 还是考虑其他方案。另外鉴于C#开发的东西基本是公开源码的,需要对生成的dll文件进行一定混淆加密处理。整理了一套流程。如下图:

所需要的软件可以到这里下载:http://pan.baidu.com/s/1i4OuVZn

下面开始详细讲解打包过程,图片有点多。

1、用Release方式生成项目

C#生成项目程序有两种方式:Debug和Release。Release方式体积更小、运行更快。

按照上图修改方式之后,再右键项目,生成:

生成完毕之后,可以在项目目录中的,bin/Release中看到项目文件。我的项目文件如下,这些都是需要打包的。

2、DLL代码混淆

很多人不愿意用VSTO做插件,除了入门麻烦(需要学习C#和Office相关的东西)之外,还有就是生成的项目文件基本是源码。稍微反编译一下,就能被看得清清楚楚。

这里有两个dll文件,其中Microsoft.Office.Tools.Common.v4.0.Utilities.dll不需要处理。只需对我们自己代码的dll文件处理即可。包含我的代码那个文件是DTPT.dll。

混淆工具:Eziriz .NET Reactor。界面如下:

混淆之前,记得备份一下生成的dll。我一般混淆采用如下设置:

再点击左边的protect生成即可。

没什么问题,点击Browse Folder按钮,打开混淆生成的文件,复制替换项目文件。测试一下所有功能是否能够正常使用
因为有时候,代码混淆会导致某些代码执行不了。

勾选的混淆选项越多越容易导致混淆之后的文件不能使用。但勾选越少越容易被反编译,真矛盾。我多次测试,发现勾选这3个是比较保险的。有时不行,去掉Obfuscation。

若混淆后,有功能可能不能使用。则需要斟酌去掉某些混淆选项,再重新生成测试,直到混淆文件可以完全使用。

3、创建打包项目

打包工具:Advanced Installer

新建一个打包工程,选择如下:

New --> Add-Ins --> Office Add-In --> CreateProject

输入你插件的名称和组织(公司或网站),下一步。

这一步是要打包成什么程序,这个打包工具建议用msi格式,下一步。

设置打包这个工程保存的位置,以及打包发布的位置,下一步。

由于我们使用VSTO开发的,当然选择第1个。再继续。

选择你VSTO项目的解决方案sln文件。再下一步,将会自动读取项目的内容。

选择使用Release生成的项目文件,再下一步。

默认勾选即可。若你还有什么文件是必备的没有被勾选,自行勾选即可,再继续下一步。

这一步很重要,尽管我开发用vs2013,我还是选择都2010。2010兼容性比较好,可以兼容2007、2010、2013、2016等版本。后面还会根据这个找到所需的环境。设置完成之后,下一步。

如上图设置,这些都是一些基本设置。填上自己项目相关信息即可,继续下一步。

这一步也会是比较重要,选择.net版本。若不知道你VSTO使用哪个.net版本,可以带VSTO项目,在“项目”-->“属性”-->“应用程序”中可以看到。

另外,最后一个不要勾选,后面有相关设置。

下一步,步骤还有不少。

先勾选,添加.net框架。若你也是使用4.0版本的,注意不要选择4.0 Client Profile,一定要选择4.0完整版本。

这里会自动添加下载地址。当然,你也可以改成你服务器的下载地址。

另外,这里建议勾上静默安装这些环境运行包。先别点下一步,这一页还没设置完成。

勾选VSTO Runtime,这次默认配置即可。必备环境这两个即可,可以下一步了。

这个步骤是选择安装程序的语言,根据自己需求选择即可,下一步。

这个是填写服务条款,就是不同意不给安装。自行根据需要填写即可,下一步。

点“完成”,构建打包项目。

相关设置都可以在这里找到,英语盲的话,自己查字典。下面再说一些我个人认为要注意的地方。

4、完善打包工程

一般我都会修改这个版本号,和去掉Comments的描述。

看看Install Parameters,这里需要注意两个地方。修改默认安装路径和勾上Run as administrator(用管理员身份运行)。

默认安装路径我都是[ProgramFilesFolder]DTPT,其中[ProgramFilesFolder]是指C判断的Program Files文件夹,DTPT是我的项目名称。

打开Digital Signature,你是用中文版的,不知道这个是哪个?对照图标和位置打开即可。

去掉Time stamp URL。

这一步很重要,打开Prerequisites。找到VSTO Runtime 4.0勾选(会弹窗提醒是否下载,点“否”),这个在Web Server分组上面。

再将其拖动到Pre-install中,这个是指安装时就检查并处理。如下图:

再选择这个VSTO Runtime,打开Setup Files选卡,设置下面3个。

这个是为了设置静默安装,不过这里测试达不到预想的效果。这些参数是参考.net设置,可能这里参数不对,若知道的话欢迎留言交流。

打开Registry,这个是写注册信息。其中[Manufacturer]项是无用的,删掉。这里你也可以添加一些你所需的注册信息。

最后,打开Media,此处是设置安装包输出的。这里我之前原本想只生成一个exe程序。但发现一个exe程序有问题,还是生成一个msi和exe程序,改一下默认命名。

5、发布生成安装包

找到这个菜单中的Run,点击生成安装包。

我生成的安装包如下:

可以在前面设置的打包发布位置找到。其中package.msi和setup.exe是安装包,setup.exe是入口程序。

这里我会多一个en文件夹。因为我选择了两种语言,外面这个是中文安装包,里面这个是英文安装包。

来源:http://yshblog.com/blog/97

VSTO详细打包过程相关推荐

  1. Android应用程序(APK)的编译打包过程

    前言 android系统上所识别的安装包后缀名为.apk 1.通过aapt工具打包资源文件和清单文件到R.java中. 2.通过aidl工具将aidl文件转为java文件 3.上面所产生的java文件 ...

  2. Pyinstaller 详解多种打包过程(去坑,填坑)。

    前言 本篇文章,详细介绍pyinstaller多种打包过程.去坑,填坑. 一.安装Pyinstaller 1)使用下面的命令即可安装(win10) pip install pyinstaller 二. ...

  3. Pycharm项目使用pyinstalle打包过程中问题及解决方案

    1.下载并安装pyinstaller库 (一)直接命令行安装 pip3 install pyinstaller (二)或者通过官网下载包,然后本地安装 2.使用pyinstaller命令行进行打包 ( ...

  4. cocos2d-x 3.4版本游戏打包AKP (重点记录如何解决打包过程中遇到的各种问题)

    主要记录下打包遇到的各种问题,主要讲解打包中遇到的问题如何解决.如果大家有何我同样的问题,希望能够帮到你. 过程 一 : 1. 配置环境变量 2.下载 ADT包含(eclipse和SDK)   NDK ...

  5. android Apk打包过程概述_android是如何打包apk的

    最近看了老罗分析android资源管理和apk打包流程的博客,参考其他一些资料,做了一下整理,脱离繁琐的打包细节和数据结构,从整体上概述了apk打包的整个流程. 流程概述: 1.打包资源文件,生成R. ...

  6. (转载)连连看游戏外挂详细制作过程

    标 题: [原创]新人入手第一个游戏外挂,附上详细制作过程 作 者: caigui 时 间: 2013-01-09,00:56:16 链 接: http://bbs.pediy.com/showthr ...

  7. 【Java 虚拟机原理】动态字节码技术 | Dalvik ART 虚拟机 | Android 字节码打包过程

    文章目录 一.动态字节码技术 二.Dalvik & ART 虚拟机 三.Android 字节码打包过程 总结 一.动态字节码技术 动态字节码技术 就是在 运行时 , 动态修改 Class 字节 ...

  8. AI:基于计算机视觉和语音识别案例项目打包过程记录20181226-19

    AI:基于计算机视觉和语音识别案例项目打包过程记录20181226-19 基于计算机视觉和语音识别案例项目打包过程 521 INFO: PyInstaller: 3.3.1 521 INFO: Pyt ...

  9. MapxTreme2008的打包过程

    最近帮朋友做了个小的gis系统,用到了mapXtreme2008,当然是破解的.开发基本上没什么难度,只是打包时遇到了些问题.开始以为只要把破解的许可文件连同mapinfo的库文件一起打包就可以了,但 ...

最新文章

  1. 加快Tensorflow和Keras图像数据集的训练速度
  2. _cdecl、_stdcall 、_fastcall、_thiscall 函数调用方式与区别
  3. 维护无后效性的技巧——立即计算代价
  4. dax 计算某一列重复出现次数
  5. mysql 集群备份脚本_mysqldump结合脚本的备份方案
  6. 百度之星初赛(A)——T5
  7. PHP加速 eAccelerator配置和使用指南
  8. matlab 连通域数量,【Matlab】找到矩阵中每个连通域的最小值
  9. 文本区域css,如何知道文本从一个CSS区域溢出到另一个区域?
  10. The JSR-133 Cookbook for Compiler Writers 中英对照版翻译
  11. PS AD命令之Remove-adcomputer!
  12. 华为:一个中国民族企业的“下半场”在哪里?
  13. android studio logcat 字体,android studio - 修改logcat颜色字体
  14. 在htmlfor循环制作菱形基础上制作空心菱形
  15. 小程序获取当前进页面的来源
  16. 怎么文字扫描识别?看完这篇你就会了
  17. python过京东app图形验证勾股定理_Python模拟登陆 —— 征服验证码 7 京东
  18. js 正则解决密码必须包含数字+特殊字符+英文字母大小写
  19. Linux系统之部署Rsyslog 日志服务器
  20. b500k电位器引脚接法_收录机旋转电位器b500k,可调式电位器25k

热门文章

  1. 长程、中程、短程调度
  2. 九宫图、四四图、五五图and so on
  3. Android性能优化–Systrace工具,移动网页开发工具
  4. luoguP3375 【模板】KMP字符串匹配
  5. java/php/net/python化妆品营销管理与决策支持系统设计
  6. php周未班培训,SEO培训周末班招生简章
  7. 财务建模完整指南第三讲
  8. van访谈_ElectricSheepCompany访谈
  9. bing搜索添加站点说明
  10. Azure Data Factory操作使用介绍