Subject: Re: Lilypond application portable !!!

From: Jean-Christophe D <[email-masked]>
Date: Wed, 23 Jun 2010 14:36:29 -0700 (PDT)

Bonsoir,

Je réponds à une discussion de l'an passée...

Suite à la réponse d'Eluze du 07/06/2010 ("Mise en page régulière"), j'ai
installé deux versions de Lily sur mon ordi : laissé la v2.12.3 en renommant
le répertoire et installé la v2.13.25.

1 - Les indications données par Eluze m'ont laisser penser que LilyPond
pouvait être un logiciel Portable...

2 - J'ai créé un petit .bat en DOS qui, lorsque je glisse un fichier .ly
dessus, me génère la partition en v2.12 (ancienne version) !

3 - J'ai copié LilyPond (nouvelle version, cette fois) sur ma clé USB, et
avec le petit fichier .bat, je lance de la même manière la génération de
n'importe quel fichier .ly (en le déposant sur le .bat).

Nota bene : le fichier .bat peut être sur la clé USB, mais également
n'importe où sur le disque dur, avec les projets .ly (histoire de garder la
version précédente sur une clé USB... au cas où)

Résultat : j'ai bien un LilyPond PORTABLE !

Sans toucher, bien sûr, à la base de registre, ni toucher aux paramètres de
la version éventuellement installée. C'est la définition d'un Logiciel
Portable (que certains logiciels portables ne respectent que moyennement, il
est vrai...)

Commentaires

Le .bat est très simple (2 lignes), mais il a ses contraintes d'écriture en
rapport à sa localisation (il doit être adapté au lecteur+répertoire -1- où
l'on travaille (les .ly) -2- où se situe le pgm).
Pour -1- Je ne sais pas détecter la position courante du script en DOS (le
DOS remonte à loin et ma mémoire me fait défaut...)
Pour -2- Une clé USB est mappée, selon les conditions, en E, F ou toute
autre lettre... donc même pb que -1-, et je ne sais pas trouver en DOS un
lecteur par son nom (ex: MA_CLE_LILY)

J'ai donc simplement (pour le moment) un .bat que je modifie selon la
localisation du LilyPondPortable ou alternatif et du répertoire où je
travaille.

Un (ou plus exactement deux) petits pgm pourraient détecter tout seuls la
localisation courante et rendre LilyPond utilisable dans n'importe quelle
installation (C:\... ; E:\... ; F:\... ; P:\... ; réseau ?...) etc.

Comme ici la discussion doit devenir peut-être encore plus technique -- si
cela est encore possible, je propose de m'arrêter là pour ce soir (même si
un utilisateur de LilyPond est forcément un technicien hors pair ( -- désolé
ça m'a échappé  )

Si cela intéresse toujours quelqu'un, je peux avancer dans la description du
process, et/ou passer mon script en MP ou sur cette page... et je reste à
disposition pour échanger sur la technique programmée dérivant de cet essai
!

Je vous sais tous à la hauteur, mais je ne voudrais pas vous ennuyer pour
rien...

Bonne soirée à tous,
Jean-Christophe
-- 
View this message in context: http://lilypond-french-users.1298960.n2.nabble.com/Lilypond-application-portable-tp3989054p5215319.html
Sent from the LilyPond French Users mailing list archive at Nabble.com.

---

From: Valentin Villenave <[email-masked]>
Date: Wed, 23 Jun 2010 23:48:31 +0200

> Résultat : j'ai bien un LilyPond PORTABLE !

Bravo ! On peut avoir le code ? :-)

Cordialement,
Valentin

---

From: Jean-Christophe D <[email-masked]>
Date: Wed, 23 Jun 2010 17:00:57 -0700 (PDT)

LE CODE

A la commande DOS "cmd", vous arrivez par défaut sur un répertoire du genre
C:\Documents and Settings\JCD
où JCD est compte Windows.

C'est là que va travailler par défaut le process DOS que vous allez lancer
(il va bien sûr travailler sans ouvrir la fenêtre noire).

Il s'agit donc simplement, pour ne pas aller chaque fois récupérer ses
fichiers.pdf là-bas, de commencer par se positionner dans le répertoire de
travail.

La seconde permet lancer le LilyPond souhaité avec le fichier .ly en
paramètre.

Donc 2 lignes :
 - la première pour se déplacer dans le répertoire de travail avec les .ly
 - la seconde pour lancer un autre LilyPond

Ce qui donne, dans mon exemple, un fichier "_LilyBis.bat" qui contient les
lignes (déplacement relatif + lancer Lily en v2.12.3):

cd "Mes documents\Musique\Mes partitions LilyPond\Tests"
"C:\Program Files\LilyPond2.12.3\usr\bin\lilypond.exe" %1

Autre exemple (en déplacement absolu depuis la racine + lancement de Lily
sur clé USB mappée en F:):

cd "C:\Documents and Settings\JCD\Mes documents\Musique\Mes partitions
LilyPond\Tests"
"F:\LilyPond\usr\bin\lilypond.exe" %1

Reste à glisser avec la souris le fichier maître .ly sur sur le fichier
_LilyBis.bat et le tour est joué !

Bonne nuit !
-- 
View this message in context: http://lilypond-french-users.1298960.n2.nabble.com/Lilypond-application-portable-tp3989054p5215714.html
Sent from the LilyPond French Users mailing list archive at Nabble.com.

---

From: Eluze <[email-masked]>
Date: Thu, 24 Jun 2010 00:19:09 -0700 (PDT)

Jean-Christophe D wrote:
> …
> Seul inconvénient, pas de LOG...
> La ligne ["F:\LilyPond\usr\bin\lilypond.exe" %1>Log.txt] génère un fichier
> Log.txt vide...
> Reste à mettre en troisième ligne la commande PAUSE...
> 

bonjour!

pour obtenir son log bien à sa place (donc dans le dossier actuel) on peut
extraire le nom du fichier .ly par %~n1 et l'ajouter dans le fichier bat!
curiosité lilpondesque: c'est le 2ème fichier généré qui contient le log
tandis que le premier contient p.e. les résultats de displayMusic ou
displayLilyMusic.
celà donne donc:

"F:\LilyPond\usr\bin\lilypond.exe" %1   1>%~n1.txt 2>%~n1.log

et de préférence on ajoutera des guillemets pour le cas où le nom du fichier
contenait des espace:

"F:\LilyPond\usr\bin\lilypond.exe" %1   1>"%~n1.txt" 2>"%~n1.log"

bonne journée!
-- 
View this message in context: http://lilypond-french-users.1298960.n2.nabble.com/Lilypond-application-portable-tp3989054p5216527.html
Sent from the LilyPond French Users mailing list archive at Nabble.com.

---

From: Eluze <[email-masked]>
Date: Thu, 24 Jun 2010 09:50:32 -0700 (PDT)

pourquoi ne pas répondre à toute la liste - ça peut intéresser d'autres et
nous pouvons aussi profiter de leurs idée!
je me permets donc de citer tes passages et d'y répondre:

<jcdemarais>:

> Spécialiste du DOS ?... Merci !!!

pas trop j'ai du faire 2-3 trucs avec ce language et quelquechose est resté…
>
> Alors, mon idée est d'avoir un premier .bat pour générer "quelque part"  
> l'adresse du pgm à lancer (à lancer à la connection de l'USB).
>

donc chaquefois qu'on connecte l'USB il faut mettre ce pgm en route!

> Ensuite, le second .bat (celui de travail) récupère l'info pour lancer  
> le pgm du bon lecteur (E ou F ou autre...)
>
> J'ai déjà trouvé comment reconstruire et récupérer le rep courant (du  
> .bat)
> Ce que je ne sais pas, c'est comment l'écrire dans un endroit du disque  
> dur accessible ensuite par un second .bat
>
> BAT n'arrive pas à écrire dans %USERPROFILE%, je ne pense donc pas que  
> l'on puisse écrire dans %windir%, la protection doit etre encore plus  
> haute.
>

cela m'étonne - tous les pgm écrivent dans %USERPROFILE% ou %AppData%, non!?

> Un palliatif consiste à écrire la 1ère ligne de référence sur l'USB, et  
> à mettre le fichier résultat AVEC le second .bat dans le rep de travail.
>
ne serait-ce pas préférables de toute façon? - si on est sur un autre
ordinateur on ne veut pas y laisser tout ce qu'on a travaillé!

perso, je ne laisserais que des informations minimes sur un ordinateur
étranger.

en principe j'ajouterais E:\progs\usr\bin dans la variable path ou je
définirais une variable: Set lilypond213=E:\progs\usr\bin\lilypond.

mais il faut admettre que les détails sont durs parfois!

bonne chance!
-- 
View this message in context: http://lilypond-french-users.1298960.n2.nabble.com/Lilypond-application-portable-tp3989054p5218655.html
Sent from the LilyPond French Users mailing list archive at Nabble.com.

---

From: Jean-Christophe D <[email-masked]>
Date: Fri, 25 Jun 2010 10:11:34 -0700 (PDT)

Un paragraphe de plus dans le chapitre Automatisation !
Merci !

Mais si je passe trop de temps à ça, ma partition n'avance plus !!!
;o)))

(on a une v1.bat qui marche impec, la v2 sera pour pdt les vacances d'été
!!!)
((Hmmm, me connaissant, ce sera peut-etre pour avant :o((

Bonne soirée
Jean-Christophe
-- 
View this message in context: http://lilypond-french-users.1298960.n2.nabble.com/Lilypond-application-portable-tp3989054p5222994.html
Sent from the LilyPond French Users mailing list archive at Nabble.com.

---

From: Eluze <[email-masked]>
Date: Fri, 25 Jun 2010 08:48:24 -0700 (PDT)

salut!

recherche du drive:

FOR %%n IN (f g h i … ) DO ( IF EXIST %%n:\NUL ( 
    ECHO trouvé:  %%n 
  )
)

ensuite chercher la fiche lilypond.exe - et voilà, la premierère trouvaille
peut être éxécutée. (je te laisse les détails…)

à bientôt!
-- 
View this message in context: http://lilypond-french-users.1298960.n2.nabble.com/Lilypond-application-portable-tp3989054p5222681.html
Sent from the LilyPond French Users mailing list archive at Nabble.com.

---

From: Jean-Christophe D <[email-masked]>
Date: Fri, 25 Jun 2010 05:59:07 -0700 (PDT)

Bonjour,

j'en était encore à un stade trop brouillon pour discuter de cela en détail
ici...
(le rappel progressif de mes connaissances personnelles en DOS ne doit pas
intéresser grand monde ici ;o)
Je partage de toute façon mes (nos) résultats... et les voici !

> cela m'étonne - tous les pgm écrivent dans %USERPROFILE% ou %AppData%,

Sur mon PC domicile, la commande suivante ne donnait rien :
echo "Le chemin d acces au rep Lily" >%USERPROFILE%\test.txt

Je viens de refaire le test au bureau... et ça marche. J'ai du oublier
qq-chose l'autre jour...
(je trouve de toute façon inélégant de mettre des fichiers à cet endroit...
Je réessayerai éventuellement.)

> ordinateur on ne veut pas y laisser > tout ce qu'on a travaillé! 

Entre-temps, j'ai tout mis dans un seul script ("gros" script plein de
variables et fonctions bizarres !...), mais je coince sur deux détails.
(1) j'avais oublié que changer de répertoire ne change rien sur la position
active, si elle est sur un autre lecteur... il faut également commencer par
changer de lecteur.
(2) je n'arrive pas à introduire le caractère ">" dans une variable ou dans
une chaine de caractère pour écrire dans un fichier en echo le fameux  
2>"%~n1.log"
(Le > s'exécute soit lors de la construction de la chaine, soit lors de
l'écriture de la chaine...)

> perso, je ne laisserais que des informations minimes sur un ordinateur

Exact, sinon je suppose qu'associer l'extension .ly au programme sur le clé
USB suffit à faire fonctionner LilyPond. Non testé... (à la maison j'ai déjà
Lily et je ne veux pas tout casser ;o) et au bureau je ne veux par toucher
au registre... et je n'ai pas d'autre PC ;))

> en principe j'ajouterais E:\progs\usr\bin dans la variable path 
> ou je définirais une variable: Set lilypond213=E:\progs\usr\bin\lilypond. 

Oui, travailler avec des variables rend les choses plus simples... Mais
commençons par du basique sans variable et qui marche ! (la version
précédente ne fonctionait pas bien sur un lecteur externe, manquait la 1ère
ligne)

Voici la base de mon script testé et validé sur un PC sans LilyPond, avec
les docs.ly et LilyPond lur une clé USB (mappée F:).

AVANTAGE : ultra simple à comprendre et utiliser
INCONVENIENT : modifier les lig.1 et 3 à chaque fois que la clé est mappée
différemment (E: ou F: ou autre)
ASTUCE : j'ai deux .bat tout prets : un en E et un en F (on va rarement plus
loin...)

Trois lignes :
=> 1 - Aller sur le lecteur des docs.ly
=> 2 - Aller dans le répertoire des docs.ly
=> 3 - Lancer le programme LilyPond souhaité

---------- DEBUT FICHIER >>>>>>>>>>
@echo off
F:
cd "\Partitions"
"F:\LilyPond\usr\bin\lilypond.exe" %1  2>"%~n1.log"
<<<<<<<<<< FIN FICHIER ----------

On continue !...

Ciao !
-- 
View this message in context: http://lilypond-french-users.1298960.n2.nabble.com/Lilypond-application-portable-tp3989054p5221940.html
Sent from the LilyPond French Users mailing list archive at Nabble.com.

---

From: Eluze <[email-masked]>
Date: Sat, 26 Jun 2010 00:41:05 -0700 (PDT)

bonjour

j'ai bricolé un peu et voilà le résultat:
http://lilypond-french-users.1298960.n2.nabble.com/file/n5224713/findFile.bat
findFile.bat 

ce pgm permet d'invoquer lilypond localisé sur un porteur externe
quelconque. (cette version cherche le pgm sur f g h i)

-- 
View this message in context: http://lilypond-french-users.1298960.n2.nabble.com/Lilypond-application-portable-tp3989054p5224713.html
Sent from the LilyPond French Users mailing list archive at Nabble.com.