安装包的原理与制作安装包的流程
想要制作一个一键打包并生成安装包(或安装程序)的小工具, 个人总结, 希望能帮到你.
本文用以下例子说明.
一个项目, 包含两个文件, app.yaml 和 app.exe.
- 什么是安装程序?
- 一个可执行文件
- 一个包含项目所有文件(本例为app.yaml和app.exe)的一个压缩包
- 在执行完之后会在安装目录添加项目文件(app.yaml 和 app.exe)的可执行程序
- 生成安装包的逻辑
- 打包项目文件, 即将项目文件压缩(加密), 如a.zip
- 生成安装包文件的可执行代码, 即在安装时所执行的程序, 此部分程序的重要功能:
- 解压(解密)在第1步生成的压缩(加密)文件
- 将解压(解密)出的文件移动到安装目录
- 将可执行代码编译成可执行文件, 如a.exe
- 将可执行文件与压缩文件以某种格式合并为一个文件, 即a.exe+a.zip
- 生成安装包完成
- 点击或执行安装包之后的逻辑
- 运行可执行代码部分, 即执行a.exe
- 可执行代码须解压(解密)出项目文件, 即a.zip
- 将解压(解密)出的项目文件(即将a.zip解压)移动到安装目录
- 安装完成
需要注意, 在生成安装包过程中, 将可执行文件与压缩文件以某种格式合并, 合并后的文件须仍可执行, 但仅执行文件中的a.exe部分.
安装包的原理与制作安装包的流程相关推荐
- 使用Advanced Installer制作IIS安装包(二:配置安装包依赖项和自定义dll)
原文:使用Advanced Installer制作IIS安装包(二:配置安装包依赖项和自定义dll) 前言:上篇使用Advanced Installer制作IIS安装包(一:配置IIS和Web.con ...
- vs2005制作安装包(自动安装.net framework 2.0)(小寿原创)
vs2005制作安装包(自动安装.net framework 2.0)(小寿原创) 新建项目-> 其他项目类型->安装和部署->安装向导! 安装向导会提示你添加要安装的文件,这时你可 ...
- C#进阶系列——使用Advanced Installer制作IIS安装包(二:配置安装包依赖项和自定义dll)...
C#进阶系列--使用Advanced Installer制作IIS安装包(二:配置安装包依赖项和自定义dll) 原文:C#进阶系列--使用Advanced Installer制作IIS安装包(二:配置 ...
- VS2008制作安装包
图文详细地址:http://www.itwis.com/html/net/kaifagongju/20090218/3387.html VS2008制作安装包 安装与部署 2010-03-13 14: ...
- Debian、Ubuntu源码编译制作安装包(二)
在<Debian.Ubuntu源码编译制作安装包(一)>文章中描述了dpkg基本制作安装包过程,本篇文章描述如何增加patch及解决出错问题. 章节预览: 5. 增加patch 6. 修改 ...
- Debian、Ubuntu源码编译制作安装包(一)
Debian.Ubuntu系列linux操作系统制作安装包相较于CentOS更简便一些,如"dpkg -b"指令即可重新打包.如果需要源码级制作安装包则更困难一些,接下来,我们逐步 ...
- 利用WIX制作安装包(2)
利用WIX制作安装包(2) 原文 利用WIX制作安装包(2) 这一篇文章将为大家介绍如何使用WIX自定义UI.上一篇文章我们讲过WIX为我们提供了五种安装界面.每种安装界面都是由不同的Dialog组成 ...
- 为自己编写的windows应用程序制作安装包
1 写好了一个windows程序之后如何制作安装包 这个在vs中就可以直接发布了,可以制作msi的安装包和exe的安装包. 2 window应用程序安装包做了哪些事情 rpm安装包的话,只是把相应的文 ...
- vs 2019使用Installer Project制作安装包的问题
项目场景: vs 2019 C# 项目使用Installer Project制作安装包 问题描述: 1.vs 2019 中visual studio marketplace中无法下载Installer ...
最新文章
- 找啊找啊找木偶,图灵奖得主G. Hinton第一篇论文曝光!
- web开发中目录路径问题的解决
- 【Flutter】Flutter 手势交互 ( 点击事件处理 | 点击 onTap | 双击 | 长按 onLongPress | 点击取消 | 按下 onTapDown | 抬起 onTapUp )
- 网站的容错性设计原则
- QTextCodec中的setCodecForTr等终于消失了 (Qt5)
- UPS对发电机组的影响
- django批量form表单处理
- Java / Cloud:如何快速创建支持Kubernetes的REST微服务
- 如何用Java编写类似C的Sizeof函数
- globalmapper如何选取图像上的点_OpenCV 进阶应用,用编程手段搞定图像处理
- jqGrid细节备注—jqGrid中自定义格式,URL格式
- 数据结构之图的存储结构:邻接矩阵法
- iText简介(转)
- pygame显示图片的方法_使用Sprite实现移动动画(Pygame中的精灵类)
- 如何将日志配置文件放入到Apollo配置中心并支持热更新
- 支撑位和压力位怎么看是什么意思?
- 单生产者/单消费者 的 FIFO 无锁队列
- 2010年ImagineCup,我们共同走过
- httphandler java_java – 使用HTTPHandler上传文件
- 学习炒股必读的10本书
热门文章
- 如何升级MacOS自带的PHP到指定版本(5.3-7.3)
- 数字音视频知识点汇总(一)
- labelme标记数据后,批量处理json文件,生成标签
- 安装宝塔面板后原ssh连接失败问题及解决
- 冒志鸿:大公司不模仿你,说明你危险了
- 通过Docker 安装 cloudera manager 平台
- java模仿微博代码_杨老师课堂_Java核心技术下之控制台模拟微博用户注册案例
- 一个简单的学籍信息管理系统,基于PHP和Bootstrap的实现
- C++进阶笔记001:static 静态生存期 和 动态生存期
- 群发邮件软件怎么发,教你邮箱群发邮件小技巧