在某些安装场景下,由于完整的安装包非常大,下载时间较长,下载后需要人工干预安装,一定程度上会降低用户体验;制作nsNiuniuSkin安装包的解决方案提供了安装包的在线版本。
支持把实际要安装的内容放到服务器上,由安装包程序下载到本地并自动安装;在线安装包的体积可以控制在1M以内,分发和推广都非常方便。
实现原理在制作nsNiuniuSkin安装包的方案中,在线安装的脚本与完整安装的脚本相同。不同的是在打包编译的时候指定了宏:INSTALL_DOWNLOAD_7Z。
无需修改脚本);定义此宏后,将在安装过程中插入下载过程。在下载过程中,我们会显示安装文件的总大小、文件下载速度、下载完成百分比等信息,并通过进度条反映下载进度;同时,下载安装后,
解压下载的文件,提供安装进度,无缝连接下载和安装两个过程。值得一提的是,
我们下载的程序是一个7z文件(它是对所有要安装的文件(即FilesToInstall目录下的所有文件)进行7z压缩得到的)。安装程序下载到本地后,由nsis7zU插件解压安装。
!ifdef安装_下载_7Z #在线安装包nsniuskin:SetControlAttribute $ hInstallDlg ' SLR progress ' ' value ' ' 0 ' nsniuskin:SetControlAttribute $ hInstallDlg ' progress _ pos ' ' text ' ' ' nsniuskin:SetControlAttribute $ hInstallDlg ' progress _ tip ' ' text ' '[msg。正在下载]' #开始下载在线数据包GetFunctionAddress $ 0下载文件BG worker:CallAndWait Pop $ R4 #取回下载的结果,
进一步解压缩并安装文件。假设在服务器上存储config.ini和app.7z的url路径是:http://www.ggniu.cn/test_online_install/,那么我们将把生成的文件上传到http://www.ggniu.cn/test_online_install/.相应的服务器目录
实际应用为了让在线安装包尽可能小,我们没有把卸载程序直接打包到安装包中,而是打包到数据文件app.7z中;对于服务器环境,我们将开始实际的打包。在在线安装包的打包过程中,
我们将做以下事情:
自动生成uninst.exe文件,复制到FilesToInstall目录下,将FilesToInstall下的文件(包括uninst.exe)打包成app.7z
存储在输出目录中并根据app.7z生成config.ini,
它包含app.7z的大小和md5值,以生成不包含uninst.exe和任何其他要安装的文件的在线安装包,并在打包前对配置进行签名。在实际打包之前,我们需要配置上面描述的服务器url路径。在nsi文件中,
有相应的宏来控制在线安装包数据文件的下载路径:
#===============User-defined macro online installation package control item===================! Define install _ download _ baseurl' http://www.ggniu.cn/test _ online _ install/' Define the check-free configuration of install _ download _ config' config.ini' If during the download process,
#======================自定义宏在线安装包控制项=======================!定义INSTALL _ DOWNLOAD _ BASEURL ' http://。gg牛。cn/test _ online _ INSTALL/'定义“安装下载配置”配置。ini!定义INSTALL_DOWNLOAD_IGNOREMD50 #如果此开头打开,
安装效果可以看到在线安装包的体积约为860KB:
以下是在线安装的完整效果:
更灵活的扩展目前我们的下载和安装共用同一个进度条,即下载进度从1-100%;下载完成后,清除进度条,然后从1-100%呈现安装进度。如果您希望下载只占用前50%,安装只占用后50%,
只需要在进度回调显示那里进行少量改动即可。
结语在安装包安装过程中,精美的UI往往能让客户对所安装产品的印象更加深刻,更能体现出软件服务商在用户体验上的专注与用心!希望我们的努力,能够让安装包制作再容易一点,再快乐一点!愿天下没有难做的安装包!
标题:剑灵ui美化补丁(ui美化)
链接:https://www.52hkw.com/news/rj/55721.html
版权:文章转载自网络,如有侵权,请联系删除!