去掉NSIS脚本自带的“Please wait while Setup is verifying installer:44%”弹框

利用NSIS脚本制作的安装包,在点击exe开始安装的时候,有时在电脑性能不好的时候,会出现下面这个弹框:


这个弹框是哪里来的呢?又是干嘛的呢?NSIS脚本是一个灵小强大的语言,效率高。NSIS有三种压缩方式,会对资源进行压缩,因此在安装的时候,会先进行资源的释放。当电脑运行良好的时候,这个弹框一般不会出来;但是如果运行比较卡的时候,那这个弹框就会先出来,然后跳到主界面。那有没有办法去掉呢?

首先我们要知道,这个弹框是NSIS脚本自带的,这一点我们可以通过查看它的资源得知:


从上图就看到,这是NSIS自带对话框。其实这个对话框涉及的还不只一个NSIS自带的dll。请看弹框上的信息,只有一半,另一半在另一个dll里面。由于NSIS是开源的,可以通过修改源码来去掉,但这个方法明显是不好的。改动源码的框架不仅复杂,而且每次NSIS更新了代码都需要重新修改。所以需要另辟蹊径。

我发现,只要将安装过程设置成静默的,就可以避免这个弹框的出现。


但是这样做,大家会很奇怪。那只有静默安装了,非静默怎么办?其实对于现在的大部分软件,特别是主流的一些软件,虽然是利用NSIS脚本打包的,但是界面的显示却不是用NSIS自带的。因为NSIS自带的都是操作系统里的对话框,比较丑,而且加一些UI啥的都是比较复杂的。我们看到的软件,安装界面都是非常精美,比如下面的这个:


这样精美的界面是不可能用NSIS自绘出来的。它们其实是利用了NSIS脚本的插件功能。NSIS为了扩展功能,增加了插件功能,插件是dll的形式。你只需要按照NSIS的规则写好接口,就可以在NSIS和dll之间随心所欲的调用。我们利用其它的技术,比如QT,xml配置等把精美的安装界面写好,封装到dll中,然后放置到NSIS的插件目录下,就可以直接在NSIS中调用插件的接口,从而显示出安装的界面来。这样一来,静默与非静默的控制都是放在了插件中,因此就不必理会NSIS的静默显示与否了。

但是,如果我非要使用NSIS自带的呢?其实也是可以的。NSIS的静默功能屏蔽的只是NSIS中的Page块,你在Page里面定义的内容在静默下是不会被执行的。但是另一个用法,Section确是可以使用的,你完全可以用Section代替Page,只是需要自己创建一些窗口罢了。而且NSIS的静默不会屏蔽MessageBox这样的函数,所以可以放心的使用这个技巧来避免这个弹框。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值