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

插件源码下载

github:https://github.com/zhaobangyu/NSIS/tree/PluginCode

posted @ 2021-01-11 14:39  独一无二~  阅读(529)  评论(0编辑  收藏  举报