当前位置: 首页 > news >正文

Windows开发,制作开发软件安装程序(一)

接着上篇博文我们一起探究了如何查看可执行程序依赖的动态库文件https://blog.csdn.net/weixin_64647426/article/details/145869001,那么本篇文章我们就来说一下如何在Windows上将自己开发的程序打包为安装程序提供给别人安装使用

工具准备

制作软件安装程序,需要准备两个工具

  • Inno Setup 编译工具 v5.5.9(官网:https://jrsoftware.org/isinfo.php)

  • Enigma Virtual Box 虚拟打包工具

其次就需要有一个已经开发好的程序

两个工具的下载和安装这里就不详细介绍了

制作流程

从程序到发布安装包的整个流程图

这里我们主要介绍如何打包和制作安装程序,要制作安装包的程序就需要大家自己准备了,这里首先来说一下如何确定程序用到的所有资源文件和依赖的动态库,以及如何给程序添加图标

确定程序所依赖的动态库,可以直接将程序放在一个裸机上进行跑,看他需要什么或者参考https://blog.csdn.net/weixin_64647426/article/details/145869001博文中查看依赖库的方式

确定程序依赖的库文件

首先在Release模式下编译程序,并把程序复制到裸机上运行

可以看到这个程序运行是一个黑窗口并没有报错,这是缺少资源文件导致的,并证明了我们这里不缺少什么动态库文件

把资源目录复制过来,看看能不能正常运行

可以看到程序可以正常运行了,从这可以看到正常的运行这个程序只需要一个资源文件夹和可执行程序就可以了

给程序添加图标

程序在发布的时候,都会给程序添加一个图标,那么图标该怎么添加呢

其实很简单使用VS2019就可以解决这个问题

打开资源视图→右键单击要添加图标的程序→点击添加选择资源

选择Icon点击导入,把我们要设置的图标导入进来重新编译程序就可以看到我们生成的exe文件就有图标了

虚拟文件打包

有的时候我们去发布一个软件,有些资源文件是不想给用户看的或者不能让用户修改的,但是这些文件是需要同可执行文件一起给用户的,那么这个时候就需要一个虚拟文件打包工具将我们的资源文件和可执行程序打包成一个文件,使用户可以正常使用程序又看不到我们的资源文件

虚拟文件打包用到的工具是Enigma Virtual Box

Enigma Virtual Box的使用

首先我们把上面的那个拼图游戏所有的资源文件和可执行程序复制到一个文件夹下

然后打开Enigma Virtual Box工具

这里添加要打包的主程序

点击下面的添加,这里可以添加文件夹或者文件,这里我们选择文件夹把我们的资源文件夹添加上去

点击打包就可以得到我们打包完成的程序了,并且可以正常运行

可以看到打包后的程序是比打包前的程序大的,大出来的那一部分就是资源文件,这时只需要一个可执行文件就可以正常运行程序了

下面我们就需要使用Inno Setup工具将程序制作成安装包

制作安装程序

安装程序大家都是最熟悉不过的了,在下载应用时得到的都是一个安装包然后点击安装包进行软件的安装,大家可以注意到的是市面上的安装程序的样式都是多种多样的,这里我们只介绍使用Inno Setup来制作一个安装程序(后续可能会介绍一下其他的制作安装包工具,大佬们可以敬请期待),其它的工具大家也可以自行学习

制作安装包过程

首先打开Inno Setup工具,并选择用[脚本向导]创建新的脚本文件

进入向导页面点击下一步

这里添加程序的基本信息,如软件名、程序版本等等,填好后点击下一步

下面设置程序的安装文件夹,一般都是使用默认的,就是C盘下的Program Files文件夹,这里也支持自定义

这里选择要制作安装包程序的可执行文件,下面也可以添加程序所用到的一些资源文件,由于我们这里已经进行打包了,所以不需要添加哪些文件

这里根据需要选择就可以了

如果你的程序在安装时需要一些许可文件或者在安装时需要给用户显示一些信息就可以在这里面设置,我们这里没有就不演示了

这里选择安装程序的语言,注意是安装程序和你的程序的语言是没有关系的

这里可以设置安装程序的输出位置和安装程序名以及图标,还可以设置安装时的密码

到这里就都设置完了,点击下一步就可以

可以看到这里按照我们的向导生成了一个脚本代码,首先先保存这个脚本文件,然后点击构建选择编译就可以在你向导中设置的文件夹下生成一个安装程序

可以看到在我们设置的文件夹下生成了一个setup.exe的安装包程序

到这里制作开发软件安装包就介绍到这里了,下面我会在裸机上给大家演示安装一下这个程序

裸机上演示安装过程

感谢观看学习,大佬们多多指点,愿明天的自己会感谢当下的努力!!!!

http://www.dtcms.com/a/300143.html

相关文章:

  • MySQL的底层原理--InnoDB数据页结构
  • 关于GateWay网关
  • 基于HMM的词性标注方法详解(HMM+Viterbi,例题分析)
  • 【专业扫盲】电压/电流反馈和串联/并联反馈
  • CSP2025模拟赛2(2025.7.26)
  • 机器人仿真(2)Ubuntu24.04下RTX5090配置IsaacSim与IsaacLab
  • Jenkins持续集成工具
  • swagger基本注解@Tag、@Operation、@Parameters、@Parameter、@ApiResponse、@Schema
  • (1-7-4) MySql 的高级查询
  • 20250726-2-Kubernetes 网络-Service 定义与创建_笔记
  • 【Spring Cloud】微服务学习
  • 超时进行报警例子
  • 在 Windows 系统中实现 WinToGo 的 VHDX 文件切换使用的常见方法
  • 什么是缓存雪崩?缓存击穿?缓存穿透?分别如何解决?什么是缓存预热?
  • Spring AI Alibaba Video 示例
  • 大型微服务项目:听书——12 数据一致性自定义starter封装缓存操作
  • Java设计模式之行为型模式(中介者模式)实现方式与测试方法
  • 大数据之路:阿里巴巴大数据实践——实时技术与数据服务
  • Reeden:跨平台 AI 电子书阅读器
  • leetcode112, 257:二叉树的路径总和、二叉树的所有路径双题对比
  • 【基础完全搜索】USACO Bronze 2020 December - 雏菊链Daisy Chains
  • AI Agent:自主决策的智能助手
  • Javaweb————HTTP消息体拆分讲解
  • ISIS分片扩展实验案例
  • 精密全波整流电路(四)
  • 2025年02月11日 Go生态洞察:Go 1.24 发布亮点全面剖析
  • 【DNS服务配置—实现正反向解析】
  • 宏观杠杆率及其数据获取(使用AKShare)
  • 【C++基础】指针常量 | 常量指针 | int* p | const int* p | int* const p| const int* const p
  • MyBatis-Plus 进阶功能:分页插件与乐观锁的实战指南