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


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

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

    目录

    正规安装程序

    安装项目内容

    文件系统

    依赖项

    文件类型

    注册表

    用户界面

    自定义操作

    启动条件


    正规安装程序

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

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

            有段时间电脑病毒多,有些人主张把操作系统安装在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自带那个就只能执行程序,比如为了安装服务,就要执行一个命令,如果动作比较复杂,还需要专门写个批处理或者专门的程序。

    启动条件

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

    (这里是结束)

  • 相关阅读:
    Python服务部署 Flask/Django + uWSGI/Gunicorn
    【云原生 | Kubernetes 系列】--Gitops持续交付 CD Push Pipeline实现
    80%月薪过万的测试员都避开了这些坑,知道这些,帮助你快速月薪翻倍~
    MySQL问题:2002 - Can‘t connect to server on ‘localhost‘(10061)【已解决】
    Ubuntu遇到Gemfiie指定版本怎么解决
    ssm+微信小程序网易云音乐设计与实现毕业设计源码261620
    Elastic Search6.8.0安装
    网页字体图标用法
    王老吉药业“关爱烈日下最可爱的人”公益活动在杭启动
    这一定是前端导出Excel界的天花板~
  • 原文地址:https://blog.csdn.net/2301_77171572/article/details/133770873