Inno Setup 脚本实例——选择安装:当前用户、所有用户

Inno Setup 制作自动安装脚本 需求如标题,即用inno setup 制作一个双击安装包后,就可以自动执行安装的安装包,不需要更多的人为介入。 在inno setup的[setup] session中设置了各种选项,但生成的安装包运行后都会有一个安装向导(如下图),需要人为点击一次按钮。网上搜索了好久,终于有个符合要求的方案。 提供主要脚本 [setup] DisableDirPage=yes DefaultGrou... 阅读详情
代码:
; Script generated by the Inno Setup Script Wizard.
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!

; 使用预定义变量,便于维护
#define MyAppName "My Program"
#define MyAppVerName "My Program 1.5"
#define MyAppPublisher "My Company, Inc."
#define MyAppURL "http://www.example.com/"
#define MyAppExeName "MyProg.exe"

[Setup]
AppName={#MyAppName}
AppVerName={#MyAppVerName}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
AppSupportURL={#MyAppURL}
AppUpdatesURL={#MyAppURL}
DefaultDirName={pf}/{#MyAppName}
DefaultGroupName={#MyAppName}
AllowNoIcons=yes
LicenseFile=D:/Program Files/Inno Setup 5/license.txt
OutputBaseFilename=setup
Compression=lzma
SolidCompression=true

[Languages]
Name: english; MessagesFile: compilerefault.isl

[CustomMessages]
; 使用自定义信息,便于维护或多国语言
cmSelectUser=Install for:
cmAllUsers=&All users
cmCurrentUserOnly=Current &user only

[Tasks]
Name: desktopicon; Description: {cm:CreateDesktopIcon}; GroupDescription: {cm:AdditionalIcons}
Name: quicklaunchicon; Description: {cm:CreateQuickLaunchIcon}; GroupDescription: {cm:AdditionalIcons}
; 把“选择安装给谁”选项作为附加任务来处理
; 脚本函数 ShowSelectUserTask 用于判断是否需要显示“选择安装”选项,比如 98 下不显示该选择,细节参见相应脚本函数
Name: forallusers; Description: {cm:cmAllUsers}; GroupDescription: {cm:cmSelectUser}; Flags: exclusive; Check: ShowSelectUserTask
Name: forcurrentuser; Description: {cm:cmCurrentUserOnly}; GroupDescription: {cm:cmSelectUser}; Flags: exclusive unchecked; Check: ShowSelectUserTask

[Files]
Source: D:/Program Files/Inno Setup 5/Examples/MyProg.exe; DestDir: {app}; Flags: ignoreversion
Source: D:/Program Files/Inno Setup 5/license.txt; DestDir: {app}; Flags: ignoreversion
; NOTE: Don't use "Flags: ignoreversion" on any shared system files

[Dirs]
; “选择安装给谁”选项的应用示例,脚本函数 CheckInstallFor 用于判断是选择了 安装给所有用户 还是 安装给当前用户,由此决定安装目标目录是 所有用户 还是 当前用户
Name: {commonappdata}/{#MyAppName}/Data; Check: CheckInstallFor('forallusers')
Name: {userappdata}/{#MyAppName}/Data; Check: CheckInstallFor('forcurrentuser')

[Icons]
Name: {group}/{#MyAppName}; Filename: {app}/{#MyAppExeName}
Name: {group}/{cm:UninstallProgram,{#MyAppName}}; Filename: {uninstallexe}
; “选择安装给谁”选项的应用示例,请参考[Dirs]示例注释
Name: {commondesktop}/{#MyAppName}; Filename: {app}/{#MyAppExeName}; Tasks: desktopicon; Check: CheckInstallFor('forallusers')
Name: {userdesktop}/{#MyAppName}; Filename: {app}/{#MyAppExeName}; Tasks: desktopicon; Check: CheckInstallFor('forcurrentuser')
; 注意,我在测试过程中,发现{commonappdata}/Microsoft/Internet Explorer/Quick Launch/{#MyAppName}不起作用,因此快速启动快捷键只安装给当前用户
Name: {userappdata}/Microsoft/Internet Explorer/Quick Launch/{#MyAppName}; Filename: {app}/{#MyAppExeName}; Tasks: quicklaunchicon

[Registry]
; “选择安装给谁”选项的应用示例,请参考[Dirs]示例注释
; 这两行是卸载时候删除相应注册表内容
Root: HKLM; Subkey: Software/{#MyAppName}; Flags: uninsdeletekey dontcreatekey; ValueType: none; Check: CheckInstallFor('forallusers')
Root: HKCU; Subkey: Software/{#MyAppName}; Flags: uninsdeletekey dontcreatekey; ValueType: none; Check: CheckInstallFor('forcurrentuser')
; 这两行是安装时候在注册表内留下相应键值,来标识安装过程中的“选择安装”选项
Root: HKLM; Subkey: Software/{#MyAppName}; ValueType: string; ValueName: InstallFlag; ValueData: ForAllUser; Check: CheckInstallFor('forallusers')
Root: HKCU; Subkey: Software/{#MyAppName}; ValueType: string; ValueName: InstallFlag; ValueData: ForCurrentUser; Check: CheckInstallFor('forcurrentuser')

[UninstallDelete]
Name: {app}/MyProg.exe; Type: files
Name: {app}/license.txt; Type: files
Name: {app}; Type: dirifempty
; “选择安装给谁”选项的应用示例,请参考[Dirs]示例注释
Name: {commonappdata}/{#MyAppName}/Data; Type: dirifempty; Check: CheckInstallFor('forallusers')
Name: {userappdata}/{#MyAppName}/Data; Type: dirifempty; Check: CheckInstallFor('forcurrentuser')

[Run]
Filename: {app}/{#MyAppExeName}; Description: {cmaunchProgram,{#MyAppName}}; Flags: nowait postinstall skipifsilent

[Code]

// 是否显示“选择安装给谁”选项,这里我认为显示的条件是:NT 平台,且为 Amdin 用户
function ShowSelectUserTask: Boolean;
begin
   Result := UsingWinNT and IsAdminLoggedOn;
end;

// 判断“选择安装给谁”选项值
function CheckInstallFor(Task: string): Boolean;
begin
   if UsingWinNT then
   begin
Result := IsTaskSelected(Task);
if Result and (Task = 'forallusers') then
   Result := ShowSelectUserTask;
   end
   else
Result := Task = 'forallusers';
end;

// 安装向导页面改变事件
procedure CurPageChanged(CurPageID: Integer);
var
   I: Integer;
   WinVer: TWindowsVersion;
begin
   if (CurPageID = wpSelectTasks) then
   begin // 当前页为 附加任务 选择页
GetWindowsVersionEx(WinVer);
if UsingWinNT and (not IsAdminLoggedOn or (WinVer.Major > 5)) then
begin // NT 平台,且 不是 Admin 用户 或 是 Vista 系统
   for I := 0 to WizardForm.TasksList.Items.Count - 1 do
   begin
       if WizardForm.TasksList.ItemCaption = ExpandConstant('{cm:cmCurrentUserOnly}') then
      WizardForm.TasksList.Checked := True; // 默认选择为 安装给当前用户
   end;
end;
   end;
end;

// 安装步骤改变事件
procedure CurStepChanged(CurStep: TSetupStep);
var
   S: string;
   ResultCode: Integer;
begin
   if CurStep = ssInstall then
   begin // 安装将要开始执行
// 这里可以根据自己需要,执行特定代码。我这里只是显示一下选项值
if IsTaskSelected('forallusers') then
   MsgBox(ExpandConstant('{cm:cmSelectUser}') + ' ' + ExpandConstant('{cm:cmCurrentUserOnly}'), mbInformation, MB_OK)
else
   MsgBox(ExpandConstant('{cm:cmSelectUser}') + ' ' + ExpandConstant('{cm:cmAllUsers}'), mbInformation, MB_OK);
   end;
end;
Inno Setup打包技巧——在非首次安装时让用户选择卸载还是重装 效果图: 代码如下: function InitializeSetup(): Boolean; var Version: string; begin Result:= TRUE; Flag:='install'; //read the version if RegQueryStringValue(HKEY_LOCAL_MACHINE, 'SOFTWARE\xxx\xxxx\config', 'Version', Version) then beg... 阅读详情

相关推荐

inno setup下SQL数据库静默安装问题与解决方案

innosetup+SQL2005Express sp4+静默安装+自动附加数据库

三千万年的博客 4210

使用inno setup生成桌面安装程序最新教程,常用功能及详解。

本文主要讲解inno setup如何生成一个安装包以及一些问题的解决方案,如安装时增加密码,修改默认安装路径,删除文件等。需要进行中英文配置

z37411的博客 1万+

使用Inno Setup工具打包应用程序

使用Inno Setup工具打包应用程序 1. 工具准备 Inno Setup软件 下载地址:Inno Setup官网http://www.jrsoftware.org/isinfo.php 2. 按向导完成打包 (1) 打开Inno Setup软件,点击文件-新建 在弹出的“Inno Setup脚本向导”对话框中点击”下一步“ (2) 在弹出的“应用程序信息“对话框里填写要制作程序安装包的信...

shine1162226的博客 1837

inno setup 环境变量 立即生效_linux系统环境变量及用户环境变量的配置

linux环境变量和Windows的环境变量一样,分系统环境变量和用户环境变量。系统环境变量对所有用户有效,而用户环境变量只对当前用户有效,下面以jdk为例进行两种环境变量的配置。1.系统环境变量配置执行 vim /etc/profile,JAVA_HOME为jdk所在目录:保存后执行source /etc/profile立即生效,执行java -version,出现jdk版本信息说明配置成功:当...

weixin_39797780的博客 805

Inno Setup实战:静默安装第三方驱动的批处理脚本集成技巧

本文详细介绍了如何利用Inno Setup集成批处理脚本,实现第三方驱动程序的静默安装。通过隐藏命令行窗口、精准定位驱动文件、使用静默参数以及合理设计目录结构,开发者可以将繁琐的驱动安装过程无缝嵌入软件安装包,从而为用户提供流畅、专业的一键式安装体验。

m3n5b7v8c9x的博客 848

INNO SETUP高级脚本定制指南:闪屏、自定义按钮与超链接

INNO SETUP是一个非常强大的安装制作软件,它通过脚本语言,让开发者可以定制几乎每一个安装步骤和细节。使用INNO SETUP脚本,可以创建专业的安装包,包含各种复杂的安装逻辑,满足不同软件的安装需求。与其它安装制作工具相比,INNO SETUP因其自由、灵活而受到广大开发者的青睐。INNO SETUP是一个为Windows平台设计的免费安装制作软件,自2000年首次发布以来,它已经成为开发者选择的安装包创建工具之一。它支持多种语言,界面直观,功能强大,让开发者能够快速创建专业的安装程序。

weixin_42173218的博客 1423

Inno Setup的几个有用的技巧

Inno使用的一些技巧,更新安装的标题,添加卸载图标,还原打包时的文件夹等等。

十三阿哥的博客 2497

Inno Setup:打造专业的安装包制作教程

Inno Setup是一个功能强大的安装制作工具,它为开发者提供了一个简便的方式来创建Windows平台下的安装程序。它是由Jordan Russell开发,基于Pascal脚本语言,允许用户编写复杂的安装脚本,从而实现高度定制化的安装体验。Inno Setup的安装程序是通过脚本来控制的,脚本由一系列的指令组成,每一个指令都是独立的,用来执行一个特定的功能。安装程序的脚本结构主要包括以下部分:定义段([Setup]、[App]等)初始化段([Code])

weixin_36431814的博客 1147

inno setup添加安装时重启计算机的选项

完整代码如下

qq_40170041的博客 1753

开源onlyoffice编译完整过坑版

onlyoffice 编译过坑完整版;

sHImart 4551

洛谷P5707 【深基2.例12】上学迟到(c语言)

第一篇题解 题目描述 yyy 的学校要求早上 8 点前到达。学校到 yyy 的家一共有 s(s\le 10000)s(s≤10000) 米,而 yyy 可以以 v(v<10000)v(v<10000) 米每分钟的速度匀速走到学校。此外在上学路上它还要额外花 10 分钟时间进行垃圾分类。请问为了避免迟到 yyy 最晚什么时候出门?输出 HH:MM 的时间格式,不足两位时补零。由于路途遥远, yyy 可能不得不提前一天出发,不过不可能提前超过一天。 输入格式 两个正整数 s,v,意思已经在题目中给定

cc_love_program的博客 1万+

Inno Setup编辑器生成安装包无法创建桌面快捷键

Inno Setup编辑器生成安装包无法创建桌面快捷键 在使用 “Inno Setup 编辑器”生成安装包过程中,生成的.iss文件,其中找到生成桌面快捷键代码如下所示: [Tasks] Name: “desktopicon”; Description: “{cm:CreateDesktopIcon}”; GroupDescription: “{cm:AdditionalIcons}”; Flags: unchecked; OnlyBelowVersion: 0,6.1 其中Flags:unchecked表

xiao123456bin的博客 1270

西门子V90 PN伺服控制核心:FB284功能块详解与实战

在工业自动化中,伺服定位控制是运动控制的基础环节,其本质是PLC通过PROFINET协议与伺服驱动器实现高速、确定性数据交互。FB284作为西门子为V90 PN定制的标准化功能块,封装了GSD映射、状态机管理与周期性PDO同步机制,将底层寄存器操作抽象为高可靠调用接口。相比MOVE指令或MC_MoveAbsolute等通用方案,FB284显著降低时序错乱风险,提升多轴同步精度与故障响应能力。它广泛应用于包装、灌装、装配等中端产线,尤其适配S7-1200/1500平台下的快速部署与现场维护。本文聚焦V90 P

weixin_42696271的博客 300

使用Inno Setup将Unity程序打成一个安装包

使用Inno Setup将Unity程序打成一个安装包

R3333355726856的博客 2191

【学长笔记】点亮 STM32F411CEU6 板载 LED —— 入门级教程

本文提供了STM32F411CEU6开发板(Black Pill)点亮LED的完整教程。详细介绍了硬件信息(板载LED连接PC13,低电平有效)、CubeMX配置步骤(GPIO输出模式)、Keil5工程设置及完整代码实现(包含GPIO初始化和系统时钟配置)。教程还涵盖ST-Link下载器连接方法、程序下载步骤(需配合BOOT0按键操作)以及验证程序运行的方法。该教程特别适合STM32初学者,通过简单的LED闪烁示例快速入门STM32开发。

apple_53308981的博客 1323

ADS 使用教程(一)Workspace, Library and Cell

简要介绍ADS的基本内容

Dirge19的博客 6613

使用Inno Setup制作程序安装包

使用Inno Setup制作程序安装包

Viciower的博客 8420

Vue+ECharts-GL 3D地图实战:5层叠加打造炫酷中国地图(附完整代码)

本文详细介绍了如何利用Vue和ECharts-GL构建具有强烈立体感的3D中国地图。通过5层图层的巧妙叠加与样式调校,实现了从背景阴影到交互高光的完整视觉层次,并整合了动态飞线与散点标记。文章提供了完整的代码实现、核心配置解析以及性能优化与视觉调优的实战技巧,帮助开发者快速打造专业级的交互式地图可视化应用。

d6e7f8g9h的博客 651

Inno Setup 安装界面、卸载界面+美化

Inno Setup用Delphi写成,其官方网站同时也提供源程序免费下载。它虽不能与Installshield这类恐龙级的安装制作软件相比,但也当之无愧算是后起之秀。Inno Setup是一个免费的安装制作软件,小巧、简便、精美是其最大特点,支持pascal脚本,能快速制作出标准Windows风格的安装界面,足以完成一般安装任务。网上找了很多代码,运行无法通过,自己花费3天时间改好了。总体效果还是很棒的。版本:Inno Setup V6.05。

9.歌工作室 4525

用python画年度和月度的日历图

用python画各种日历图,可以区分月份来画也可以画一整年的,日历图中可以体现自己的信息

weixin_44853840的博客 2138

避坑指南!YOLO26模型导出/推理常见问题,99%的开发者都踩过

版本锁定:Ultralytics=8.4.2、OpenVINO=2024.0.0、Python=3.10,版本不一致是80%问题的根源;参数对齐:训练/导出/推理的imgsz、归一化、坐标映射必须完全一致,差一步就出错;算子统一:避免自定义算子,优先用YOLO26原生算子(C3k2/PSABlock),确保推理引擎兼容;分步验证:导出后先校验ONNX/IR模型→单图片推理→RTSP流推理→72小时稳定性测试,一步过易踩坑;工业级测试。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 510

Inno Setup 系列之较完整的Inno Setup 安装脚本,具备安装包常用的功能

初接触 Inno Setup ,现把安装包常用的功能安装脚本总结一下,方便以后使用 [Setup] ; 注: AppId的值为单独标识该应用程序。 ; 不要为其他安装程序使用相同的AppId值。 ; (生成新的GUID,点击 工具|在IDE中生成GUID。) AppId={{3FC1FD05-BEC7-430A-B7DB-F07155FDE93E} ;程序名 AppName=Te...

qq_36190858的博客 2171

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

使用Inno SetUp制作安装包

使用Inno SetUp制作安装包前言准备工作1.打开Inno SetUp编译器进入欢迎界面弹出脚本向导页面2.设置应用程序信息3.指定应用程序文件位置点击浏览寻找exe文件选择之前制作好的exe文件添加必要的文件或者文件夹4.应用程序快捷方式设置5.安装程序安装模式设置6.编译设置7.开始编译脚本8.等待安装包编译完成9.查看生成的安装包总结 前言   使用NetBeans写了一个类似按键精灵的java程序,想给朋友用,但是朋友的电脑上并没有安装java环境。没办法,只能将java程序制作成exe安装.

qq_37443862的博客 2365

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

inno setup 安装mysql_MySQL在Inno Setup脚本上安装和加载数据库

我一直在阅读Stack Overflow上的很多文档,你们真棒!我已经采取了一些在另一篇文章中提出的代码.帮助很棒!由于RobeN,我能够加载MySQL并启动.然而,我确实阅读了建议将数据库自动加载到序列中的文档.我似乎无法理解它.任何帮助都会很棒!; Script generated by the Inno Setup Script Wizard.; SEE THE DOCUMENTATION ...

weixin_32377497的博客 1444

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

从零定制与构建 CopyQ Windows 安装包:Inno Setup 脚本全解析

CopyQ 的 Windows 安装程序(`copyq-<版本>-setup.exe`)并非由手写代码生成,而是由 Inno Setup 根据仓库中的 [shared/copyq.iss](https://link.gitcode.com/i/b894674af13f5c7eb9bfdd7519e2991a) 脚本脚本化打包产出。本文以 [docs/customize-and-build-the-

gitblog_00819的博客 698

项目inno setup安装脚本,带检测.net framework

完全不懂delphi语言,只是看过这种安装脚本,搞了三天才搞好,各种测试,各种改,终于做出了一个比较完整的安装包。 要说,还是有很多改进的地方,比如没有使用procedure,inno setup可以依照勾选项进行不同的安装步骤 以下是我的安装脚本: ; Script generated by the Inno Setup Script Wizard. ;

yunlight88的博客 6080
上一篇: Inno Setup 为安装界面添加些文字
下一篇: Inno Setup 播放背景音乐
GooderJump
博客等级 码龄23年 3粉丝 16原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值