问:如何知道用户选择了那些组件
这里主要是想防止用户什么组件都不选择用的。
答:使用SectionGetFlags(一个烂鸡蛋,废话还用你说。)。添加一个函数
Function .onSelChange
SectionGetFlags ${SectionA} $0
SectionGetFlags ${SectionB} $1
strcmp $0 0 0 +3
strcmp $1 0 0 +2
MessageBox MB_OK "你个sb为啥即不选A也不选B呢?"
;看明白了没?得到他们的标志位后,什么都不要考虑了,他如果不选择,什么鸟"第一位(低位)代表该区段当前是否选中,第二位代表该区段是否是一个区段组(请不要修改这里除非你真的很了解),第三位代表该区段是否是一个区段组的结尾(同样,请不要修改),第四位代表该区段文字是否描黑显示,第五位代表该区段是否是只读,第六位代表区段组是否自动展开,第七位代表区段组是部分选定的,第八位是部分选定区段组切换内部使用,第九位是用来反映区段名称更改。如果指定了超出范围的区段则会放置一个错误的标记。
"都是废话.所以直接看他是不是0,是0就是没有选择.
FunctionEnd
ps:补充一点,他虽然不选,但是此时他却可以点击下一步,所以,你如果提示晚了,就餐咯。因此,判断完后立即给他打个勾上去。这样他就没有主意了。例如
:SectionSetFlags ${SectionA} 1 当然你可以把1替换为任意咚咚。但是这次要看哪个鸟说明了,否则就会不想你想象的那么如意咯。
问: 如何运行一个安装文件 .inf
自动安装驱动的
答: ExecWait "RunDll32 advpack.dll,LaunchINFSection skins.inf,DefaultInstall"
问: 写nsis调用的dll有什么需要注意的地方?
忽悠人的。
答: 除了我连抄带写的那篇blog外,还有一个小窍门,就是使用
#define NSISFunc(name) extern "C" void __declspec(dllexport) name(HWND hwndParent, int string_size, char *variables, stack_t **stacktop)
这样以后需要添加一个函数的时候仅需要:
NSISFunc(yourdllfunction){} 就可以了.(这个是nsis自己的代码这样使用的时候被我看到的 :P
问: 在写的安装的时候有何心得体会?
一点临时的体会
答: 这个嘛一时半会儿也说不完(不是白赖,的确是的),我的体会就是多看它带的例子,虽然小,但是对你需要的功能很有用,就像写软件,只要你会搞helloword
至于能不能写出好的软件,就不是语言的问题了,而是天赋了.我的天赋不高,所以写的很烂.所以写的blog也很浅,不过如果是刚接触nsis,还是很有帮助的.毕竟
是我刚开始找了好久才总结出来的.至于网络上的东西,nnd,我就像说一句:"希望大家都不要互相的copy好不好?都tmd抄袭,找来找去都找不到有用的资料!"
posted on 2005-10-08 15:09 flyingleaf 阅读(3371)
评论(3) 编辑 收藏