Nous sommes le Mar 24 Juin, 2025 07:31
Supprimer les cookies

Page 4 sur 4Précédent 1, 2, 3, 4Portabliser une application ?

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

Mer 31 Mai, 2006 16:08

Salut,

Désolé pour le retard :(

Donc :

Quand j'ai vu le code des lanceurs de la framakey, je me suis dis : ca va pas être évident d'adapter ca pour mes logiciels favoris sans passer quelques heures pour s'initier à NSIS et comprendre le code :p ...

J'ai fait donc quelques recherche, et je suis tombé sur Reg rapper qui se limite aux clés du registre ... J'ai également trouvé Unilaunch mais il est plutot limité et permet pas de faire grand chose ...

Je me suis donc penché sur le code des lanceurs de la framakey et j'ai pensé bien de *me* faire un petit code de base basé sur celui ci, histoire de portabiliser mes logiciels favoris :). Et donc j'ai pris gout à NSIS et ce que j'ai fait (du moins adapté) permet en remplissant quelques variables et deux fichiers INI de portabiliser *en principe* les logiciels qu'on veux assez simplement :p . Je me suis également efforcé de faire un truc leger (pas de ini pour les variables, pas de slpahscreen, pas de prise en compte de paramètres exterieur, etc). Et voilà, j'ai pensé bien de partager ce que j'ai fait :

histoire de voir si les personnes habituées des logiciels portables comme vous aprouvent l'idée et aprouvent le code en lui même étant donné que j'ai pas encore eu le temps de tester ca encore en pratique (avec un logiciel).
danyl

Messages : 21

Jeu 08 Juin, 2006 16:41

Bonjour

J'ai un petit problème avec les nouveaux scripts NSIS des lanceurs :

J'utilise comme travail de base celui de SciTE et celui de Maxima.

La création de l'EXE se fait sans problème, tout fonctionne, pas d'erreurs lors de la génération avec MakeNsisView, seulement lorsque je lance EXE final, il ne m'affiche pas le splash-screen... C'est grave docteur ? Avez vous le même problème ???

Le code :
Code: Tout sélectionner
; ----------------------------------------------------
; PortableXXX
; ----------------------------------------------------
; Par sarkos modifié par detruc
; Utilisant comme base de travail le script de John T. Haller
; License: GPL
; Ce script permet de créer PortableXXX.
; Compiler: NSIS (http://www.nullsoft.com).
; Require plugins: "ipicsplash"
; $id=PortableXXX.nsi $date=2006-06-07
; ----------------------------------------------------
;Copyright (C) 2005-2006 Framakey

;Website: http://www.framakey.org

;This software is OSI Certified Open Source Software.
;OSI Certified is a certification mark of the Open Source Initiative.

;This program is free software; you can redistribute it and/or
;modify it under the terms of the GNU General Public License
;as published by the Free Software Foundation; either version 2
;of the License, or (at your option) any later version.

;This program is distributed in the hope that it will be useful,
;but WITHOUT ANY WARRANTY; without even the implied warranty of
;MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
;GNU General Public License for more details.

;You should have received a copy of the GNU General Public License
;along with this program; if not, write to the Free Software
;Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
; ----------------------------------------------------
; Général

; Définition variables entête
!define NAME "PortableXXX"
!define FULLNAME "Portable XXX"
!define APP "XXX"
!define VER "0.1.0.0"
!define WEBSITE "http://www.framakey.org"
!define DEFAULTEXE "XXX.exe"
!define DEFAULTAPPDIR "XXX"

; Nom de l'exécutable
  Name "${NAME}"
; Etiquette
  Caption "${NAME} - Portable et discret"
; Icone
  Icon "${NAME}.ico"
  WindowIcon Off
; Nom du fichier à créer
  OutFile "${NAME}.exe"

; Runtime Switches
  SetDateSave on
  SetDatablockOptimize on
  CRCCheck On
  SilentInstall Silent
  AutoCloseWindow True

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

  Var IniPath
  Var DataDir
  Var AppDirectory
  Var AppExecutable
  Var AdditionalParameters
  Var DisableSplashScreen
  Var ExecString

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

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

  VIProductVersion "${VER}"
  VIAddVersionKey FileDescription "${FULLNAME} pour Windows"
  VIAddVersionKey LegalCopyright "GPL"
  VIAddVersionKey Comments "Permet de lancer ${APP} depuis un disque amovible. Pour plus de détails, visitez ${WEBSITE}"
  VIAddVersionKey CompanyName "Par detruc pour Framakey/Framasoft"
  VIAddVersionKey OriginalFilename "${NAME}.exe"
  VIAddVersionKey FileVersion "${VER}"

; ----------------------------------------------------
; Sections

Section "Main"

; Trouver le fichier INI, s'il y en a un
  IfFileExists "$EXEDIR\${NAME}.ini" "" CheckDataINI
    StrCpy "$IniPath" "$EXEDIR"
    Goto ReadINI

  CheckDataINI:
    Push "$EXEDIR"
    Call GetRoot
    Pop $0
    strcpy "$DataDir" "$0\Data\AppsData"
    IfFileExists "$DataDir\${APP}\${NAME}.ini" ""  NoINI
      StrCpy "$IniPath" "$DataDir\${APP}"
      Goto ReadINI

  ReadINI:
; Lit les paramètres du fichier INI
    ReadINIStr $0 "$IniPath\${NAME}.ini" "${NAME}" "${APP}Directory"
      StrCpy "$AppDirectory" "$EXEDIR\$0"

; Vérifie que les paramètres requis ci-dessus sont présents
    IfErrors NoINI

    ReadINIStr $0 "$IniPath\${NAME}.ini" "${NAME}" "AdditionalParameters"
      StrCpy "$AdditionalParameters" $0
    ReadINIStr $0 "$IniPath\${NAME}.ini" "${NAME}" "${APP}Executable"
      StrCpy "$AppExecutable" $0
    ReadINIStr $0 "$IniPath\${NAME}.ini" "SplashScreen" "DisableSplashScreen"
      StrCpy "$DisableSplashScreen" $0

; Pour n'importe quelle paramètre du fichier INI non requis contenant une chaine vide, ignorer les erreurs associées
    ClearErrors

; Correct PROGRAMEXECUTABLE si paramètre vide
    StrCmp $AppExecutable "" "" EndINI
    StrCpy "$AppExecutable" "${DEFAULTEXE}"
    Goto EndINI

  NoINI:
; Pas de fichier INI, nous utiliserons les paramètres par défaut
    StrCpy "$AdditionalParameters" ""
    StrCpy "$AppExecutable" "${DEFAULTEXE}"
    StrCpy "$DisableSplashScreen" "false"

    IfFileExists "$EXEDIR\${DEFAULTAPPDIR}\${DEFAULTEXE}" "" NoProgramEXE
      StrCpy "$AppDirectory" "$EXEDIR\${DEFAULTAPPDIR}"
      GoTo EndINI

  EndINI:
    IfFileExists "$AppDirectory\$AppExecutable" FoundProgramEXE

  NoProgramEXE:
; Si le chemin pointant vers l'exécutable est invalide
    MessageBox MB_OK|MB_ICONEXCLAMATION `$AppExecutable est introuvable.  Vérifiez votre configuration.`
    Abort
 
  FoundProgramEXE:
    StrCmp $DisableSplashScreen "true" GetAppParameters
; Affiche le splash screen
    InitPluginsDir
    File /oname=$PLUGINSDIR\splash.jpg "${NAME}_splash.jpg"
    ipicsplash::show 3000 600 400 0x04025C "$PLUGINSDIR\splash.jpg"

; Check des paramètres
  GetAppParameters:
    Call GetParameters
    Pop $0

; Routine si pas de paramètres
  StrCmp "'$0'" "''" "" ExecWithParameters
  StrCpy $ExecString `"$AppDirectory\$AppExecutable"`
  Goto AdditionalParameters

; Routine si paramètres
  ExecWithParameters:
    StrCpy $ExecString `"$AppDirectory\$AppExecutable" $0`
    Goto ExecApp

  AdditionalParameters:
    StrCmp $AdditionalParameters "" ExecApp

; Additional Parameters
    StrCpy $ExecString `$ExecString $AdditionalParameters`

; Lancement Coolplayer
  ExecApp:
    Exec "$ExecString"

SectionEnd

Section .onInit
  Call Mutex
SectionEnd

; -------------------------------------------
; Obtenir les paramètres
; -------------------------------------------
Function "GetParameters"
  Push $R0
  Push $R1
  Push $R2
  StrCpy $R0 $CMDLINE 1
  StrCpy $R1 '"'
  StrCpy $R2 1
  StrCmp $R0 '"' loop
    StrCpy $R1 ' ' ; we're scanning for a space instead of a quote
  loop:
    StrCpy $R0 $CMDLINE 1 $R2
    StrCmp $R0 $R1 loop2
    StrCmp $R0 "\" "" "nofile"
      IntOp $2 $R2 + 1
    nofile:
    ;MessageBox MB_OK "r0: $R0"
    StrCmp $R0 "" loop2
    IntOp $R2 $R2 + 1
    Goto loop
  loop2:
    IntOp $R0 $R2 - $2
    IntOp $R0 $R0 - 4
    ;MessageBox MB_OK "$R2 - $2 = $R0"
    StrCpy $R7 $CMDLINE $R0 $2 ; we save the filename
    ;MessageBox MB_OK "$2"
  loop2b:
    IntOp $R2 $R2 + 1
    StrCpy $R0 $CMDLINE 1 $R2
    ;MessageBox MB_OK "rr0: $R0"
    StrCmp $R0 " " loop2b
  StrCpy $R0 $CMDLINE "" $R2
  Pop $R2
  Pop $R1
  Exch $R0
FunctionEnd

; -------------------------------------------
; Obtenir le chemin root
; Auteur : KiCHiK
; Source : http://nsis.sourceforge.net/Get_the_Root_Directory
; -------------------------------------------
Function GetRoot
  Exch $0
  Push $1
  Push $2
  Push $3
  Push $4

  StrCpy $1 $0 2
  StrCmp $1 "\\" UNC
    StrCpy $0 $1
    Goto done

UNC:
  StrCpy $2 3
  StrLen $3 $0
  loop:
    IntCmp $2 $3 "" "" loopend
    StrCpy $1 $0 1 $2
    IntOp $2 $2 + 1
    StrCmp $1 "\" loopend loop
  loopend:
    StrCmp $4 "1" +3
      StrCpy $4 1
      Goto loop
    IntOp $2 $2 - 1
    StrCpy $0 $0 $2

done:
  Pop $4
  Pop $3
  Pop $2
  Pop $1
  Exch $0
FunctionEnd

; -------------------------------------------
; Prévenir plusieurs Instances
; Sources : http://www.veekee.net/wikinsis/docs/AppendiceC.html#C.11
; -------------------------------------------
  Function Mutex
  System::Call 'kernel32::CreateMutexA(i 0, i 0, t "myMutex") i .r1 ?e'
  Pop $R0

  StrCmp $R0 0 +3
   MessageBox MB_OK|MB_ICONEXCLAMATION "${NAME} est déjà lancé."
   Abort
  FunctionEnd

; -------------------------------------------
; Fin du script


Celui-ci est le plus simple que j'utilise. Pour modifier le registre je m'inspire de celui de Maxima.

Une idée ???

Précision : PortableXXX_splash.jpg est bien dans le mêm répertoire que le code avec l'icône PortableXXX.ico
L'avantage de la télévision sur la radio : non seulement vous entendez les parasites mais en plus vous les voyez !
detruc

Messages : 273
Géo : Région Parisienne

Jeu 08 Juin, 2006 19:32

detruc a écrit:Une idée ???

Heu, oui, peut-être, à cette ligne-là :
Code: Tout sélectionner
StrCmp $DisableSplashScreen "true" GetAppParameters

à ce niveau :
Code: Tout sélectionner
FoundProgramEXE:
    StrCmp $DisableSplashScreen "true" GetAppParameters
; Affiche le splash screen
    InitPluginsDir
    File /oname=$PLUGINSDIR\splash.jpg "${NAME}_splash.jpg"
    ipicsplash::show 3000 600 400 0x04025C "$PLUGINSDIR\splash.jpg


Il faut mettre
Code: Tout sélectionner
StrCmp $DisableSplashScreen "false" GetAppParameters

Et oui, le plus important, c'est DisableSplashScreen. Si tu met "true", il te le "disable" (il te le met pas, quoi). Il faut donc le "dé-disabler" avec le "false".
Voilà pour l'idée... :wink:
"Heureux l’étudiant qui comme la rivière peut suivre son cours sans quitter son lit" -- Dicton étudiant
mageti

Messages : 234
Géo : Valenciennes pdt les vacances, Bordeaux sinon

Ven 09 Juin, 2006 01:29

detruc a écrit:Bonjour

J'ai un petit problème avec les nouveaux scripts NSIS des lanceurs :

J'utilise comme travail de base celui de SciTE et celui de Maxima.

La création de l'EXE se fait sans problème, tout fonctionne, pas d'erreurs lors de la génération avec MakeNsisView, seulement lorsque je lance EXE final, il ne m'affiche pas le splash-screen... C'est grave docteur ? Avez vous le même problème ???



j'ai deja eu ce PB alors que j'essayais d'exporter directement a partir de InkScape des jpg... nsis ne les ouvraient pas... mais en exportant des png, et en les convertissant avec toshop, ça marchais...

donc, verifier si il n'y a pas un PB avec le format de l'image, donc, recuperer un .jpg qui marche "à coup sur" , par exemple le PortableFirefox_splash.jpg, le renomer, et tester avec celui la...

c'est peut etre ça.. beuh... :wink:
http://www.loolidays.com
joshua

Messages : 3198
Géo : Nice

Ven 09 Juin, 2006 16:21

Merci je test de suite car effectivement j'exporte directement mes jpg depuis Inkscape. Je te tiens au courant après l'essai.
L'avantage de la télévision sur la radio : non seulement vous entendez les parasites mais en plus vous les voyez !
detruc

Messages : 273
Géo : Région Parisienne

Ven 09 Juin, 2006 16:32

Non ce n'est pas ça... :(

Même le jpg de PortableFirefox il ne me l'ouvres pas...

Merci quand même Joshua
L'avantage de la télévision sur la radio : non seulement vous entendez les parasites mais en plus vous les voyez !
detruc

Messages : 273
Géo : Région Parisienne

Ven 09 Juin, 2006 16:34

As-tu essayé mon idée ?
"Heureux l’étudiant qui comme la rivière peut suivre son cours sans quitter son lit" -- Dicton étudiant
mageti

Messages : 234
Géo : Valenciennes pdt les vacances, Bordeaux sinon

Ven 09 Juin, 2006 16:37

Bizarre ce problème...
Le code a l'air bon pourtant (lu en diagonale). N'aurais tu pas le fichier PortableFilezilla.ini dans ton répertoire, avec le paramètre "DisableSplashscreen=true" ?
Un "tiens" vaut mieux que deux "tu l'auras".
pseudo wengo : stefpaillet
sarkos

Messages : 708
Géo : Marseille

Ven 09 Juin, 2006 17:24

Excusez moi, je me suis trompé.

J'avais déjà essayé de tester ce que tu disais Mageti et finalement j'avais laissé le code tel quel (c'est à dire avec disablesplashscreen=false). Ce qui cachait le splash par défaut.
Donc quand j'ai essayé l'astuce de Joshua je n'ai rien vu.
En lisant ton post (que je n'avais absolument pas aperçu, dsl) j'ai tenté de modifié true en false comme tu l'as conseillé et j'ai aperçu que false était déjà mis. Je l'ai modifié en true, puis j'ai regénéré le truc avec une image jpg qui n'est pas directement exportée de InkScape et là ça marche.

Donc je m'excuse encore de cette regrettable bourde, puisqu'au départ mon code était correct, que j'y ai mis la grouille et que juste faire en sorte de générer le jpg avec un autre logiciel que InkScape aurait du résoudre ce bazar.

Désolé
Detruc
L'avantage de la télévision sur la radio : non seulement vous entendez les parasites mais en plus vous les voyez !
detruc

Messages : 273
Géo : Région Parisienne

Qui est en ligne ?

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