inno setup是比较简单好用的一款打包工具。

下面以打包HelloWorld.exe为例进行说明。

一、打包目录的建立

  • 创建source目录:用于放置主程序、依赖dll、资源等待打包文件。
  • 创建output目录:用于存放生成的安装包。
  • HelloWorld.iss:使用inno setup向导生成的打包脚本。

如下所示:

进行打包时,只需要编译HelloWorld.iss,就可以了。

二、修改脚本

使用向导生成的脚本HelloWorld.iss,内容如下:

; Script generated by the Inno Setup Script Wizard.
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!#define MyAppName "Hello World App"
#define MyAppVersion "1.5"
#define MyAppPublisher "My Company, Inc."
#define MyAppURL "http://www.example.com/"
#define MyAppExeName "HelloWorld.exe"[Setup]
; NOTE: The value of AppId uniquely identifies this application. Do not use the same AppId value in installers for other applications.
; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
AppId={{9AE31757-84AA-4D2F-9CB3-AF1CB2DB0AF4}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
;AppVerName={#MyAppName} {#MyAppVersion}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
AppSupportURL={#MyAppURL}
AppUpdatesURL={#MyAppURL}
DefaultDirName={autopf}\{#MyAppName}
DisableProgramGroupPage=yes
; Uncomment the following line to run in non administrative install mode (install for current user only.)
;PrivilegesRequired=lowest
OutputDir=D:\test\output
OutputBaseFilename=mysetup
Compression=lzma
SolidCompression=yes
WizardStyle=modern[Languages]
Name: "english"; MessagesFile: "compiler:Default.isl"[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked[Files]
Source: "D:\test\source\HelloWorld.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "D:\test\source\Qt5Core.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "D:\test\source\translations\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
; NOTE: Don't use "Flags: ignoreversion" on any shared system files[Icons]
Name: "{autoprograms}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"
Name: "{autodesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon[Run]
Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent

一般情况下,脚本不修改,也可以,只是有一些不足的地方。

我们也可以进行部分修改,然后定制一些功能。

1、绝对路径改为相对路径

如果我们的打包脚本需要进行提交上库的话,使用绝对路径,由于大家本地路径不一致,所以,这个脚本会被反复修改,很麻烦。使用相对路径来解决这个问题。

输出目录

OutputDir=D:\test\output

修改为:

OutputDir=output

输入目录

[Files]
Source: "D:\test\source\HelloWorld.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "D:\test\source\Qt5Core.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "D:\test\source\translations\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs

修改为:

[Files]
Source: "source\HelloWorld.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "source\Qt5Core.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "source\translations\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs

2、开始菜单中建立文件夹

默认是没有放在文件夹中的,如下:

我们在[Setup]下添加如下一行,表示文件夹名称为"Hello World App"

DefaultGroupName={#MyAppName}

并在[Icons]下添加如下一行,表示在"Hello World App"文件夹下创建一个名为Hello World App的快捷方式,它指向的文件为Filename中指定的HelloWorld.exe,其工作目录为{app}指向的应用程序安装目录

Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; WorkingDir:"{app}"

修改后的脚本:

重新编译,安装后效果,如下:

3、修改为默认创建桌面快捷方式

安装过程中,默认是不勾选创建快捷方式的,如下:

若需要默认就勾选。那么修改[Tasks]下,Flags的值。

Flags值

Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked

修改为:

Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: checkablealone

重新编译,安装时默认勾上,如下:

4、添加卸载菜单

在[Icons]下添加如下一行

Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}"

修改后的脚本:

重新编译,安装后效果,如下:


若对你有帮助,欢迎点赞、收藏、评论,你的支持就是我的最大动力!!!

同时,阿超为大家准备了丰富的学习资料,欢迎关注公众号“超哥学编程”,即可领取。

本文涉及测试用脚本及文件,公众号回复:InnoSetup打包测试脚本,即可下载。

inno setup打包脚本总结相关推荐

  1. Inno Setup 打包脚本笔记

    Inno Setup 打包脚本总结 1.1. 脚本段 1.1.1. #define宏定义常量 1.1.2. [Setup] 1.1.3. AppId 1.1.3.1. ShowLanguageDial ...

  2. inno setup 打包脚本学习

    INNO SETUP 学习心得 1.脚本结构 1.[Setup] 段 这个段包括了安装和卸载程序所使用的全局设置,并且有些关键字在你建立的安装程序中是必须要用到的. 2.[Dirs] 段 这个段是可选 ...

  3. Inno setup 打包教程

    inno setup 是较常用且简单的软件打包工具. 1.安装并打开 inno setup 软件 ① 运行环境 系统:Windows 7 软件:inno setup 5.5.5 ② 安装 inno s ...

  4. Inno setup打包软件安装

    Inno setup打包软件特点是开源.简单.重点还是免费的. 软件下载官网 https://jrsoftware.org/isinfo.php 界面汉化包地址:https://jrsoftware. ...

  5. Inno Setup 打包发布exe程序的步骤及注意事项及解决发布后的exe解压后文件都在主目录下导致程序无法正常运行的问题

    目录 一.链接.exe文件的.dll动态链接库 1.1.可以利用QT官网提供的工具windeployqt 生成方式见如下: 1.2.使用脚本文件 二.使用绿色汉化版打包小程序inno setup5.5 ...

  6. inno setup打包软件学习

    目录 一  打包结果 二 示例打包脚本 三 错误解决 3.1 另一个程序正在使用此文件,进程无法访问 3.2 桌面图标无法修改 四 参考资料 一  打包结果 测试程序来自: 泽森科工 (zenuste ...

  7. inno setup打包程序安装出现CreateProcess failed;code 740

    问题: 使用inno setup打包我们发布的程序test.exe,在安装结束后,勾选了Launch xxx运行程序,然后出现如下报错: Unable to execute file:xxx Crea ...

  8. Inno setup打包vc++运行库

    windows下打包应用程序,基本都要依赖vc++运行库,打包工具使用的Inno setup,记录一下inno setup打包vc运行库的方法 下载地址 https://support.microso ...

  9. Inno Setup 打包的文件以管理员权限运行

    近期发现一个问题,就是Inno Setup打包的程序安装完成后运行需求管理员权限的程序的时候会失败( inno createprocess   需要提升),解决这个问题的最简单办法就是打包的后的程序也 ...

最新文章

  1. lasTools laszip.exe 点云las/laz的无损压缩/解压缩工具
  2. 使用Python中的Turtle库绘制简单的图形
  3. java mybatis拦截配置_SpringMvc拦截器配置_JavaEE框架(Maven+SpringMvc+Spring+MyBatis)全程实战教程_Java视频-51CTO学院...
  4. Python入门100题 | 第055题
  5. 理解UIView的绘制
  6. 帆软报表(finereport)table块钻取,返回记住table块位置
  7. 三次多项式曲线php,多项式计算的效率测试,多项式计算效率_PHP教程
  8. 机器学习真的可以起作用吗?(1)
  9. 05 ZooKeeper分布式RMI协调实战
  10. shell基础之综合练习
  11. 手游开发之lua的class函数详解
  12. AcWing 1123. 铲雪车 题解(欧拉回路)
  13. python爬虫和java爬虫哪个好_应用数据下载
  14. 第十三届蓝桥杯大赛软件赛省赛(Java 大学A组)
  15. Oracle求同比SQL
  16. GreenPlum 大数据平台--运维(三)
  17. Python基础知识-pycharm版-02
  18. numpy之vstack()、hstack()
  19. linux查找代码cd文件夹,Linux fing cd 查找文件/文件夹并进入目录命令
  20. 【StyleGAN代码学习】StyleGAN模型架构

热门文章

  1. 成熟可量产变频器方案,变频器生产方案, 变频器源码
  2. rx560d linux 图形设计,关系steam linux版游戏 使用体会和个人建议
  3. 原始套接字头结构定义
  4. 旋流式沉砂池计算_沉砂池计算
  5. VML实现的饼图(JavaScript类封装)
  6. CTF 图片隐写之修改图片高宽
  7. openstack创建虚机的过程
  8. Ubuntu清理磁盘通过Stacer工具
  9. 解决电脑不能够发现蓝牙键盘,不能够连接蓝牙键盘问题
  10. 实时操作系统和通用操作系统区别