制作windows安装程序的一些基本知识

本文介绍了制作正规安装程序的关键概念,包括安装项目内容、文件系统、依赖项管理、文件类型、注册表操作、用户界面定制、自定义操作和启动条件。作者强调了使用API和专业方法的重要性,以及推荐了一些安装程序制作工具如InstallShield、AdvancedInstaller和WinRAR在不同场景的应用。
摘要由CSDN通过智能技术生成

初级代码游戏的专栏介绍与文章目录-CSDN博客

我的github:codetoys,所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。

这些代码大部分以Linux为目标但部分代码是纯C++的,可以在任何平台上使用。


        好的应用软件需要一个正规的安装程序。

目录

正规安装程序

安装项目内容

文件系统

依赖项

文件类型

注册表

用户界面

自定义操作

启动条件


正规安装程序

        正规安装程序不能胡来,什么是胡来呢?

        比如我们以前干过这种事:把别的软件安装好,然后检查文件系统和注册表增加了什么,全部打包到我们的安装程序里面,这为什么是胡来呢?我们这么搞,假设用户的电脑上肯定有C盘,windows是默认安装,但是实际的用户未必如此(而且无视了windows的dll管理机制)。

        有段时间电脑病毒多,有些人主张把操作系统安装在D盘,因为很多病毒只攻击C盘。这种想法其实是因为病毒和我们干了一样的事情:假定用户的安装是标准的。

        其实呢,操作系统安装在哪个盘都是有可能的,操作系统里面的一些特定目录也是可以定制的,而且也会随着操作系统版本不同而改变,所以这些信息都是通过专门的API函数来提供的,并不是看看自己电脑上的目录结构就可以解决的。

        制作安装程序可以不使用辅助软件,直接使用相关函数来进行,但是这样很麻烦,所以有很多安装程序制作工具:

        InstallShield 最老牌,最先进,最豪华,最昂贵。

        Advanced Installer 也不错,收费的。

        还有很多。

        VS以前也自带一个,现在是插件,需要独立安装:Microsoft Visual Studio Installer Projects,功能比较简陋,但是看着很专业(老土)。

        还有个更简单的:Winrar自解压,虽然只能处理文件系统,但确实很多软件就用这个来安装,也符合绿色软件理念。

        下面介绍一下安装程序相关的概念,每个软件都会涉及(但自动化程度不同),由于安装程序制作比较偏门,这些概念与通常的理解不同,有不少容易误解之处。

安装项目内容

        要安装的东西,比如项目输出、文件、动态库、程序集等等,就是要把这些东西安装到用户的系统里面去。

        “项目输出”就是安装程序制作工具会识别软件开发项目(比如VS的一个C++的exe程序项目)的输出,根据release还是debug的不同去取相应的输出文件。

        “文件”就是一个指定的文件。你当然也可以不用“项目输出”而直接使用“文件”,但是这样就只能用固定一种配置,或者你强行指定所有配置都输出到同样的目录和文件。

        VS的安装程序制作工具能识别VS的所有项目类型,一个安装项目可以引用多个其他项目的输出,只要在同一个解决方案下即可。

        这些文件都是“你自己”的电脑上的东西,要通过安装程序才能出现在用户的系统上。

文件系统

        就是用户的文件系统。

        目标目录一般默认有三个目标:程序目录、桌面、开始菜单。这个三个目录我们都很熟悉,比如程序目录就是“C:\Program Files”——丢人了啊!前面一开始就说了这样搞是胡来,程序目录是通过api函数查询获取的,用SHGetFolderPath传不同参数去获取不同的特定目录的位置,安装程序制作工具会替我们写这些代码,我们只要在安装工程里正确安排文件就可以了。

        安装的文件通常会创建名为“公司名/软件名”的子目录。

        开始菜单目录下面一般只放快捷方式,安装程序制作工具会让你选择一个文件作为快捷方式的目标,也就是生成一个指向安装好的文件的快捷方式(所以必须是“文件系统”里面已经安排的文件,而不是“你自己”的电脑上的文件)。

依赖项

        就是用到的别的组件和软件,正确做法是执行组件和软件的安装程序,而不是拷贝安装后的文件和注册表。VS的C++程序可能会依赖VS的可再发行包,只调用windows API的程序则没有任何依赖项。把别人的dll直接拷过来放在一起确实可以使用,但是不是专业做法。dll是可以共享的,正确安装的dll在注册表有注册项,相同的文件不会重复安装。

文件类型

        注册文件扩展名,这是通过注册表进行的。所有的注册表操作都可以通过直接导入注册表文件来进行,但是如果有正规的api方式,还是用api比较好。使用安装程序制作工具的时候就应该使用工具提供的功能。工具会选择正确的方法。

注册表

        这就是直接往注册表写东西了。一般就是写程序自己的东西,别的东西有标准方法的尽量用标准方法,不好直接写注册表。

用户界面

        这是安装程序自己的界面,每个界面会有一点点可供定制的东西,主要是文字和图片。豪华安装程序制作工具会提供更多功能。

自定义操作

        这是安装过程每一步可以自己定制的操作,可能是通过脚本,也可能只能执行程序,取决于安装程序制作工具的豪华程度。VS自带那个就只能执行程序,比如为了安装服务,就要执行一个命令,如果动作比较复杂,还需要专门写个批处理或者专门的程序。

启动条件

        安装之间检查系统,符合条件才能继续安装。


(这里是结束)

  • 32
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值