Nous sommes le Dim 22 Juin, 2025 16:21
Supprimer les cookies

Page 3 sur 6Précédent 1, 2, 3, 4, 5, 6 SuivantPortabilisation d'application en TCL/TK du Terrier

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

Dim 09 Nov, 2008 21:58

cyrille a écrit:Je vais donc essayer de bidouiller ce fichier path.tcl, si jamais d'autres plus compétents, veulent aussi essayer...

A plus tard.

Cyrille


ligne 151 du path.tcl pour a nous les nombres
Code: Tout sélectionner
set Home [file join $env(HOME) leterrier anous]


a remplacé par
Code: Tout sélectionner
set Home [file join .\ leterrier anous]
Si tu ne sais pas : demande... MAIS si tu sais : partage !
laclasse

Messages : 222
Géo : Le puy (43)

Lun 10 Nov, 2008 16:48

Tuxmouraille et Laclasse,

Merci à tous les deux pour le temps que vous passer pour la portabilisation.
Laclasse, ta solution est vraiment super simple et j'ai même réussi à la mettre en place :wink: (testé avec suite pour l'instant).

Tuxmuraille, ta solution me semble en effet moins "intrusive" dans le logiciel initial et surtout "réinvestissable" sur d'autres logiciels.
J'ai essayé plusieurs choses hier soir :
1° Dans un fichier bat, j'ai essayé de modifier les variables d'environnements comme indiqué dans le lien que tu avais donné. Mais un message d'erreur apparait.
2° Je me suis donc tourné vers un fichier nsis. J'ai utilisé celui de aMSN pour voir comment cela fonctionne. Et puis l'heure avançant, je me suis arrêté là, il faut bien dormir un peu tout de même :wink:

Bonne journée à tous.

Cyrille
cyrille

Avatar de l’utilisateur
Messages : 953
Géo : Seine et Marne

Lun 10 Nov, 2008 18:36

Salut,
Je viens de finir un PortableaNous, pour anouslesnombres, téléchargeable ici: http://download.tuxfamily.org/nomadsofts/PortableTerrier/.
A première vue ça fonctionne. J'ai utilisé le script de PortableCornice qui utilise les même variables d'environnement.

Les logiciels du Terrier sont sous licence GPL, si vous modifiez le code, vous ne pourrez pas les redistribuer sous le même nom.
Sauf mention contraire, le message ci-dessus, ses erreurs et ses fautes d'orthographes n'engagent que son auteur.
Tuxmouraille

Messages : 1044

Lun 10 Nov, 2008 21:13

merci Tuxmouraille ca marche et avec le code du lanceur c'est plus clair
avec un bat j'avais toujours des erreurs lorsque je modifié le chemin du profil
Si tu ne sais pas : demande... MAIS si tu sais : partage !
laclasse

Messages : 222
Géo : Le puy (43)

Lun 10 Nov, 2008 23:13

Un grand merci à toi Tuxmuraille,

C'est vraiment nickel.
Du coup, en changeant les noms de fichiers dans le fichier nsi, j'ai réussi à faire la même chose pour les applications :
Aller
Associations
Calcul Réfléchi
Calculs
le tout est téléchargeable pour test ici
Par contre, j'ai fait de même pour Contour et Chemin et je ne comprends pas pourquoi mais ces applications continuent à écrire des données dans DocAndSetting\Utilisateur alors que j'ai utilisé exactement la même procédure qu'avec les autres...

Si j'ai un peu de temps demain, j'essaierai de m'attaquer à la suite.

Encore merci Tuxmuraille.
Dernière édition par cyrille le Jeu 11 Déc, 2008 23:28, édité 1 fois au total.
cyrille

Avatar de l’utilisateur
Messages : 953
Géo : Seine et Marne

Mar 11 Nov, 2008 00:22

Petite question licence...

tu expliquais, Tuxmouraille, qu'on est obligé de changer le nom d'une application sous GPL si on en modifie le code.
Et si on enlève des fichiers composant l'application, peut-on garder le même nom avec la licence GPL ?
Car pour alléger les applications, je pensais enlever quelques fichiers inutiles (le desintallateur, les fichiers pour linux ? ...).

Cyrille
cyrille

Avatar de l’utilisateur
Messages : 953
Géo : Seine et Marne

Mar 11 Nov, 2008 00:32

les fichiers pour linux peuvent servir dans le cas d'un usage windows // linux
Si tu ne sais pas : demande... MAIS si tu sais : partage !
laclasse

Messages : 222
Géo : Le puy (43)

Mar 11 Nov, 2008 10:50

cyrille a écrit:Par contre, j'ai fait de même pour Contour et Chemin et je ne comprends pas pourquoi mais ces applications continuent à écrire des données dans DocAndSetting\Utilisateur alors que j'ai utilisé exactement la même procédure qu'avec les autres...

Il ne doit pas utiliser la même variable d'environnement que les autres. Ou alors il lit le chemin dans le registre, et là il faudra contacter les développeur pour leur demander en leur expliquant pourquoi, de modifier le code.

cyrille a écrit:tu expliquais, Tuxmouraille, qu'on est obligé de changer le nom d'une application sous GPL si on en modifie le code.
Et si on enlève des fichiers composant l'application, peut-on garder le même nom avec la licence GPL ?
Car pour alléger les applications, je pensais enlever quelques fichiers inutiles (le desintallateur, les fichiers pour linux ? ...)

Si tu changes quoi que ce soit à une application sous GPL, tu la modifie, et donc d'après la GPL tu n'as pas le droit de la redistribuer sous la même nom.
Dans le cas de tes changements je ne sais pas.

Je garderais bien les fichiers GNU/Linux et Mac OS X pour proposer un version multiplateforme.
Sauf mention contraire, le message ci-dessus, ses erreurs et ses fautes d'orthographes n'engagent que son auteur.
Tuxmouraille

Messages : 1044

Mar 11 Nov, 2008 11:24

Pour contour et chemin c'est la variable d'environnement userprofile et lieu de homdrive et homepath.
Ce code devrait être assez générique pour fonctionner avec tous le Terrier. Il vous suffira juste de modifier la partie des !define au début.
Testé avec anous et chemin. Maintenant il faut faire de jolies icônes pour chaque logiciels.

Code: Tout sélectionner
; ----------------------------------------------------
; Portable LeTerrier
; ----------------------------------------------------
; Par tuxmouraille
; Utilisant comme base de travail le script de John T. Haller
; License : GPL
; Ce script permet de créer Portable LeTerrier.
; Ce script est à compiler avec NSIS de Nullsoft (http://www.nullsoft.com).
; Il nécessite le plugin "ipicsplash" (affichage splashscreen) pour être compilé.
; $id=PortableLeTerrier.nsi $date=2006-02-18
; ----------------------------------------------------
; Général

!define NAME "PortableLeTerrier"
!define APP "LeTerrier"
!define VER "0.2.0.0"
!define WEBSITE "http://www.framakey.org"
!define DEFAULTEXE "wish.exe"
!define DEFAULTSCRIPT "leterrier.tcl"
!define WORKINGDIR "leterrier"
!define DEFAULTAPPDIR "tcltk\bin"
!define DEFAULTPROFILE "profile"


; Nom de l'exécutable
  Name "${NAME}"
; Etiquette
  Caption "${NAME} - Portable and Proud"
; 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 ProfileDir
  Var DisableSplashScreen
  Var ExecString
  Var Drive
  Var AppScripts

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

  VIProductVersion "${VER}"
  VIAddVersionKey FileDescription "${NAME} for Windows"
  VIAddVersionKey LegalCopyright "GPL"
  VIAddVersionKey Comments "Allows ${APP} to be run from a removable drive.  For additional details, visit ${WEBSITE}"
  VIAddVersionKey CompanyName "by 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" "${NAME}" "${APP}Scripts"
      StrCpy "$AppScripts" $0
    ReadINIStr $0 "$IniPath\${NAME}.ini" "${NAME}" "${APP}Profile"
      StrCpy "$ProfileDir" $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 "$AppScripts" "$EXEDIR\${WORKINGDIR}\${DEFAULTSCRIPT}"
    StrCpy "$ProfileDir" "$EXEDIR\${DEFAULTPROFILE}"
    StrCpy "$DisableSplashScreen" "false"
   

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

  EndINI:
    IfFileExists "$AppDirectory\$AppExecutable" FoundProgramEXE

  NoProgramEXE:
; Si le LeTerrier pointant vers l'exécutable est invalide
    MessageBox MB_OK|MB_ICONEXCLAMATION `$AppDirectory\$AppExecutable was not found.  Please check your configuration`
    Abort

  FoundProgramEXE:
    StrCmp $DisableSplashScreen "true" GetAppParameters
; Affiche le splash screen
    InitPluginsDir
    File /oname=$PLUGINSDIR\splash.jpg "${NAME}.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" "$AppScripts"`
  Goto AdditionalParameters

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

  AdditionalParameters:
    StrCmp $AdditionalParameters "" ProfileEnvironment

; Envoi des Paramètres additionnels
    StrCpy $ExecString `$ExecString $AdditionalParameters`

; Fake home directory
  ProfileEnvironment:
; Set the %HOMEDRIVE%%HOMEPATH% directory if we have a path
    StrCmp $ProfileDir "" ExecApp
    IfFileExists "$ProfileDir\*.*" "" ExecApp
   Push "$EXEDIR"
   Call GetRoot
   Pop "$Drive"
   
   System::Call 'Kernel32::SetEnvironmentVariableA(t, t) i("USERPROFILE", "$ProfileDir").r0'

   StrCpy "$ProfileDir" "$ProfileDir" "" 2
   
   System::Call 'Kernel32::SetEnvironmentVariableA(t, t) i("HOMEDRIVE", "$Drive").r0'
   
   System::Call 'Kernel32::SetEnvironmentVariableA(t, t) i("HOMEPATH", "$ProfileDir").r0'

; Lancement Application
  ExecApp:
   SetOutPath "$EXEDIR\${WORKINGDIR}"
   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
Sauf mention contraire, le message ci-dessus, ses erreurs et ses fautes d'orthographes n'engagent que son auteur.
Tuxmouraille

Messages : 1044

Mar 11 Nov, 2008 12:59

Merci Tuxmouraille,

je vais essayer cela.
Pour les ciones, j'essaie de reprendre celles fournies par l'équipe du terrier (dans le dossier windows des applications).
Par contre, pour les screensplashs, je bloque. J'essaie d'ouvrir les fichiers SVG présents dans le dossier PortableApplicationCode avec Inkscape mais plusieurs images de base semblent absentes. Où peut-on récupérer un modèle de screenspashs utilisés par les applications framakey ?
cyrille

Avatar de l’utilisateur
Messages : 953
Géo : Seine et Marne

Qui est en ligne ?

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