2017-09-08 5 views
-1

이미지에 등 복사 프로세스와 설치 페이지 표시 방법 [NSIS 스크립트]

Outfile Test.exe 
name "Test" 

!include MUI2.nsh 
!include LogicLib.nsh 

!insertmacro MUI_PAGE_WELCOME 
Page instfiles Installer 
!insertmacro MUI_PAGE_INSTFILES 
!insertmacro MUI_LANGUAGE "English" 


Function Installer 

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 

${Else} 

    System::Call "kernel32::GetCurrentDirectory(i ${NSIS_MAX_STRLEN}, t .r0)" 

    CreateDirectory $3\pj 

    CopyFiles /SILENT \Source\*.* \destination\ 

${EndIf} 
FunctionEnd 
+0

을 파일을 복사해야하는 경우 –

+0

왜 검열 이미지? 너를 돕는 것이 더 힘들어진다. – Anders

답변

0

당신은 당신의 스크립트에 두 InstFiles 페이지가, 그렇게하지 않습니다. InstFiles 페이지의 시작 부분에서 함수를 호출하고 있지만 페이지 함수에서 파일 작업을 수행하면 안됩니다.

파일 작업 자체가 의미가 없으므로 현재 디렉토리를 기반으로 복사하면 안됩니다!

스크린 샷에서 "복사"진행

실제로 설치 프로그램에서 파일을 추출하고 당신은 무료로 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 복사 대화 상자가 표시됩니다.

이 표시 위의 코드를 빈 설치 페이지로 ... 수동 FindFirst + FindNext와 소스 디렉토리를 걸어 DetailPrint 각 파일에 대한 + CopyFiles /SILENT를 사용해야 추출 유사한 출력