最新消息:

让NSIS生成的安装包在静默安装时从命令行窗口输出安装信息

nsis 永恒心锁 1918浏览 0评论

静默安装就是安装时不显示UI,只显示一个CMD窗口,并用命令行传递安装时需要的参数。心想静默安装怎么地安装完了得有个结果显示出来吧,结果NSIS制作的安装包真是彻底静默了,命令执行之后立马返回了,而且一行信息也没有显示出来,要不是到安装目录下自己看看,天知道安装成功没有?在Winamp的论坛上,已经有人问过同样的问题,结论是要使用下面的参数重新编译NSIS的源代码,才能把安装时的详细信息在静默安装时显示在CMD窗口上。

NSIS_CONFIG_LOG_STDOUT=yes

当然,要启用Log功能,还要有下面的编译参数:

NSIS_CONFIG_LOG=yes

结合起来也就是要使用下面的编译指令重新编译NSIS的源代码。

scons NSIS_CONFIG_LOG=yes NSIS_CONFIG_LOG_STDOUT=yes

编译完成之后,在源代码的根目录下,会多出一个build目录,复制下面几个文件到你安装的NSIS的目录下,覆盖相应文件。

Build”release”makensis”makensis.exe

Build”release”Makensisw”makensisw.exe

把几个stub开头的几个文件夹中的可执行文件,覆盖NSIS安装目录下stubs里的相应文件,这时需要重命名一下的。规则就不描述了,比较一下就能知道了。

经过测试,用重新编译过的NSIS生成的安装包文件,可以在静默安装时把原来显示在GUI窗口中的安装信息显示在CMD窗口中。

但是会有新的问题!主要有三个,前两个是我测试时发现的,最后一个是NSIS的开发者在论坛上自己坦白的。

1. 这样生成的安装包事实上是一个带有GUI窗口的CUI程序,这样在安装和卸载时都会带有一个CMD黑窗口在后面,很不好看。
2. 由于是把LOG到文件的输出,重定向到了CUI程序的STDOUT,原本应该生成的install.log文件没有生成出来。这同时会给基于安装日志的卸载带来不利影响。
3. 一部分插件的输出,由于和NSIS本身的输出机制不是很和谐(就是插件开发者没有使用NSIS自身的输出机制,非要自己写一个)并不能把安装信息输出到CMD窗口。

从理论上讲,这几个问题都是可以解决的,但是不是靠几个简单的编译选项就能搞定的了。应该是需要修改NSIS的源代码,而且NSIS的License也是允许你这样做,只要你不找NSIS的原开发者什么麻烦。不过解决一个问题,引出三个问题要解决,似乎有点……要是解决那三个问题再引出九个问题可如何是好啊?

所以至于如何改,还没有研究出来。以后有需求再说吧。

免责声明:根据《计算机软件保护条例》第十七条规定“为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬。”您需知晓本站所有内容资源均来源于网络,仅供用户交流学习与研究使用,版权归属原版权方所有,版权争议与本站无关,用户本人下载后不能用作商业或非法用途,需在24个小时之内从您的电脑中彻底删除上述内容,否则后果均由用户承担责任;如果您访问和下载此文件,表示您同意只将此文件用于参考、学习而非其他用途,否则一切后果请您自行承担,如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。丨本站为个人博客非盈利性站点,所有软件信息均来自网络,所有资源仅供学习参考研究目的,并不贩卖软件,不存在任何商业目的及用途。丨本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权BY-NC-SA协议进行授权

转载请注明:永恒心锁-分享互联网 » 让NSIS生成的安装包在静默安装时从命令行窗口输出安装信息

您必须 登录 才能发表评论!