首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

将输入变量从自定义页面传递到NSIS中的节

NSIS(Nullsoft Scriptable Install System)是一种开源的脚本驱动的安装/卸载系统,用于创建Windows平台上的安装程序。它提供了一种简单而强大的方式来创建自定义安装程序,并支持自定义页面以及在安装过程中传递输入变量。

在NSIS中,可以通过自定义页面来收集用户输入的变量,并将这些变量传递到安装过程中的节(Section)中。以下是一个示例:

  1. 创建自定义页面: 在NSIS脚本中,可以使用nsDialogs插件来创建自定义页面。通过使用nsDialogs插件提供的函数和控件,可以创建文本框、复选框、下拉列表等用于收集用户输入的控件。
  2. 收集用户输入的变量: 在自定义页面中,可以使用nsDialogs插件提供的函数来获取用户输入的值,并将其保存到变量中。例如,可以使用nsDialogs::Create函数创建一个自定义页面,然后使用nsDialogs::CreateControl函数创建一个文本框控件,并使用nsDialogs::GetText函数获取用户在文本框中输入的值。
  3. 传递输入变量到节中: 在NSIS脚本中,可以使用!define指令定义一个全局变量,并将用户输入的值赋给该变量。然后,在安装过程中的节中,可以使用该全局变量来引用用户输入的值。例如,可以在自定义页面中获取用户输入的路径,并将其赋给一个全局变量,然后在安装过程中的节中使用该全局变量来指定安装路径。

以下是一个示例代码片段,演示了如何将输入变量从自定义页面传递到NSIS中的节:

代码语言:nsis
复制
!include nsDialogs.nsh

Var InstallDir

Page Custom MyPageCreate MyPageLeave
Page InstFiles

Section "Install" SEC01
    ; 在这里使用 InstallDir 变量来指定安装路径
    SetOutPath $InstDir
    ; 其他安装操作...
SectionEnd

Function MyPageCreate
    nsDialogs::Create 1018
    Pop $0

    ${If} $0 == error
        Abort
    ${EndIf}

    nsDialogs::CreateControl /NOUNLOAD "Edit" ${WS_TABSTOP}|${WS_VISIBLE}|${WS_CHILD}|${ES_LEFT}|${ES_AUTOHSCROLL} 0 0 100% 12u ""
    Pop $0
    ; 将用户输入的路径保存到 InstallDir 变量中
    StrCpy $InstallDir $0

    nsDialogs::Show
FunctionEnd

Function MyPageLeave
    ; 在页面离开时,检查用户输入的路径是否有效
    ${If} $InstallDir == ""
        MessageBox MB_OK "请指定安装路径"
        Abort
    ${EndIf}
FunctionEnd

在上述示例中,我们创建了一个自定义页面,其中包含一个文本框用于获取用户输入的路径。用户在页面离开时,我们检查用户输入的路径是否为空,如果为空则显示一个消息框并中止安装过程。否则,我们将用户输入的路径保存到全局变量$InstallDir中,并在安装过程中的节中使用该变量来指定安装路径。

请注意,上述示例仅演示了如何将输入变量从自定义页面传递到NSIS中的节。具体的实现方式可能因实际需求而有所不同。在实际开发中,可以根据需要添加更多的自定义页面和逻辑来收集和处理用户输入的变量。

关于NSIS的更多信息和使用方法,可以参考腾讯云的相关产品和文档:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

NSIS 打包脚本基础

工具: HW VNISEdit(NSIS脚本编辑器) 1、 使用编辑器NSIS脚本向导功能,自动生成对应nsi脚本。...函数 包含了模块化安装逻辑。 在nsi脚本函数分为两种:用户自定义函数和回调函数。...除了用户自定义变量外,nsi脚本定义了寄存器变量$0~$9,$R0~$R9用于参数传递,以及系统变量用于特定用途,这些变量主要有: $INSTDIR 用户定义解压路径。... “INI文件” “区段” 区段读取 “项” 值并把该值输出到用户变量。如果该项未找到时会放置一个错误标记且该用户变量被赋为空值。...逻辑操作 Push 作用:把一个字串压入堆栈,该字串可随后堆栈里弹出。 Pop 作用:堆栈里弹出一个字串用户变量 $x。如果堆栈是空,则会置一个错误标记。

4.9K60

【C++】Qt:基于windeployqt+nsis程序打包和发布

1.windeployqt和nsis介绍 windeployqt是一个Qt提供非常有用命令行工具,用于Qt应用程序所需所有依赖项自动复制应用程序构建目录,以便在没有Qt安装计算机上运行应用程序...它还会自动解析应用程序依赖关系,确保所有依赖库文件都正确复制目标目录,以便应用程序能够正确运行。 使用windeployqt非常简单。...nsis我用版本是: nsis-3.02.1(最新版nsis是包含了下面的nisedit) 2.用nisedit制作脚本 1.新建向导脚本 2.填写应用信息 3.设置图标、语言等 4.设置目录与授权信息...5.选择打包程序文件 6.设置快捷方式 7.安装后运行方式(只有一个.exe就默认) 8.设置卸载提示 9.完成向导 生成脚本如下,可自定义更改: 比如要在安装开始时候选择语言,可以添加以下脚本...‘$LANGUAGE’是多语言变量,在安装程序结束后,语言代码会存储在这个变量,手动修改‘$LANGUAGE’值后,安装包会重新选择最匹配语言,参考最上面NSIS手册中选择界面语言步骤 StrCmp

50210
  • 基于Python远程管理工具(RAT) – Stitch

    特点: 跨平台支持: 文件及命令自动执行 防病毒检测 可以打开或关闭显示屏监视器 隐藏或显示文件和目录 查看或修改hosts文件 查看系统所有环境变量 键盘记录器具有查看状态,启动,停止和日志转储主机系统选项...查看目标系统位置等信息 执行自定义python脚本 屏幕截图 虚拟机检测 目标系统下载或上传文件 尝试dump系统密码hash值 将有效载荷伪装成其它已知程序 Windows 支持: 显示用户或密码对话框...网络摄像头快照 Mac OSX/Linux 支持 SSH目标机器进入另一台主机 运行sudo命令 尝试使用工具密码列表,爆破用户密码 网络摄像头快照(未在Linux上测试) 通信加密 主机和目标之间所有通信...要从运行Stitch不同系统进行连接,必须使用原系统showkey命令和新系统上addkey命令添加密钥。...想要创建NSIS安装程序,则必须下载安装NSIS

    3.8K50

    常用软件打包类型及静默安装参数(nsis|msi|InstallShield|Inno)

    今天搞了一个装机软件,可以导入第三方软件,在导入时候提示输入静默参数,于是我就了解了一些,什么是静默参数。 做装机朋友应该经常需要安装一些环境库和常用软件,一个一个安装就非常麻烦。.../u 运行升级向导,检查是否有联机升级 /d compvar=value 在企业版定义单个编译器变量。...: /T 测试模式 /X 路径名 文件提取到路径名 /Z 路径名 文件提取到路径名并重新启动 /S 静默安装 /M 提示输入windows、system、temp目录(/M=文件名-指定一个类似于.../S 无提示模式,无用户选择自动模式 /R 回滚模式,选择卸载时回滚选 /U 类似自动模式,但给出除了自定义/自动标题窗口之外所有选项,标题可以在命令行。...如果变量在值文件中找到,则使用指定值;否则,其值不变。包含文件文件变量最多可达32K。

    15K22

    C# Windows桌面应用打包指南

    本文详细介绍 C# 应用打包各种方法,包括 ClickOnce、MSI 安装包、Visual Studio Installer Projects、WiX Toolset 和一些第三方工具(如 Inno...我们讨论每种方法特点、优势、局限性,并提供详细打包步骤。1....使用其内置脚本编辑器,编写安装脚本,定义要打包文件、安装路径等。编译脚本,生成安装包。NSIS 打包步骤:下载并安装 NSIS。编写 NSIS 安装脚本,配置安装过程各项细节。...使用 NSIS 编译器生成安装程序。第三方工具优势:灵活、轻量,可以通过脚本实现高度自定义。支持压缩安装包,生成体积较小安装程序。第三方工具局限性:需要手动编写脚本,配置过程较为复杂。...结论C# Windows 桌面应用程序打包有多种选择,从简单易用 ClickOnce 高度自定义 WiX Toolset 和第三方工具,开发者可以根据项目需求选择适合打包方案。

    19632

    GuLoader 转向使用 NSIS 历程

    【PE 文件 NSIS 压缩数据】 垃圾邮件 2021 年 11 月,攻击者开始使用 NSIS 可执行文件前,研究人员发现了一个可疑 ZIP 文件。...【执行流程】 2022 年,攻击者转向使用 NSIS 可执行文件。例如 NSIS 可执行文件嵌入在 ZIP 文件或者 ISO 镜像文件。...【ZIP 文件 NSIS】 【ISO 镜像文件 NSIS】 在压缩文件与镜像文件嵌入可执行文件是能够进行检测逃避,在野发现可用于嵌入 NSIS 可执行文件格式如下所示: 【格式列表】...【简单 NSIS 脚本】 后来,攻击者开始使用混淆 NSIS 脚本。在 2022 年 4 月,攻击者对其进行两次改进。首先,Shellcode 文件扩展名 .dat 更改为随机扩展名。...【加密数据串联】 总结 攻击者开始简单使用 NSIS 可执行文件,一路不断增加混淆程度,增强对抗能力。这表明了攻击者在检测逃避、阻碍分析方面上创造力,应该引起警惕。

    68530

    Qt5-QtWidgets篇

    [&] 允许使用引用传递变量 [变量] 允许变量使用值传递 mutable 可修改值传递进来参数[虽然还是局部变量] mmutable{m+=100;打印}; 不加mutable会报错 ->类型 带返回值...QTextEdit + QTextEdit * edit = new QTextEdit(this); + setCentralWidget(edit); //设置中心部件 资源文件 图片文件文件夹拷贝项目下...,找基类 自定义组件 add new -> 设计师类 使用自定义组件 查看基类[如widget] 界面库拖出来一个widget组件,然后点击提升为,写入类名 [设置全局后可以直接在右键显示] 3...该控件被按下时状态 :disabled 该控件禁用时状态 :first 该控件是第一个(列表) :focus 该控件有输入焦点时 动画 QPropertyAnimation...金币中有坐标i 和 j 以及一个flag 来确定该金币在页面位置 锁定窗口 m_chooseScence->setGeometry(this->geometry()); 每次进入或者退出都锁定他位置

    1.5K20

    NSIS 打包 Electron 生成exe安装包

    每次文章都从0开始 搭建开始 使用是electron-vue 毕竟方便一点 如果只想安装electron 请参见我另一个文章https://segmentfault.com/a/11......编写一个页面 使用IDE打开随便编写一个页面 使用npm 构建安装包 npm run build 安装程序制作 下载NSIS软件,安装 下载地址:https://...下载完毕打开 下一步 下一步 就行了 傻瓜式安装 NSIS新建脚本 点击软件左上角文件->选择新建脚本(向导) 应用程序信息这里 填写应用程序名称必须和你package.json...下载完毕之后 放到NSIS目录下 VNISEdit\Plugins 目录 如果不知道目录 那就在桌面 右击VNISEdit 编译环境 选择打开所在目录 就可以看到了 在脚本最后加一句 编译完成后会后些方法...Quit no_run: FunctionEnd NSIS运行必须为管理员 请以管理员身份运行VNISEdit 编译环境 不然会终止编译并且有一个警告 好像是需要提级 什么什么!

    2K31

    Notepad2替代系统自带记事本

    事情是这样,平时我经常把一些文字复制记事本编辑好了再复制目标位置,可以在系统自带记事本替换删除一些内容,记事本小巧,占用很少资源,我很喜欢;但今天复制内容中有很多数字和一些我不想要内容...,我想到了正则,发现系统自带记事本没有,找来一个更强工具,Word,继续查找替换,发现word也没有正则,估计是微软认为除了程序员会正则,一般人不会用; 也许你会劝我使用:Notepad++、UltraEdit...而 Notepad2-mod 是 Notepad2 修改版、更新很及时,支持代码折叠、NSIS、Inno、AHK语法高亮等。 ?...、对括号{}〔〕()可以高亮配对显示,方便查看(仅对英文符号有效) 7、可以自定义代码页和字符集,对中文支持良好 8、使用标准正则表达式搜索和替换 9、可以使用半透明模式,cool 10、快速放大...、缩小页面,不用再设定字体大小 11、可以指定ESC键最小化Notepad2系统托盘或者关闭Notepad2 官网:http://xhmikosr.io/notepad2-mod/ git:https

    2K20

    Electron桌面应用打包流程(记录一下)

    分别输入 node -v,  npm -v 。如果出现 node 和 npm 版本号,则转下一步。否则转第一步。  c、在命令行,下载淘宝镜像命令工具 cnpm。...index.html          main.js          package.json     index.html使我们想要显示页面,main.js为此应用入口,package.json...新建一个main.js 内容如下:(main.js文件名对应package.jsonmain值) const {app, BrowserWindow} = require('electron');...NSIS 打包 Electron 生成exe安装包 NSIS操作简单,而且打包出来安装包,安装过程和卸载过程都更加正规。推荐使用 一..../index.html app.asar   得到app.asar包 企业微信截图_20190826110546.png 2.app.asar放到文章开始图片得到目录下resources文件夹下 企业微信截图

    5.9K62

    Notepad2替代系统自带记事本Notepad

    Notepad2替代系统自带记事本Notepad 原博文链接:https://www.cnblogs.com/best/p/5819858.html 事情是这样,平时我经常把一些文字复制记事本编辑好了再复制目标位置...,可以在系统自带记事本替换删除一些内容,记事本小巧,占用很少资源,我很喜欢; 但今天复制内容中有很多数字和一些我不想要内容,我想到了正则,发现系统自带记事本没有,找来一个更强工具,Word...而 Notepad2-mod 是 Notepad2 修改版、更新很及时,支持代码折叠、NSIS、Inno、AHK语法高亮等。 ?...5、可以对任意文本块进行操作,ALT键+鼠标。   6、对括号{}〔〕()可以高亮配对显示,方便查看(仅对英文符号有效)。   7、可以自定义代码页和字符集,对中文支持良好。   ...8、使用标准正则表达式搜索和替换。   9、可以使用半透明模式,cool。   10、快速放大、缩小页面,不用再设定字体大小。

    3.3K20

    Electron集成Vue Cli3创建项目

    静态页面建议放在public文件夹 打包配置 我们使用vue-cli-plugin-electron-builder内部也是用electron-builder打包,但是配置位置不能像之前那样配置了...LICENSE.txt文件编码必须为GBK编码 页面加载方式 之前直接用Electron写代码,后来要结合Vue Cli3创建项目,本来想是直接把Electron代码放在Vuepublic目录.../classtools/ppt/ppt.html"); } 但是发现开发环境完全没问题,打包后就各种找不到依赖 所以这种方式是行不通,只能把Electron静态页面用Vue方式在写一遍 但是问题是...首先我们要知道程序打包步骤 webpack打包 => electron-builder打包(asar打包 => exe打包) 考虑不同平台需要打入ffmpeg不同,我们可以在webpack打包过程筛选使用文件...,过程如下: 如果软件不考虑多平台,那么可以直接下载对应平台ffmpeg放在项目根目录下core文件夹,下面的第一步可以跳过不用配置。

    2.5K20

    IM跨平台技术学习(十一):环信基于Electron打包Web IM桌面端技术实践

    这样可以确保您应用程序在尝试使用这些资源之前不会崩溃。cross-env:是一个 npm 包,它作用是在不同平台上设置环境变量。在不同操作系统,设置环境变量方式是不同。...该 HTML 文件 JavaScript 代码运行在对应渲染进程,可以通过 Electron 提供一些 API 和 Web API 来进行与用户界面相关操作。...需要注意是,在 Electron ,由于主进程和渲染进程是不同 Node.js 实例,因此它们之间并不能直接共享变量或者调用函数。...Node.js API 带来安全风险;2)扩展 Web API:preload.js 还可以定义一些自定义函数或者对象,然后将它们注入 window 对象,这样在渲染进程中就可以直接使用它们了...[9] WebSocket入门精通,半小时就够!

    14910

    Angularjs1.X进阶笔记(1)—两种不同双向数据绑定

    如果我们自己来考虑,javascript中有一个变量值发生了变化,现在要将这个值同步html页面上,需要怎么做呢?...解决方案2 如果依然使用javascript原生定时方法,那么则需要在修改完视图数据模型后,手动调用$scope.$apply()方法来数据模型变动同步html页面。 二....2.1 directive双向数据绑定 在设定自定义指令scope参数时,属性值设置为=就可以实现双向数据绑定,这里API解释是: 父级controller指定变量会与自定义指令link...$apply()方法,directive变量值同步至controller数据模型以及页面。...其基本过程是这样,每当我们使用ng-model或ng-bind指令数据模型某个变量值和html页面上某个标签内容联系起来时,Angular就会把这些变量放进一个WatchCollection集合

    3.5K20

    小程序-实现自定义组件以及自定义组件间通信

    每个小程序页面都可以看成一个自定义组件,当多个页面出现重复结构时,可以把相同部分给抽取出来封装成一个公共组件,不同部分,在页面通过传参方式传入组件,渲染出来即可,达到复用目的 下面以一个简单数字加减输入框组件为例...小程序组件通信与事件 在小程序,组件间基本通信方式有以下几种 wxml数据绑定:用于父组件向子组件指定属性设置数据(以后会单独做一小,本篇不涉及) 事件: 用于子组件向父组件传递数据,可以传递任意数据...)等)与复杂数据类型(对象Object,数组Array) 如本示例,count组件上定义了count属性,这个名字并不是固定,和自定义了changeCount方法 也就是,countNum变量对象赋值给...; 那么在内部组件如何渲染呢,直接properties下变量对象与wxml通过{{}}插值表达式进行绑定关联就可以了 如下所示inputcount <view class...方式获取到子组件传递过来值 在父组件,重新setData数据即可更新父组件初始化数据,从而渲染页面上 以上是通过triggerEvent方式,并携带参数传递自定义事件,从而在父组件可以通过

    2.7K40

    CodeWave系列:2.codewave 低代码平台学习指南

    4.1 应用开发流程介绍 低代码平台提供应用全生命周期管理。在整个应用开发过程应用创建,应用开发迭代,再到应用上线和运维,都是通过可视化方式进行管理。...枚举 枚举是一种自定义数据类型,用于定义一组有穷序列集 逻辑定义 概念 含义 输入参数 传递给逻辑一组已知值,用于执行逻辑后续计算或操作 输出参数 逻辑执行完毕后回传给调用方值,输出参数仅支持...,可用于页面之间传递数据 服务端全局变量 服务端全局变量存储了请求会话上下文,包含httpRequest、Respose以及当前登录用户信息。...变量有使用范围,如接下来用到页面逻辑只能使用页面变量、逻辑变量和前端全局变量页面变量:包含输入参数和局部变量,仅能被当前页面逻辑调用。...逻辑变量:包含输入参数、输出参数和局部变量,仅能被当前逻辑调用。 前端全局变量:前端所有页面的全局变量,支持被所有页面调用。

    57910

    CMake 秘籍(六)

    本章涵盖了以下图中概述安装时操作: 我们引导你完成精简一个简单 C++项目安装各个步骤:确保项目中构建重要文件被复制正确目录,确保依赖于你工作其他项目可以使用 CMake 检测到它...本章四个基于第一章,从简单可执行文件库,第三部分,构建和链接共享和静态库给出简单示例。在那里我们尝试构建一个非常简单库并将其链接到一个可执行文件。...在本节第一,我们介绍我们小项目以及将在后续中使用一些基本概念。安装文件、库和可执行文件是一项非常基本任务,但它可能会带来一些陷阱。...为什么我们选择这种方法而不是在第 3 个菜谱展示使用OBJECT库方法,即“构建和链接静态和共享库”,在第一章“从简单可执行文件库”?OBJECT库负责编译库第一步:源代码对象文件。...我们调用print_rpath.py Python 脚本,_executable变量作为参数传递

    36700
    领券