Conception scApp "semi portable" (SC 3.7 uniquement)
Vous pouvez modifier une SCapp sous windows : elle peut être lancée depuis n'importe quel lecteur et garde les données utilisateurs uniquement sur ce lecteur dans le répertoire de l'application. Par contre, les chemins doivent être fixes (c'est a dire que la lettre du lecteur peut changer, mais pas le reste du chemin).
A savoir
Lorsqu'un programme portable est exécuté depuis une clé USB, il ne tourne pas tout à fait à la même vitesse. Comptez 25 secondes pour le lancement et des générations 3 fois plus lentes que sur un disque dur. La rapidité varie beaucoup en fonction du type de clé et son formatage (des tests semblent donner l'avantage à FAT32 pour ce type d'usage).
procédure de base
L'exemple proposé ci-dessous est appliqué a Opale 3.2 mais fonctionnerais pour tout type de SCapp 3.7, ou 3.6 avec quelques modifications, dans mon cas le lecteur est "K:"
- Créez à la racine d'un lecteur (clé USB ou autre type de disque) les répertoires :
- \opale\data\srv
- \opale\data\xulrunner
- \opale\data\wsp
- \opale\prog
- Installez Opale 3.2, et copiez le répertoire du programme a l'intérieur de \opale\prog
- Modifiez le fichier \opale\prog\bin\scServer\conf\init.osDependant.xml , ce fichier diffère légèrement suivant les versions d'Opale, le but va être de ne pas utiliser de chemins qui pointent vers les répertoires utilisateurs, mais de les remplacer par des chemins fixes, dans mon exemple il y a 4 lignes à modifier :
(...) <systemProperty key="scenari.internalDataPath" value="\opale\data\srv"/> <systemProperty key="scenari.updateManagerPath" value="\opale\prog\bin\scServer\updt"/> <systemProperty key="scenari.updateManagerPath.internal" value="\opale\prog\bin\scServer\updt"/> (...) <systemProperty key="scenari.wspDefaultPath" value="\opale\data\wsp"/> (...) <logfile file="\opale\data\scenari.log"/> - Créez ou modifiez \opale\prog\bin\scApp.bat, ce fichier devra être utilisé pour tous les lancements du programme, il doit contenir quelque chose du genre :
start xulrunner\scenari.exe scApp\application.ini -contentLocale sc-SC -UILocale sc-SC -profile \opale\data\xulrunner
- Lancez ce fichier scApp.bat, recréez l'atelier avec le chemin K:\opale\data\wsp\Opale s'il n'a pas été bien créé
- Ouvrez \opale\data\srv\wsplist.xml et supprimez le de lecteur (k:) du chemin de l'atelier, dans mon cas :
<wspList><wsp code="opale"><content type="fs" path="\opale\data\wsp\Opale\sources"/><generations type="fs" path="\opale\data\wsp\Opale\~gen"/></wsp></wspList>
- Testez l'application sur différents PCs
Optionnel : compressez les fichiers
Vous pouvez gagner un peu d'espace en compressant les fichiers exécutables et DLL (dans mon cas, on passe de 110Mo à 90Mo), je n'ai pas testé précisément la vitesse mais j'imagine que pour une clé USB assez lente, cela peut faire gagner quelques petites secondes de chargement.
- Installez par exemple UPX : http://upx.sourceforge.net/#download
- Fermez Opale
- Lancez en ligne de commande :
k: upx.exe --lzma --best \opale\prog\bin\scServer\jre\bin\*.exe \opale\prog\bin\scServer\jre\bin\*.dll \opale\prog\bin\scServer\jre\bin\client\*.dll \opale\prog\bin\scServer\nativlib\*.exe \opale\prog\bin\scServer\nativlib\im\*.exe \opale\prog\bin\xulrunner\*.exe \opale\prog\bin\xulrunner\*.dll
Il est peut être possible de gagner encore un peu plus de place en recompressant les .jar mais je n'ai pas essayé.
Optionnel : embarquer OpenOffice.org
TODO: partie à compléter je ne me souviens plus de la procédure exact pour rendre OOo portable ... après on peut modifier le scApp.bat de lancement avec une astuce en début de fichier du genre :
cd \openoffice\program set UNO_PATH=%CD%\ set PATH=%PATH%;%CD%\ cd \opale\prog\bin
Il existe aussi une 2eme procédure un peut plus complexe pour changer son chemin aussi dans des fichiers .js de script de lancements.
Optionnel : écran de chargement
Le lancement par .bat n'affiche pas d'écran de chargement, ce qui est un peu dommage vu que l'on a a plus forte raison besoin d'indiquer la progression du chargement que celui-ci est plus long si effectué sur clé USB. Des modifications plus complexes pour remplacer le fichier .bat par un lanceur recompilé avec l'option "-profile" (et éventuellement le UNO_PATH) sont possibles, mais cela complexifie la procédure et je ne l'ai pas détaillé ici.
Optionnel : utiliser une autre JRE / un autre XULrunner
TODO