2017-09-08 4 views
-1

Comment afficher installer avec le processus de copie comme comme dans l'image [scénario 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

avec le code ci-dessus la page vide d'installation afficher –

+0

Pourquoi censor l'image? Cela rend plus difficile de vous aider ... – Anders

Répondre

0

Vous avez deux pages instfiles dans votre script, ne faites pas ça. Vous appelez également une fonction au début de la page InstFiles, mais vous ne devez pas effectuer d'opérations sur les fichiers dans les fonctions de page.

Votre opération de fichier elle-même n'a aucun sens, vous ne devriez pas copier en fonction du répertoire en cours!

La « copie » des progrès de votre capture d'écran est d'extraire effectivement les fichiers du programme d'installation et vous obtenez cela gratuitement dans 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 

Si vous voulez vraiment copier des fichiers au lieu d'extraire alors vous pouvez simplement supprimer /SILENT pour afficher la boîte de dialogue de copie Windows normale.

Si vous devez copier des fichiers avec une sortie similaire à l'extraction, vous devez manuellement parcourir le répertoire source avec FindFirst + FindNext et utiliser DetailPrint + CopyFiles /SILENT pour chaque fichier ...