在某年的一个暑假,很想把已经写好的“锄大地”游戏跟冯Boy分享一下,可是那时候不会做一个自动 安装 .NET Framework4.0的 安装 包,很遗憾无法跟她分享我的成果。 最近上头有任务,让我去为团队的成果打一个包,而且项目运行时必备的SQL Server、.NET Frame
在某年的一个暑假,很想把已经写好的“锄大地”游戏跟冯Boy分享一下,可是那时候不会做一个自动安装.NET Framework4.0的安装包,很遗憾无法跟她分享我的成果。
最近上头有任务,让我去为团队的成果打一个包,而且项目运行时必备的SQL Server、.NET Framework都要一键安装,项目用到的数据库和端口都要在安装的时候一同搞好,这回总算是会了。
安装项目介绍
新建一个安装包的项目
建好了项目之后就有这个界面:文件系统编辑器
还有其他类型的编辑器。
由左往右分别是:文件系统编辑器,注册表编辑器,文件类型编辑器,用户界面编辑器,自定义操作编辑器,启动条件编辑器。
到现时为止,只用到三个编辑器
安装包制作
介绍完各个编辑器之后开始制作安装包了
打开“文件系统编辑器”,右击应用程序文件夹 —》 添加 —》 文件,在弹出的对话框选择要安装到目标计算机里面的文件(包括exe和dll)
通过类似的方式可以在“用户‘程序’菜单”和“用户桌面”里面添加内容。最简单的就是添加快捷方式
如果要在安装过程中做一些操作(拷贝某些文件,开端口,附加数据库等等),则要编写安装程序类了。在上面说的那个Installer1类中
可以重写一些方法根据各个不同是的时候选择适合的方法,这里就OnBeforeInstall方法。
<span>protected</span> <span>override</span> <span>void</span><span> OnBeforeInstall(IDictionary savedState) { </span><span>//</span><span>从用户界面获取的参数</span> <span>string</span> portId = Context.Parameters[<span>"</span><span>PortId</span><span>"</span><span>]; </span><span>base</span><span>.OnBeforeInstall(savedState); </span><span>//</span><span>自己定义的一个<strong>利用</strong>命令行开放端口的方法</span> <span> OpenPort(portId); }</span>
安装程序类定义好之后,回到“文件系统编辑器”添加一个项目输出
选择刚才安装程序类所在的项目。
接着到“自定义操作编辑器”在安装的节点右键—》添加自定义操作,在弹出的对话框选择刚才添加的主输出*****
上面开放端口需要一个端口号,而这个端口号则是从用户界面传入的。在“用户界面编辑器”中的启动节点右击—》添加对话框,弹出的对话框选择适当类型的对话框。
这里只选择文本框(A)就足够了。
编辑这对话框的内容,可以在属性窗口编辑。
这里有BannerBitmap,BannerText,BodyText和四组Edit开头的属性,相信通过这幅图就知道各个属性的含义了,EidtVisible就是控制那组文本框是否显示
而这里只需要把Eidt1的显示就可以了,并且各个属性设成这样
然后回到自定义操作处编辑打开主输出****的属性窗口,给CustomActionData属性附上这样的值
/PortId="[PORTID]"
等号前的是安装程序类的Context.Parameters["PortId"];里面的参数名,后面的PORTID是用户界面EditPorert属性的值,这如果有多个参数的话 要用空格隔开,如:
/Para1="[PARA1]" /Para2="[PARA2]"
整个安装程序大致完成了,最后要是程序运行的时候要有什么必备的组件,例如(.NET Framework),就要在安装项目右击,打开属性窗口,点击系统必备,选择必备要组件。
这里放一个小插曲,如果在这里勾选了SQL Server 2005 Express的,在生成的时候报错了,本人尝试在安装程序类中利用代码调用命名一键安装SQL Server,可是失败了,原因是系统只允许一个Instraller运行。最终还是得勾选SQL Server 2005 Express的,至于解决方法,得参照另一篇博文《自定义系统必备》
右击安装项目生成,安装包就生成了
Setup.exe是一键安装组件的安装程序,msi后缀的安装程序是跳过了组件安装的安装程序。到这里安装包的制作算是完成了。要是在那个暑假我懂得这些,就能跟冯Boy分析我编写的小游戏了,遗憾呐!
本文的思绪有点紊乱,还得请各位多多指教。谢谢!