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 ...
avec le code ci-dessus la page vide d'installation afficher –
Pourquoi censor l'image? Cela rend plus difficile de vous aider ... – Anders