漫天飞舞
              -------个人杂感,记录个人所想、所感。
<2008年7月>
293012345
6789101112
13141516171819
20212223242526
272829303112
3456789
公告
  • 本blog主要是记录个人的思想,供自己反省。因此谢绝人生攻击。

留言簿(323)

随笔分类

随笔档案

文章分类

文章档案

相册

叶飞之处

搜索

最新评论

阅读排行榜

评论排行榜

 
VC知识库BLOG   首页  新随笔  联系  聚合  登录 
  随笔-60 文章-52 评论-675 Trackbacks-0

问:如何知道用户选择了那些组件
这里主要是想防止用户什么组件都不选择用的。

答:使用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)  编辑 收藏
Comments
  • # re: NSIS的一些体会,以问答的形式提供给和我一样的菜鸟以及比我还菜的菜鸟。
    漫天飞舞
    Posted @ 2005-10-09 11:08

     BgImage中几个函数的解释。我没有找到他的参数说明,就找到几个函数介绍,其实你有耐心的试验几下也可以出来。不是很麻烦。
    具体如下:
      BgImage::SetBg函数,它的前三个参数是背景色的最上部的颜色的rgb值。后三个是最下端的rgb值。下边的例子是从上到下为蓝色到浅蓝色(几乎黑色的过渡)
      BgImage::SetBg /NOUNLOAD /GRADIENT 0 0 255 0 0 10

    还有一个是设置字体的CreateFont  这个很简单,可以参考msdn,不过我没有找到字体在那里?只有一个默认的咯。第三个参数是字体的大小,第四个是所有字占用的宽度
      CreateFont $R0 "Comic Sans" 30 700

    这个是写文本的,就说最后的几个数字吧。前三个是字体的颜色rgb值。两个20是输出文本的左上角的坐标。800时宽度。200他们占用的高度。
      BgImage::AddText /NOUNLOAD "内容" $R0 255 255 255 20 20 800 200

  • # re: NSIS的一些体会,以问答的形式提供给和我一样的菜鸟以及比我还菜的菜鸟。
    flyingleaf
    Posted @ 2005-10-26 08:25
    注册控件
    unregdll $INSTDIR\MSHFLXGD.OCX

    卸载控件
    regdll $INSTDIR\MSHFLXGD.OCX
  • # re: NSIS的一些体会,以问答的形式提供给和我一样的菜鸟以及比我还菜的菜鸟。
    guest
    Posted @ 2008-07-16 17:15
    博主,我有个问题:

     我用system的call调用外部DLL(就是普通的),为何在我本机上实验成功,而在别个机器都是error呢?本人十分不解啊~~~~~~~~

    Function .onInit
    !insertmacro INSTALLOPTIONS_EXTRACT_AS "c:\test.ini" "test.ini"
    SetPluginUnload  alwaysoff
    SetOutPath $TEMP\            ; 创建临时目录
    File c:\TEST.dll
    System::Call 'TEST::rentb() t ().r2'
    !insertmacro INSTALLOPTIONS_WRITE "test.ini" "Field 1" "State" "$2"
    SetPluginUnload manual
    System::Free 0
    FunctionEnd

    我这个dll功能简单,仅仅是返回一个字符串而已~ 
标题  
姓名  
主页
验证码 *
内容   
  登录  使用高级评论  Top
[使用Ctrl+Enter键可以直接提交]