NSIS Inetc插件 扩展使用
Inetc客户端插件,用于文件的上传和下载。
官网文档:https://nsis.sourceforge.io/Inetc_plug-in
以下载net包为例
inetc::get "https://download.visualstudio.microsoft.com/download/pr/014120d7-d689-4305-befd-3cb711108212/0fd66638cde16859462a6243a4629a50/ndp48-x86-x64-allos-enu.exe" "$TEMP\ndp48-x86-x64-allos-enu.exe"
传统界面的安装包,直接按照上面的方法使用即可。
为什么要扩展?
当我们使用自定义界面制作安装包时,遇到下载文件较大或网络不稳定的情况下,应当向用户展示下载文件的进度信息,增加用户体验。
扩展后的插件
扩展后的插件,提供传入一个回调函数,通过回调函数,可以获取到当前下载的进度信息,提供如下信息:
- 当前进度(百分比)
- 累计大小
- 已下载大小
- 下载速度
- 剩余时间(秒)
示例代码
#Net包下载地址
!define NET_PACK_DL_URL "https://download.visualstudio.microsoft.com/download/pr/014120d7-d689-4305-befd-3cb711108212/0fd66638cde16859462a6243a4629a50/ndp48-x86-x64-allos-enu.exe"
#Net包名称
!define NET_PACK_NAME "ndp48-x86-x64-allos-enu.exe"
; Net安装包下载回调
Function NetPackDownLoadCallBack
; 0-当前进度(百分比)
Pop $0
; 1-累计大小
Pop $1
; 2-已下载大小
Pop $2
; 3-下载速度
Pop $3
; 4-剩余时间
Pop $4
FunctionEnd
;下载 .NET Framework 4.0
Function DownloadNetFramework4
GetFunctionAddress $R9 NetPackDownLoadCallBack
inetc::get "${NET_PACK_DL_URL}" "$TEMP\${NET_PACK_NAME}" $R9
; 读取值
Pop $1
; 写入值
Push $1
FunctionEnd