调用插件命令时是否需要加 /NOUNLOAD
来源:互联网 发布:怎么对数据库进行优化 编辑:程序博客网 时间:2024/05/17 01:03
http://blog.csdn.net/nsisex/article/details/14452855
上次说过本来想写教程的,后来放弃了,只写了一部分
这次再摘抄一部份扫一下盲:
对于大部份人来说,可能都只会按插件提供的例子去做,能编译得过能正常运行就算了,但你想过没有,为什么有些插件需要/NOUNLOAD才能正常运行,而有些插件却从来不用也能正常运行?
首先,/NOUNLOAD是NSIS遗留下来的历史问题,是为了兼容旧版本的插件而保留下来的,在NSIS2.42之前,如果想插件在调用之后不被FreeLibrary,必须使用/NOUNLOAD参数 或SetPluginUnload alwaysoff,但这有个不便之处是必须以后不加/NOUNLOAD参数再调用一次该插件,否则会造成安装程序在退出时无法删除该dll。
从NSIS2.42开始,只要新编写的插件调用它新提供的接口,就可以自动在安装程序退出时才被FreeLibrary,因此调用插件命令时无需使用/NOUNLOAD参数。
其次,对于旧版本的插件不用 /NOUNLOAD参数也能正常运行的原因在于它被FreeLibrary后没有造成任何影响,但对于一个界面类的插件,肯定要保持插件不被FreeLibrary的,因为它需要将窗口的回调函数修改成自己内部的函数,如果它被FreeLibrary了,后果可想而知。
- 调用插件命令时是否需要加 /NOUNLOAD
- js中对方法的调用,是否需要加()
- switch case是否需要加括号
- header(location) 后面是否需要加exit?
- JS中调用函数是否加括号
- 调用pthread_mutex_destroy之后是否需要free
- new创建一个对象,是否需要加括号?
- new创建一个对象,是否需要加括号?
- 超链接或form中是否需要加.action后缀
- SQLiteDatabase 是否需要调用close()方法?什么时候调用?
- script里的onclick函数调用是否加括号问题
- ARC写的代码 外部非ARC环境调用时到底是否需要release
- 关于find命令是否加depth的异同
- 在观察者模式中调用监听者方法时需要加在try...catch块中进行
- 开启arc之后 NSNotificationCenter removeObserver 是否需要调用?
- [Android开发]SQLiteDatabase是否需要调用close()方法探究
- 是否需要主动调用Bitmap的recycle方法?
- new一个对象时加是否加括号的问题
- 析构函数
- 包容对方和失去自我的度
- UIImage与UIImageView关系(=)
- Poj 搜索练习, 必做(转)
- Android 4.2 ubantu 不能识别adb
- 调用插件命令时是否需要加 /NOUNLOAD
- 第十四周 数组的排序(非函数版)
- 存储竞价人
- 何种情况适用存储过程以及常用的分页、查询案例
- 找回任务栏显示桌面图标及Win7如何显示快速启动栏
- UIPickerView 自定义
- Spring事务管理中@Transactional的propagation参数
- 纯虚函数与抽象类
- 【转载】FileUpload控件如何实现文件上传