如何使用复制过程显示安装页面,如图像[NSIS脚本]中所示

时间:2017-09-08 11:43:22

标签: nsis

byte[] videoDate;
using (var wc = new WebClient())
videoDate = wc.DownloadData(videoUrl);

var response = await
_api.SendVideo(update.Message.Chat.Id,new FileToSend(videoUrl, new MemoryStream(videoDate)), 15, myBotAdMsg);

1 个答案:

答案 0 :(得分:0)

您的脚本中有两个InstFiles页面,不要这样做。您还在InstFiles页面的开头调用函数,但不应在页面函数中执行文件操作。

您的文件操作本身没有意义,您不应该根据当前目录进行复制!

" copy"屏幕截图中的进度实际上是从安装程序中提取文件,您可以在NSIS中免费获取:

RequestExecutionLevel Admin
InstallDir "$ProgramFiles\MyApp"
!include MUI2.nsh
!include LogicLib.nsh

!insertmacro MUI_PAGE_WELCOME
!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_INSTFILES 
!insertmacro MUI_LANGUAGE "English"

Function .onInit
UserInfo::GetAccountType
pop $0
${If} $0 != "admin" ;Require admin rights to install application
    MessageBox mb_iconstop "Administrator rights required!"
    SetErrorLevel 740 ;ERROR_ELEVATION_REQUIRED
    Quit
${EndIf}
FunctionEnd

Section
SetOutPath "$InstDir"
File /r "c:\myfiles" ; This will display the extract progress
SectionEnd

如果您确实要复制文件而不是解压缩,那么您只需删除/SILENT开关即可显示正常的Windows复制对话框。

如果必须复制输出类似于extract的文件,则必须使用FindFirst + FindNext手动遍历源目录,并对每个文件使用DetailPrint + CopyFiles /SILENT