nsis问题

最近在做一个安装包,因为要求使用自定义的背景图片和进度条,所以没有使用nsis默认的安装界面,而是自定义了一个页面。但是过程中遇到了一个问题,就是如何在自定义界面中显示真实安装进度的问题。如果使用默认的nsis安装界面,只要在.onInit函数中进行操作就行了,但是自定义界面的话就不能这么做了,必须自己进行控制在哪里进行复制文件的操作,并同步进度条显示。

nsDialogs::Show函数会显示窗口并阻塞线程,如果在这句之前进行复制文件的操作,会出现运行安装包后等待几秒才会出现界面的情况,但是又没办法在之后进行操作。所以需要使用线程去进行安装操作,但是nsThreads插件表现并不稳定,所以使用了Timer。但是之后发现如果Timer进行耗时的操作的话,界面是不响应用户操作的,所以不能直接在timer里复制文件,然后去网上搜索发现还有一个BGWorker插件,可以通过这个插件来启动一个线程,然后在函数里进行安装并且同步进度显示。这个插件使用非常简单:

GetFunctionAddress $0 BGFunc
BgWorker::CallAndWait

BGFunc是要调用的函数。

但是这个函数也是阻塞的,所以要在Timer中调用来实现异步。

参考:

http://blog.csdn.net/taiyang1987912/article/details/40506439

http://www.pythonschool.com/NSIS_JHK/3008.html

时间: 2024-10-26 16:48:07

nsis问题的相关文章

安装文件制作工具NSIS的使用总结

安装文件制作工具NSIS 使用总结 在给客户开发客户端软件时,为避免技术人员亲自上门安装带来额外的成本损耗,通常我们都会自作一个安装包,以确保我们开发的程序的相关依赖资源.环境在客户端运行前能自动地正确配置好. NSIS是一个比较流行的安装文件制作工具,制作简单,提供脚本语言来定义环境和程序的静态资源配置,使得安装文件可定制化, 并能根据自定义的脚本文件自动生成可执行的安装包, 大大地简化了程序员的发布工作. NSIS提供了多个脚本demo,可在UI上直接打开来查看其demo 并学习. 其脚本指

NSIS学习-标记

什么是标记 标记使用范围 标记的声明 什么是标记 标记是 Goto 指令的目标,或各种分支指令 (例如 IfErrors,MessageBox,IfFileExists,StrCmp) 的目标. 什么是标记 标记必须存在于一个区段或函数里.标记是局限于该范围里的,这意味着这些指令只能访问和它们同处于一个区段或函数的标记. 什么是标记 要声明一个标记很简单: MyLabel: 声明的注意事项: 1.标记不能以 -, +, !, $, 或 0-9开头 2.当给多个需要指定标记的指令指定了标记,不要忘

nsis安装包_示例脚本语法解析

以下是代码及解析,其中有底色的部分为脚本内容. 注释.!define.变量.!include.常量 ; Script generated by the HM NIS Edit Script Wizard. ; HM NIS Edit Wizard helper defines !define PRODUCT_NAME "signjing安装示例" !define PRODUCT_VERSION "0.0.0.1" !define PRODUCT_PUBLISHER

NSIS

NSIS 是“Nullsoft 脚本安装系统”(Nullsoft Scriptable Installation System) 的缩写,它是一个免费的 Win32 安装.卸载系统,采用了简洁高效的脚本方式.它本来是一个由 Nullsoft 创建并用于作为 Winamp 及其插件发布的系统,但现已被上百个应用程序所应用,作为它们进行程序发布的工具. NSIS 创建的安装程序可以进行安装.卸载.设置系统设置.解压文件等等.几乎可以做所有事情.因为它基于脚本文件,所以您可以完全控制您的安装程序的每个

NSIS安装制作基础教程[初级篇], 献给对NSIS有兴趣的初学者

NSIS安装制作基础教程[初级篇], 献给对NSIS有兴趣的初学者 作者: raindy 来源:http://bbs.hanzify.org/index.php?showtopic=30029 时间:2005-02-15 点击:70791 raindy NSIS简介: NSIS 是“Nullsoft 脚本安装系统”(Nullsoft Scriptable Installation System)的缩写,它是一个免费的 Win32 安装.卸载系统,它的特点:脚本简洁高效:系统开销小:当然进行安装.

Nullsoft教程 NSIS初学者图文教程一

Nullsoft教程 NSIS初学者图文教程一 来源:互联网 作者:佚名 时间:03-29 00:34:33 [大 中 小] Nullsoft Installation System(nsis) 是一个小巧高效的安装软件.操作简单.功能强大的高效率安装软件精品 Nullsoft Installation System(nsis) 是一个小巧高效的安装软件.可通过样例修改或根据自己要求编写 NSI 脚本文件来定制自己的安装系统,可实现许可协议的显示.安装类型的选择.写入注册表.写入INI文件.连接

NIS Edit&Nsis打包程序发布(安装和卸载)

转自:http://blog.csdn.net/signjing/article/details/7855855 注意:首选得明确自己需要打包的程序,以及程序需要的dll文件,资源文件等. 1.下载NIS Edit和Nsis两个软件,必须两个都安装,虽然是在使用NIS Edit打包程序,但是语言包必须Nsis支持实现: 2.打开NIS Edit软件,点击文件,选择“新建脚本:向导”: 3.点击“下一步” 4.内容可以自定义,点击“下一步” 5.选择simplechinese,其他可以自定义,点击

NSIS 2.0界面快速入门

NSIS 2.0 版本支持定制的用户界面.所谓的 Modern UI(下称 MUI) 就是一种模仿最新的 Windows 界面风格的界面系统.MUI 改变了 NSIS 脚本的编写习惯,它使用 NSIS 的宏来表达,指定 MUI 的属性需要使用宏.所以,诸如 LicenseText, Icon, CheckBitmap, InstallColors 在 MUI 中失去意义. MUI 的内置向导页面 和安装程序有关的向导页面 MUI_PAGE_WELCOME 该向导页面显示欢迎信息 MUI_PAGE

NSIS源码_清理AutoCAD垃圾文件

以前用NSIS写的一个工具,现贴出源码. !packhdr temp.dat 'upx -9 temp.dat' ;!packhdr temp.dat 'cmd /c Copy /B temp.dat /B +D:\Pro_Template\Pack_NSIS.7z temp.dat' !define PRO_NAME "CCTool-ACAD" !define PRO_VER "Final(NSIS)" ;NSIS最终版 !define VIPRO_VER &qu