Nous sommes le Ven 18 Juil, 2025 21:02
Supprimer les cookies

Page 1 sur 21, 2 Suivant[Résolu] pop up d'information lors lancement framakey 1.8

Image Image Forum dédié à notre projet de clé USB nomade libre sous Windows

Mar 14 Oct, 2008 16:40

Bjr,

Je désire qu'une fenêtre d'information s'ouvre lors du lancement de la framakey, et ce, avant tout lancement de logiciel.

Pour ce faire j'ai donc créé un .exe que j'ai déclaré dans le start.ini de démarrage. Mon souci est que la fenêtre d'information est tout de site masquée par un pop up d'ouverture d'application, et ce que je voudrais, c'est que le reste du lancement ne démarre qu'une fois qu'on a fermé la fenêtre d'information.

Donc, comment peux t'on mettre en pause le lancement durant le temps de lecture de la fenêtre d'information ?
winsy

Messages : 11

Mer 15 Oct, 2008 12:22

C'est bon, j'ai résolu ma question.

J'ai créé une msgbox directement dans le start.exe.
winsy

Messages : 11

Jeu 16 Oct, 2008 17:29

Bonjour,

Je pense que ça pourrait m'intéresser ...

Pourrais-tu mettre le .nsi et/ou l'exe

Merci
Totoche

Messages : 398
Géo : Drôme / Ardèche

Jeu 16 Oct, 2008 19:02

Totoche a écrit:Bonjour,

Je pense que ça pourrait m'intéresser ...

Pourrais-tu mettre le .nsi et/ou l'exe

Merci


J'avoue que je ne sais pas comment faire, mis à part, faire un copier/coller du texte...
winsy

Messages : 11

Ven 17 Oct, 2008 17:35

Bonjour,

Le texte m'ira très bien (avec "Code :").

Merci winsy
Totoche

Messages : 398
Géo : Drôme / Ardèche

Ven 17 Oct, 2008 18:36

voilà :

Code: Tout sélectionner
; Définition variables entête
  !define APPLANG "Fr"
  !define NAME "Clé"
  !define FULLNAME "Clé"
  !define APP "start"
  !define VER "1.3.0.0"
  !define COMPANY "Icare-Key"
  !define DEVELOP "Icare-Key™"
  !define DESCRIPTION "${FULLNAME}"
  !define COMMENTS "${FULLNAME} (${APPLANG}) vous permet de lancer la suite logicielle ${COMPANY}."
  !define WEBSITE "http://"

; Inclusion langue française (ajout de sarkos)
LoadLanguageFile "${NSISDIR}\Contrib\Language Files\French.nlf"

; Nom de l'exécutable
  Name "${NAME} ${VER}"
; Etiquette
  Caption "${NAME} ${VER}"
; Icone
  Icon "start.ico"
  WindowIcon off

; Nom du fichier à créer
  OutFile "${APP}.exe"

; Runtime switches
  SetDateSave on
  SetDatablockOptimize on
  CRCCheck on
  SilentInstall silent
  AutoCloseWindow true

; -------------------------------------------
; Version Informations

  VIProductVersion "${VER}"
  VIAddVersionKey "ProductName" "${NAME}"
  VIAddVersionKey "CompanyName" "${COMPANY}"
  VIAddVersionKey "LegalTrademarks" "${NAME} by ${COMPANY}"
  VIAddVersionKey "LegalCopyright" "2005-2008© by ${DEVELOP} (GPL)"
  VIAddVersionKey "FileDescription" "${DESCRIPTION}"
  VIAddVersionKey "Comments" "${COMMENTS} Pour plus de détails, visitez ${WEBSITE}."
  VIAddVersionKey "FileVersion" "${VER}"

; -------------------------------------------
; Variables

  Var DisableSplashScreen
  Var SplashScreenDir
  Var ExecuteProg
  Var WorkDir
  Var Parameter
  Var Cmd
  Var LaunchIt
  Var MessageToShow
  Var AskForIt
  Var n
  Var IniConfFile


; -------------------------------------------
; Macros
; Cette macro sert à nétoyer les chemins envoyés en commande.
; Elle enlève tous les espaces et guillements: " à droite et à gauche du chemin.
!macro CleanPathCMD _pathcmd
   
   StrCpy $R0 `${_pathcmd}`
   
   ; on va enlever tous les espaces et " au début du chemin
   StrCpy `$R1` `$R0` 1 ; on récupère de premier carractère du chemin
   StrCmp `$R1` `"` +2 +1
   StrCmp `$R1` ` ` +1 +3
   StrCpy `$R0` `$R0` `` 1
   Goto -4

   ; on va enlever tous les espaces et " à la fin
   StrCpy `$R1` `$R0` `` -1 ; on récupère le dernier caractère du chemin
   StrCmp `$R1` `"` +2 +1
   StrCmp `$R1` ` ` +1 +3 ; si c'est un " +1 pour l'enlever si non +2
   StrCpy `$R0` `$R0` -1 ; le dernier carractère est un ", on l'enlève lechemin" devient lechemin
   Goto -4

   StrCpy "${_pathcmd}" $R0
   
!macroend

; -------------------------------------------
; Sections
Section "Main"
;== on récupère d'éventuels paramètres envoyés
   Call GetParameters
   Pop $Cmd
   StrCmp $Cmd `-close` +1 CloseProcess
   NotifyIcon::Icon /NOUNLOAD "iy" 103
   NotifyIcon::Icon /NOUNLOAD "n" "Clé" "Fermeture de la clé!"
   ReadINIStr "$IniConfFile" "$EXEDIR\${APP}.ini" "ConfigurationFile" "path"
   WriteINIStr "$EXEDIR\${APP}.ini" "ConfigurationFile" "path" ""
   Sleep 1000
   Call CloseStarter
   Goto TheEnd
   
   CloseProcess:
   StrCpy `$R1` `$Cmd` 12
   StrCmp `$R1` `closeprocess` `` OtherConfigurationFile
   StrCpy `$R2` `$Cmd` "" 13
   !insertmacro CleanPathCMD `$R2` ; allez un petit nétoyage de paramètres
   Push `$R2`
   processwork::CloseProcess
   Goto TheEnd
   
   OtherConfigurationFile:
   StrCmp `$Cmd` `` "" ConfFileInCMD
   IfFileExists "$EXEDIR\${APP}.ini" "" startiniwasnotfound
   StrCpy `$IniConfFile` "$EXEDIR\${APP}.ini"
   Goto ReadForSplash
     
   startiniwasnotfound:
   MessageBox MB_OK|MB_ICONEXCLAMATION|MB_TOPMOST "${APP}.ini est manquant.$\nVeulliez corrigez l'erreur ou utiliser un fichier de configuration secondaire."
   Abort

   ConfFileInCMD:
   StrCpy `$R2` `$Cmd`
   !insertmacro CleanPathCMD `$R2`
   StrCpy `$IniConfFile` `$R2`
   ; on va vérifier si le chemin n'est relatif
   StrCpy `$R0` `$IniConfFile` 2 1
   StrCmp `$R0` `:\` Verification FileConfRlvPath

   FileConfRlvPath:
   StrCpy `$IniConfFile` `$EXEDIR\$IniConfFile`

   Verification:
   ReadINIStr $0 `$IniConfFile` "SplashScreen" "SplashScreenDir"
   IfErrors ErrorParameter ReadForSplash

   ErrorParameter:
   MessageBox MB_OK|MB_ICONEXCLAMATION|MB_TOPMOST `Si vous avez tenté d'utiliser un fichier de configuration secondaire. \
   Ce fichier est incorrecte, veuillez le vérifier.$\nSa structure doit être identique à ${APP}.ini.$\n$\n\
   Si vous avez tenté de lancer Start avec une commande, celle ci est soit erroné soit inconnue de Start.$\n\
   La commande que vous avez passer à Start est :$\n$Cmd`
   Abort
   
   ReadForSplash:
   WriteINIStr "$EXEDIR\${APP}.ini" "ConfigurationFile" "path" "$IniConfFile"
     
   ReadINIStr $DisableSplashScreen `$IniConfFile` "SplashScreen" "DisableSplashScreen"
   ReadINIStr $0 `$IniConfFile` "SplashScreen" "SplashScreenDir"
   StrCpy "$SplashScreenDir" "$EXEDIR\$0"
 
;== là je vous demande si vous voulez lancer les programmes supplémentaires.
        ReadINIStr "$ExecuteProg" `$IniConfFile` "Starter" "ExecuteProg1"
        StrCmp "$ExecuteProg" "" "" LauncheProg

        MessageBox MB_OK|MB_ICONSTOP|MB_TOPMOST "Erreur. Le nom du premier l'executable ne peut être vide. Vérifier ${APP}.ini."
   Abort

   LauncheProg:   
   
   NotifyIcon::Icon /NOUNLOAD "iy" 103
   NotifyIcon::Icon /NOUNLOAD "n" "Clé" "Lancement de la Clé!"
   Sleep 2000
   
  MessageBox MB_OK|MB_TOPMOST|MB_ICONEXCLAMATION `Note  $\n\
   $\n\
   Pensez à régulièrement analyser votre clé avec un antivirus...`

;== ici commence la boucle pour lancer les programmes supplémentaires.
        StrCpy $n 1
        BoucleProg:
         
   ReadINIStr "$ExecuteProg" "$IniConfFile" "Starter" "ExecuteProg$n"
   StrCmp "$ExecuteProg" "" LaunchMenu
   ReadINIStr "$LaunchIt" "$IniConfFile" "Starter" "LaunchIt$n"
        StrCmp "$LaunchIt" "true" "" LaunchItFalseCmd
   ReadINIStr "$AskForIt" "$IniConfFile" "Starter" "AskForIt$n"
   StrCmp "$AskForIt" "true" "" AskForItFalseCmd
   
   ReadINIStr "$MessageToShow" "$IniConfFile" "Starter" "MessageToShow$n"
   StrCmp "$MessageToShow" "" DefaultMessage PersonnalMessage
   
   
   LaunchItFalseCmd:
   StrCmp $LaunchIt "false" EndLaunchApp ""
   MessageBox MB_OK|MB_TOPMOST|MB_ICONSTOP `Paramètre incorrecte pour LaunchIt$n.$\n\
   Lisez les instructions dans ${APP}.ini et vérifiez le paramètre.`
   Abort

   AskForItFalseCmd:
   StrCmp $AskForIt "false" WorkingDir ""
   
   StrCmp $n "1" +3
   MessageBox MB_OK|MB_TOPMOST|MB_ICONSTOP `Paramètre incorrecte pour AskForIt $n.$\n\
   Lisez les instructions dans ${APP}.ini et vérifiez le paramètre.`
   Abort

   DefaultMessage:
   StrCpy "$4" "$ExecuteProg" -4
        MessageBox MB_YESNO|MB_TOPMOST|MB_ICONQUESTION `Voulez vous lancer $4?` IDYES WorkingDir IDNO EndLaunchApp
   
   PersonnalMessage:
   MessageBox MB_YESNO|MB_TOPMOST|MB_ICONQUESTION `$MessageToShow` IDYES WorkingDir IDNO EndLaunchApp
   
   WorkingDir:
 ReadINIStr "$WorkDir" `$IniConfFile` "Starter" "WorkDir$n"
        ReadINIStr "$Parameter" `$IniConfFile` "Starter" "Parameter$n"
   StrCpy `$R0` `$WorkDir` 2 1
   StrCmp `$R0` `:\` AbsolutePath RelativePath

   AbsolutePath:
   SetOutPath `$WorkDir` ;`$ExecuteString` `$WorkDir\$ExecuteProg`
   Goto IfExecuteProgExists
   
   RelativePath:
   SetOutPath `$EXEDIR\$WorkDir` ;`$ExecuteString` `$EXEDIR\$WorkDir\$ExecuteProg`
   Goto IfExecuteProgExists
   
   IfExecuteProgExists:
        IfFileExists "$ExecuteProg" LaunchProgram
      StrCpy "$5" "$ExecuteProg" -4
      MessageBox MB_OK|MB_ICONSTOP "Erreur. Le chemin d'accès pour $5 n'est pas valide. Vérifier ${APP}.ini."
      Abort
   
        LaunchProgram:
        StrCmp "$Parameter" "" "" LPWP
        Exec "$ExecuteProg"
        Goto EndLaunchApp
        LPWP:
        Exec `"$ExecuteProg" $Parameter`
   
        EndLaunchApp:
        IntOp $n $n + 1
        Goto BoucleProg
   
LaunchMenu:

   StrCmp "$DisableSplashScreen" "true" TheEnd
     newadvsplash::show /NOUNLOAD 2500 1000 500 -2 /BANNER "$SplashScreenDir"
     Sleep 2000 ;
     ;Pop $0 ; $0 has '1' if the user closed the splash screen early,
     ; '0' if everything closed normal, and '-1' if some error occured.

     TheEnd:
NotifyIcon::Icon "r"
   
SectionEnd
       
; ---------------------------------------
; la fonction de fermeture
Function CloseStarter

   StrCpy $R2 1
   BoucleCloseProcess:
   ReadINIStr $R3 "$IniConfFile" "Starter" "LaunchIt$R2"
   StrCmp $R3 "false" IncremBoucleCloseProcess
   ReadINIStr $R1 "$IniConfFile" "Starter" "ExecuteProgToStop$R2"
   StrCmp $R1 "" +1 +3
   ReadINIStr $R1 "$IniConfFile" "Starter" "ExecuteProg$R2"
   StrCmp $R1 "" FinBoucleCloseProcess
   
   processwork::CloseProcess `$R1`
   
   IncremBoucleCloseProcess:
   IntOp $R2 $R2 + 1
   Goto BoucleCloseProcess

   FinBoucleCloseProcess:

FunctionEnd

; GetParameters
 ; entrée, aucune
 ; sortie, haut de la pile (remplacement, avec ex. toutca)
 ; ne modifie aucune autre variable.

 Function GetParameters
 
   Push $R0
   Push $R1
   Push $R2
   Push $R3
   
   StrCpy $R2 1
   StrLen $R3 $CMDLINE
   
   ;Check for quote or space
   StrCpy $R0 $CMDLINE $R2
   StrCmp $R0 '"' 0 +3
     StrCpy $R1 '"'
     Goto loop
   StrCpy $R1 " "
   
   loop:
     IntOp $R2 $R2 + 1
     StrCpy $R0 $CMDLINE 1 $R2
     StrCmp $R0 $R1 get
     StrCmp $R2 $R3 get
     Goto loop
   
   get:
     IntOp $R2 $R2 + 1
     StrCpy $R0 $CMDLINE 1 $R2
     StrCmp $R0 " " get
     StrCpy $R0 $CMDLINE "" $R2
   
   Pop $R3
   Pop $R2
   Pop $R1
   Exch $R0
 
 FunctionEnd
; -------------------------------------------
; Fin du script


le code qui t'intéresse est juste avant le lancement de la boucle pour les programmes...
Code: Tout sélectionner
   MessageBox MB_OK|MB_TOPMOST|MB_ICONEXCLAMATION `Note  $\n\
   $\n\
   Pensez à régulièrement analyser votre clé avec un antivirus...`
winsy

Messages : 11

Lun 20 Oct, 2008 06:45

Bonjour,

Merci winsy, ça fonctionne au poil (après modification des noms de fichiers...)

Un peu hors sujet, comme tu as l'air de maîtriser nsis : Connaitriez-vous un bon livre pour "apprendre à programmer avec Nsis" ?
Je sais qu'il y a plein de tutos, d'exemples, et de forum d'entre aide, mais j'aime et j'ai besoin du papier !... faut que j'annote, que je barre, que je surligne ...

...et j'allais oublier ... en français !
Totoche

Messages : 398
Géo : Drôme / Ardèche

Lun 20 Oct, 2008 20:01

Malheureusement totoche, mon niveau de programmeur actuel est surtout une compilation de ce que je trouve dans les différents forum et beaucoup d'essais infructueux... Je suis surtout adepte du copier / coller...et avec un peu de chance, ça marche !!
winsy

Messages : 11

Lun 20 Oct, 2008 22:54

C'est un peu pour les mêmes raisons que je cherche un bouquin :wink:
Totoche

Messages : 398
Géo : Drôme / Ardèche

Mar 21 Oct, 2008 18:49

Bonsoir,

Je cherche également à modifier le script du fichier start.nsi su starter de la framakey (1.7).
J'utilise le lanceur version 0.2.2.1...

Cependant, lorsque je veux le compiler (avec nsis), j'ai toujours une erreur... Pour voir si ça venait de mes modifs, j'ai fait l'essai avec le fichier source... même problème... J'avoue que je suis un peu perdu...

Si l'un d'entre vous a des solutions... je sius preneur ! Merci d'avance
Comete39

Messages : 122
Géo : Jura

Qui est en ligne ?

Utilisateur(s) parcourant actuellement ce forum : Aucun utilisateur inscrit