让NSIS生成的安装包在静默安装时从命令行窗口输出安装信息
2009-04-06 22:52
351 查看
静默安装就是安装时不显示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的原开发者什么麻烦。不过解决一个问题,引出三个问题要解决,似乎有点……要是解决那三个问题再引出九个问题可如何是好啊?
所以至于如何改,还没有研究出来。以后有需求再说吧。
关于如何编译NSIS的源代码,可以参考我的另一篇文章——在VS2008环境下使用Scons编译NSIS。
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的原开发者什么麻烦。不过解决一个问题,引出三个问题要解决,似乎有点……要是解决那三个问题再引出九个问题可如何是好啊?
所以至于如何改,还没有研究出来。以后有需求再说吧。
关于如何编译NSIS的源代码,可以参考我的另一篇文章——在VS2008环境下使用Scons编译NSIS。
相关文章推荐
- 在windows窗体程序中单独开一个dos命令行窗口,输出我们想要的信息(调试程序常用)
- 制作NSIS命令行窗口输出插件
- 一些常用软件静默安装参数(nsis,msi,InstallShield ,Inno)
- 打包静默安装参数(nsis,msi,InstallShield,InnoSetup)
- linux CentOS7最小化安装环境静默安装Oracle11GR2数据库(上传安装包并解压)
- matlab窗口输出信息写入文件
- Visual studio C#语言输出调试信息到Output窗口方法
- Win32应用程序使用Console窗口输出调试信息
- 跳过权限检查,强制修改mysql密码 windows: 1,停止MYSQL服务,CMD打开DOS窗口,输入 net stop mysql 2,在CMD命令行窗口,进入MYSQL安装目录 比如E:
- 一、Ubuntu Server上安装Matlab,利用X11和Putty输出窗口到Windows桌面(环境选择)
- WebSphere V8.5 静默安装升级(一)-独立安装每个安装包
- [常见问题解答-安装和部署]错误: 无法生成项目输出组“内容文件来自WebApplication1(活动)”
- hive生成的MapReduce Job未完成时关掉命令行窗口的结果
- NSIS使用教程(安装包制作安装文件教程,如何封装打包文件) 中文版
- 一个简单的将GUI程序的log信息输出到关联的Console窗口中(AllocConsole SetConsoleTitle WriteConsole 最后用ShowWindow(GetConsoleWindow)进行显示)
- 安装好的MySQL数据库命令行窗口打开后闪退
- keil中自定义输出信息到编译窗口
- 2012-08-02 15:07 VC++ 往输出窗口打印调试信息调用函数
- mac系统命令行窗口输入javac命令,输出中文乱码得问题
- mac系统命令行窗口输入javac命令,输出中文乱码得问题