我们开发完成一个插件之后,当然是打包发布给其他人安装使用。
打包的作用是安装必要的运行环境和减少安装的难度。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文件夹。因为我选择了两种语言,外面这个是中文安装包,里面这个是英文安装包。