inno setup打包脚本总结

2023-11-06

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打包测试脚本,即可下载。

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

inno setup打包脚本总结 的相关文章

  • IDEA中Maven项目打包方式

    方式一 直接打包 不打包依赖包 仅打包出项目中的代码到JAR包中 可称为架包 在其他应用中运行时 必须保证其上面有相应的依赖包 才能运行 maven Lifecyle Clean Package 打包成功后就会出现target文件夹 方式二
  • maven项目依赖无法关联打包的问题

    现象 A B项目都是maven项目 A是B的依赖jar库 打包或者部署B后发现lib中没有A jar 解决办法 在B项目上右键 打开MyEclipse Web Deployment 看到如下配置 在Web Project Deploymen
  • 无法将“gulp”项识别为 cmdlet、函数、脚本文件或可运行程序的名称 gulp报错

    最近在项目中使用到Gulp 官网https www gulpjs com cn docs getting started 在用vscode去打包项目过程中 执行在gulpfile文件中定义的指令 gulp clean 报错如下 gulp 无
  • 把Spring Boot项目打为可执行jar包

    前言 这两天没太多事了 就去学了一下后端的内容 发现只要有基础了 学其他的还是挺快的 本篇解决的是SpringBoot打成可执行的jar包 在网上找别人直接用命令 可是我这边显示错误 于是就自己查了查 记录一下 步骤 使用IDEA 一 使用
  • PyInstaller打包PyQt5程序无法正常显示图片

    我写了一段PyQt5程序 程序中需要显示图片 我在PyCharm中开发时 可以正常的显示图片 但是使用PyInstaller将程序打包为exe之后 同时将图片资源放入exe所在的目录中 即图片路径正确 打开的exe程序却不显示图片 对此 我
  • Inno Setup 系列之添加管理员权限

    需求 Inno Setup打包的程序安装完成后运行失败 这个是因为权限不够 打包的应用需要管理员权限 解决 1 在 Setup 节点添加 PrivilegesRequired admin 2 在Inno Setup的安装目录下有个Setup
  • ERROR Error: No module factory availabl at Object.PROJECT_CONFIG_JSON_NOT_VALID_OR_NOT_EXIST ‘Error

    1 使用微信一键打包工具提示 ERROR Error No module factory available for dependency type CssDependency Error 请检查 project config json 是
  • inno setup打包脚本总结

    inno setup是比较简单好用的一款打包工具 下面以打包HelloWorld exe为例进行说明 一 打包目录的建立 创建source目录 用于放置主程序 依赖dll 资源等待打包文件 创建output目录 用于存放生成的安装包 Hel
  • Idea SpringBoot多模块项目打包血泪史

    本文主要介绍基于Idea的SpringBoot多模块打包中遇到的各种问题以及解决方法 基本概况介绍 小弟之前是用的myeclipse进行的开发 但是在建立多模块的时候却错误的使用了web archtype 然后强转的SpringBoot 在
  • vue3 打包上线配置

    1 项目根目录下 src同目录 新建vue config js文件 2 输入配置参数 const path require path module exports 基本路径 整个文件夹在哪 publicPath 输出文件目录 文件夹名 ou
  • IDEA打包失败(多个module之间依赖不能识别)

    背景 开发过程中总会遇到一些不那么合理的架构 一个服务多个module 前后端不分离 于是需要自己打镜像 然后发到docker hub 再起服务 于是就有了第一步 本地打包的过程 idea提供了很方便的打包功能 然后出现异常 异常原因 we
  • esBuild + SWC 构建 TS 项目

    1 esBuild 介绍 在 esbuild 的官方介绍中打包 threejs 只需要 0 37 秒 Esbuild 是一个非常新的模块打包工具 它提供了与 Webpack Rollup Parcel 等工具 相似 的资源打包能力 却有着高
  • .NET Core:搭建私有Nuget服务器以及打包发布Nuget包

    使用docker搭建私有Nuget服务器 docker run d p 8080 80 v PWD nuget db var www db v PWD nuget packages var www packagefiles e NUGET
  • Pyinstaller 打包.py生成.exe的方法和报错总结

    Pyinstaller 打包 py生成 exe的方法和报错总结 简介 有时候自己写了个python脚本觉得挺好用想要分享给小伙伴 但是每次都要帮他们的电脑装个python环境 虽然说装一下也快 但是相对来说效率还是不高 要是能将python
  • Qt5打包——利用自带的windeployqt.exe和工具Enigma Virtual Box

    目录 运行 添加依赖 发布成单一exe形式 运行 选择Release版本 运行一次 Release 运行后会发现多了Release版本 里面有exe 但是双击时会发现缺少一些动态链接库 直接点击后缺少动态链接库 添加依赖 在你的Qt的安装包
  • 使用linuxdeployqt在linux下进行Qt打包发布(超详细)

    首先 来说下 本教程实现的功能 在linux下对开发的Qt应用 进行拷贝依赖文件so等 并打成deb安装包 实现可安装 卸载 安装完毕自动在开始菜单下和桌面添加快捷方式 卸载后自动删除快捷方式 以及删除应用生成的log文件 测试环境 ubu
  • javaFX用IDEA打包导出exe后图片不显示问题

    今天在用idea打包完成了JavaFX项目时 查到了两种方法 一种是用eclipse中的ant直接打包形成可安装的exe文件 见https code makery ch zh cn library javafx tutorial part7
  • pyinstaller 打包应用报错闪退

    请看到最后 解决方案一 用录屏软件录个视频 然后用播放软件打开逐帧查看 找到报错原因 一般是某个包导入错误 重新安装下对应的包 忒麻烦 借鉴大佬的博客 https blog csdn net s740556472 article detai
  • tauri打包慢:解决tauri的打包慢以及超时的方法

    打包的命令 yarn tauri build 打包的时候 会下载一个依赖包 由于这个依赖包是在github上下载的 因此会很慢或者超时 可以将这个地址 https github com wixtoolset wix3 releases do
  • Maven 项目打包源文件 *-sources.jar

    在 pom xml 配置文件中添加以下插件

随机推荐

  • 二蛋赠书一期:《快捷学习Spring》

    文章目录 前言 活动规则 参与方式 本期赠书 快捷学习Spring 关于本书 作者介绍 内容简介 读者对象 获奖名单 结语 前言 大家好 我是二蛋 一个热爱技术 乐于分享的工程师 在过去的几年里 我一直通过各种渠道与大家分享技术知识和经验
  • 125KHz RFID芯片模块及电路替代方案

    125K RFID芯片模块是否可以写数据 以上是125KHz RFID芯片模块的供应商和芯片名称 频段 容量 功能 协议 18000 2 11784 11785协议 集成 RFID 收发器可对 100 到 150 kHz 频率范围内的转发器
  • 你所不知道的面试陷阱,巧妙避开,面试不再步步惊心

    你觉得自己比面试官更机智吗 如果准备充分 其实是可以的 在面试中 面试官有些时候会出一些陷阱题来考验你 这并不是出于恶意 而是希望对应聘者的能力有更加敏锐的判断 以下是10条最有可能难住你的面试陷阱问题以及化解它们的方法建议和回答样例 壹
  • 阿里员工离职换来一条血泪教训:以为当小白兔很安全,是你对职场最大的误解

    大家好 我是彭于晏 最近跟一些朋友见面 提起阿里辞退员工中 很多是职场小 老 白兔 看似温和 其实是组织中的祸患 这让我想起马云在湖畔大学首堂课上曾分享 小公司的成败在于你聘请什么样的人 大公司的成败在于你开除什么样的人 大公司里有很多老
  • 【C++】5、构建:CMake

    文章目录 一 概述 二 实战 2 1 内部构建 外部构建 2 2 CLion Cmake 一 概述 CMake 是跨平台构建工具 其通过 CMakeLists txt 描述 并生成 native 编译配置文件 在 Linux Unix 平台
  • vc2010使用libcurl静态库遇到连接失败的解决方案

    vc2010使用libcurl静态库 遇到连接失败的解决方案 2010 11 10 15 35 下载libcurl的源码 打开lib文件夹下项目 编译为静态链接库 在编译的时候出现问题如下 注 以前在vc2005下用mfc工程并且libcu
  • char型int型float型double型数组在内存中所占的字节数(16位、32位、64位PC机)

    在C语言中 以16位PC机为例 一个char型数据在内存中所占的字节数为1 一个int型数据在内存中所占的字节数为2 一个float型数据在内存中所占的字节数为4 一个double型数据在内存中所占的字节数为8
  • ThreadPool 线程池

    ThreadPool 线程池 1 例子 MyThreadPoolDemo 2 为什么用线程池 3 线程池如何使用 4 线程池几个重要参数 5 线程池底层工作原理 6 线程池用哪个 生产中如设置合理参数 一 MyThreadPoolDemo
  • Oracle数据库远程连接配置教程

    本人前一段时间做过Oracle数据库的相关工作 但是发现数据库的监听程序和服务名比较难搞定 而且网上也没有现成的教程 所以经过自己的探索之后将这片文章贡献给大家 如有不当之处还请谅解并请联系本人 此配置是在本机允许访问的前提下进行 如不允许
  • typescripe第二天—返回类型和注解

    函数参数类型和返回类型定义 简单类型定义 如下图 getTotal没有给它定义返回值类型 虽然被推断出了返回值是number类型 但如图所示 有string存在时 并未报错 可以直接给total一个类型注解 但错误的根本是getTotal
  • Android 11 WebView 打开html文件,加载时报错:ERR_ACCESS_DENIED

    问题描述 之前andorid 10上做的需求 移植到android 11上 在项目中 system app HTMLViewer 自定义的加载html的xxxActivity java文件访问 手机系统中的 system etc html
  • 不使用MFC AppWizard向导, 如果没有设置好项目参数, 编译时产生错误及解决办法

    转贴 在创建MFC项目时 不使用MFC AppWizard向导 如果没有设置好项目参数 就会在编译时产生很多连接错误 如error LNK2001错误 典型的错误提示有 libcmtd lib crt0 obj error LNK2001
  • 频分复用和时分复用

    频分复用 FDM Frequency Division Multiplexing 就是将用于传输信道的总带宽划分成若干个子频带 或称子信道 每一个子信道传输1路信号 频分复用要求总频率宽度大于各个子信道频率之和 同时为了保证各子信道中所传输
  • 【深入理解C++】类对象所占用的空间大小

    文章目录 1 须知 2 非静态成员变量 普通成员变量 3 静态成员变量 4 非静态成员函数 普通成员函数 5 静态成员函数 6 构造函数和析构函数 1 须知 类本身是没有大小的 类的大小指的是类的对象所占的大小 如果用 sizeof 运算符
  • 十个不错的 Linux 网络监视工具

    点击上方蓝字 快速关注我们 英文 Linuxandubuntu 编译 LCTT https linux cn article 9153 1 html 保持对我们的网络的管理 防止任何程序过度使用网络 导致整个系统操作变慢 对管理员来说是至关
  • 毕业设计-基于机器学习的新冠肺炎疫情预测精度研究

    目录 前言 课题背景和意义 实现技术思路 一 国内新冠肺炎疫情的统计分析 二 基于机器学习模型的新冠肺炎疫情研究 三 基于深度学习模型的新冠肺炎疫情研究 实现效果图样例 最后 前言 大四是整个大学期间最忙碌的时光 一边要忙着备考或实习为毕业
  • CentOS 7 搭建CA证书服务器

    一 实验环境 CA 192 168 199 141 Apache 192 168 199 143 二 实验步骤 1 CA证书服务器的配置 1 1 安装openssl工具 默认使安装完成的 root CA yum install y open
  • 十进制转8421_BCD码

    目录 一 BCD码简介 二 十进制转8421BCD码转换思路 三 程序编写 四 仿真验证 总结 一 BCD码简介 BCD码 Binary Coded Decimal 用4位二进制数来表示1位十进制数中的0 9这10个数码 是一种二进制的数字
  • JAVASCRIPT调用WEBSERVICE

    HTML端代码
  • inno setup打包脚本总结

    inno setup是比较简单好用的一款打包工具 下面以打包HelloWorld exe为例进行说明 一 打包目录的建立 创建source目录 用于放置主程序 依赖dll 资源等待打包文件 创建output目录 用于存放生成的安装包 Hel