在一些安装场景中,由于完整的安装包很大,下载时间长,且下载后需要人工干预来进行安装,这样会一定程度的降低用户使用体验;nsNiuniuSkin安装包制作解决方案提供了一种在线版本的安装包,支持将实际要安装的内容放到服务器上,由安装包程序下载至本地并自动进行安装;制作出来的在线安装包,体积可以控制在1M以内,能够非常方便的进行分发推广。
实现原理
在nsNiuniuSkin安装包制作解决方案中,在线安装的脚本与完整安装的脚本是同一套,区别在于打包编译时指定了宏:INSTALL_DOWNLOAD_7Z(通过bat脚本动态的传入,无需修改脚本);当这个宏被定义时,安装过程中将会插入下载的过程,下载过程中,我们将显示安装文件总大小,文件下载速度,下载完成百分比等信息,通过进度条来体现下载进度;同时在下载安装后,对下载的文件进行解压,并提供安装进度,无缝的衔接好下载与安装的两个流程。
值得一提的是,我们所下载的程序是一个7z文件(它是由所有待安装文件列表(即:FilesToInstall目录下所有文件)经过7z压缩而得到),在安装程序下载至本地后,通过nsis7zU插件解压来进行安装。
!ifdef INSTALL_DOWNLOAD_7Z
#在线安装包
nsNiuniuSkin::SetControlAttribute $hInstallDlg "slrProgress" "value" "0"
nsNiuniuSkin::SetControlAttribute $hInstallDlg "progress_pos" "text" ""
nsNiuniuSkin::SetControlAttribute $hInstallDlg "progress_tip" "text" "[msg.downloading]"
#开始下载在线数据包
GetFunctionAddress $0 DownloadFile
BgWorker::CallAndWait
Pop $R4
#取回下载的结果,判断是否下载成功且校验通过
${If} "$R4" != "0"
Pop $R5
StrCpy $R5 "[ms

7422

被折叠的 条评论
为什么被折叠?



