热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

利用VisualStudio制作安装包

在某年的一个暑假,很想把已经写好的“锄大地”游戏跟冯Boy分享一下,可是那时候不会做一个自动安装.NETFramework4.0的安装包,很遗憾无法跟她分享我的成果。最近上头有任务,让我去为团队的成果打一个包,而且项目运行时必备的SQLServer、.NETFrame

在某年的一个暑假,很想把已经写好的“锄大地”游戏跟冯Boy分享一下,可是那时候不会做一个自动 安装 .NET Framework4.0的 安装 包,很遗憾无法跟她分享我的成果。 最近上头有任务,让我去为团队的成果打一个包,而且项目运行时必备的SQL Server、.NET Frame

在某年的一个暑假,很想把已经写好的“锄大地”游戏跟冯Boy分享一下,可是那时候不会做一个自动安装.NET Framework4.0的安装包,很遗憾无法跟她分享我的成果。

最近上头有任务,让我去为团队的成果打一个包,而且项目运行时必备的SQL Server、.NET Framework都要一键安装,项目用到的数据库和端口都要在安装的时候一同搞好,这回总算是会了。

安装项目介绍

新建一个安装包的项目

建好了项目之后就有这个界面:文件系统编辑器

还有其他类型的编辑器。

由左往右分别是:文件系统编辑器,注册表编辑器,文件类型编辑器,用户界面编辑器,自定义操作编辑器,启动条件编辑器。

到现时为止,只用到三个编辑器

  • 文件系统编辑器:编辑安装到目标计算机后,各个文件放置的情况,就上面那幅图所示,“应用程序文件夹”里塞的就是程序所有东西;“用户的‘程序’菜单”就是开始菜单中的内容,这里一般会有程序的快捷方式、卸载程序;“用户桌面”就是桌面上方的东西了,一般就有程序的快捷方式了,如果特别一点的就像酷狗的弄多一个文件夹出来。
  • 用户界面编辑器:这个用于编辑安装程序时弹出的界面,可以调换各个对话框出现的顺序,如果有需要的话,就可以另外增加一些别的对话框,例如填上数据库的实例名,IP地址,端口号之类的。

  • 自定义操作编辑器:当在安装过程中还要做其他的操作,例如附加数据库,文件复制等等,就需要这个自定义操作了。自定义操作则需要另外加项目,一个类库项目,关键的是类库里面需要一个安装程序类

安装制作

介绍完各个编辑器之后开始制作安装包了

打开“文件系统编辑器”,右击应用程序文件夹 —》 添加 —》 文件,在弹出的对话框选择要安装到目标计算机里面的文件(包括exe和dll)

通过类似的方式可以在“用户‘程序’菜单”和“用户桌面”里面添加内容。最简单的就是添加快捷方式

如果要在安装过程中做一些操作(拷贝某些文件,开端口,附加数据库等等),则要编写安装程序类了。在上面说的那个Installer1类中

可以重写一些方法根据各个不同是的时候选择适合的方法,这里就OnBeforeInstall方法。

        protected override void OnBeforeInstall(IDictionary savedState)
        {
            //从用户界面获取的参数
            string portId = Context.Parameters["PortId"];
            base.OnBeforeInstall(savedState);
            //自己定义的一个利用命令行开放端口的方法
            OpenPort(portId);
        }

安装程序类定义好之后,回到“文件系统编辑器”添加一个项目输出

选择刚才安装程序类所在的项目。

接着到“自定义操作编辑器”在安装的节点右键—》添加自定义操作,在弹出的对话框选择刚才添加的主输出*****

上面开放端口需要一个端口号,而这个端口号则是从用户界面传入的。在“用户界面编辑器”中的启动节点右击—》添加对话框,弹出的对话框选择适当类型的对话框。

这里只选择文本框(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分析我编写的小游戏了,遗憾呐!

本文的思绪有点紊乱,还得请各位多多指教。谢谢!

推荐阅读
  • 在安装 SQL Server 时,选择混合验证模式可以提供更高的灵活性和管理便利性。如果您已经安装了 SQL Server 并使用单一的 Windows 身份验证模式,可以通过以下步骤将其更改为混合验证模式。 ... [详细]
  • 本文详细介绍如何使用Python进行配置文件的读写操作,涵盖常见的配置文件格式(如INI、JSON、TOML和YAML),并提供具体的代码示例。 ... [详细]
  • Windows服务与数据库交互问题解析
    本文探讨了在Windows 10(64位)环境下开发的Windows服务,旨在定期向本地MS SQL Server (v.11)插入记录。尽管服务已成功安装并运行,但记录并未正确插入。我们将详细分析可能的原因及解决方案。 ... [详细]
  • 本文介绍了ArcXML配置文件的分类及其在不同服务中的应用,详细解释了地图配置文件的结构和功能,包括其在Image Service、Feature Service以及ArcMap Server中的使用方法。 ... [详细]
  • SPSS操作指南:双变量相关性分析的详细步骤
    本教程将详细介绍如何使用IBM SPSS Statistics进行双变量相关性分析。通过实例演示,帮助读者理解变量间的关系及其统计意义。 ... [详细]
  • Python处理Word文档的高效技巧
    本文详细介绍了如何使用Python处理Word文档,涵盖从基础操作到高级功能的各种技巧。我们将探讨如何生成文档、定义样式、提取表格数据以及处理超链接和图片等内容。 ... [详细]
  • 如何在CAD查看器中同时打开并对比两张DWG图纸
    本文将详细介绍如何使用专业的CAD查看软件,如迅捷CAD看图,来同时打开和对比两张DWG格式的CAD图纸。无论是在设计审核还是项目管理中,掌握这一技能都能显著提高工作效率。 ... [详细]
  • 编写了几个500行左右代码的程序,但基本上解决问题还是面向过程的思维,如何从问题中抽象出类,形成类的划分和设计,从而用面向对象的思维解决问题?有这方面的入门好书吗?最好是结合几个具体的案例分析的 ... [详细]
  • Qt QTableView 内嵌控件的实现方法
    本文详细介绍了在 Qt QTableView 中嵌入控件的多种方法,包括使用 QItemDelegate、setIndexWidget 和 setIndexWidget 结合布局管理器。每种方法都有其适用场景和优缺点。 ... [详细]
  • Ulysses Mac v29:革新文本编辑与写作体验
    探索Ulysses Mac v29,这款先进的纯文本编辑器为Mac用户带来了全新的写作和编辑环境。它不仅具备简洁直观的界面,还融合了Markdown等标记语言的最佳特性,支持多种格式导出,并提供强大的组织和同步功能。 ... [详细]
  • 本文详细介绍了Vim编辑器的三种主要模式及其常用命令,帮助用户更好地掌握这一强大的文本编辑工具。 ... [详细]
  • 解决Windows 10开机频繁自检问题的实用方法
    许多用户在使用Windows 10系统时,经常会遇到开机时自动进行磁盘检查的情况。这不仅影响了开机速度,还可能带来不必要的麻烦。本文将详细介绍如何通过简单的注册表修改来避免每次开机时的磁盘自检,提升系统启动效率。 ... [详细]
  • 本文详细介绍了流编辑器sed中的G、H、g、h命令,探讨了它们的工作原理及应用场景。通过实例解析和图解分析,帮助读者掌握这些高级命令的使用方法。 ... [详细]
  • HTML基础入门指南
    本文将深入浅出地介绍HTML的基础知识,包括其定义、开发工具、制定机构、特性、基本标签及更多实用内容。 ... [详细]
  • 本文介绍了解决Oracle 10G数据库中ORA-12541 TNS: no listener错误的详细步骤。该错误通常发生在监听器服务未正确启动或配置不当的情况下,文章将指导您通过检查服务状态、配置注册表和启动监听器来解决问题。 ... [详细]
author-avatar
云姵肇
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有