最新消息:

自定义目录选择页面制作之安装

nsis 永恒心锁 2573浏览 0评论

在nsis制作自定义界面中,目录选择页面个人感觉最为繁琐,因为该界面不仅涉及到界面控件的创建,还要涉及到控件消息传递和状态改变时的回调函数通告。

其中安装目录中的8盘符,在本机中并不存在,为避免用户安装出错,在控件的通告函数中禁用下一步,等待用户修改为可用磁盘。

Function OnChange
 ${NSD_GetText} $INST_SDAT_LOC $6 ;获取控件文本状态,这里是指安装目录框的文字,也就是安装路径。
 StrCpy $INSTDIR $6 ;将值赋予常量
 ${GetRoot} "$INSTDIR" $R3 ;获取安装根目录
 StrCpy $R0 "$R3"
 StrCpy $R1 "invalid"
 ${GetDrives} "ALL" "HDDDetection" ;获取将要安装的根目录磁盘类型
 ${If} $R1 == HDD ;是硬盘
 GetDlgItem $R7 $HWNDPARENT 1
 EnableWindow $R7 1
 ${Else}
 GetDlgItem $R7 $HWNDPARENT 1
 EnableWindow $R7 0
 ${endif}}
FunctionEnd

到了这一步,基本可以通过控件状态通告对安装路径是否有效进行自动处理。但还有一个问题,如果用户选择的目录有效,但磁盘剩余空间不足怎么办?原来想过在OnChange里面一起判断,后来经过测试发现,如果也一并单纯的禁用下一步,会让不太熟悉计算机的用户困惑,并且与上面的磁盘类型判断代码出现相同冲突,于是化繁为简,创建一个页面离开函数,在里面使用警告对话框提醒。

Function Page_leave
 ${NSD_GetText} $INST_SDAT_LOC $0
 StrCpy $INSTDIR $0
 ${GetRoot} "$INSTDIR" $R3
 StrCpy $R0 "$R3"
 ${DriveSpace} "$R3" "/D=F /S=M" $R0 #获取指定盘符的剩余可用空间,/D=F剩余空间, /S=M单位兆字节
 ${If} $R0 < 110 #110即程序安装后需要占用的实际空间,单位:MB
 MessageBox MB_OK|MB_ICONEXCLAMATION "指定安装的分区剩余空间不足,请重新选择其它分区安装!"
 Abort
 ${endif}
 FunctionEnd

ok,虽然不是很规范,但彻底解决了关于路径判断的问题

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

转载请注明:永恒心锁-分享互联网 » 自定义目录选择页面制作之安装

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