The forum

e-Sword

Un premier script ...

Author Replies
guyr Tuesday 19 February 2013 at 17:05
guyrAnonymous

Bonsoir,

Un premier script rédigé à la demande d'un ubuntu user ...
Merci de votre indulgence et de vos commentaires.

#!/bin/bash

[ "$PLAYONLINUX" = "" ] && exit 
source "$PLAYONLINUX/lib/sources"

TITLE="e-Sword"
PREFIX="esword"
EDITOR="e-sword"
SOFT_URL="http://www.e-sword.net"
AUTHOR="gr"
WORKING_WINE_VERSION="1.5.24"

# Starting script
POL_SetupWindow_Init
 
# Starting debugging API
POL_Debug_Init
 
POL_SetupWindow_presentation "$TITLE" "$EDITOR" "$GAME_URL" "$AUTHOR" "$PREFIX"

# Setting prefix path
POL_Wine_SelectPrefix "$PREFIX"
POL_System_SetArch "x86"
POL_Wine_PrefixCreate "$WORKING_WINE_VERSION"

#POL_SetupWindow_prefixcreate
POL_Call "POL_Install_msls31"
POL_Call "POL_Install_msxml3"
POL_Call "POL_Install_vbrun6"
POL_Call "POL_Install_vcrun6"
POL_Call "POL_Install_wsh57"

POL_Call POL_Function_OverrideDLL builtin oleaut32

POL_SetupWindow_InstallMethod "LOCAL,DOWNLOAD"
if [ "$INSTALL_METHOD" = "LOCAL" ]
then
 POL_SetupWindow_browse "$(eval_gettext "Please select the install file.")" "$TITLE"
 SETUP_PATH="$APP_ANSWER"
 POL_SetupWindow_wait "$(eval_gettext 'PlayOnLinux is installing your application...')" "$TITLE"
 POL_Wine start /unix "$SETUP_PATH"
 POL_Wine_WaitExit "$TITLE"
elif [ "$INSTALL_METHOD" = "DOWNLOAD" ]
then
 cd "$POL_System_TmpDir"
 POL_Download "http://www.e-sword.net/files/setup1010.exe"
 POL_SetupWindow_wait "$(eval_gettext 'PlayOnLinux is installing your application...')" "$TITLE"
 POL_Wine_WaitBefore "$TITLE"
 POL_Wine start /unix "setup1010.exe"
 POL_Wine_WaitExit "$TITLE"
fi

POL_Shortcut "e-Sword.exe" "esword"
POL_SetupWindow_Close
exit

petch Tuesday 19 February 2013 at 17:53
petch

Bonjour,

C'est plutôt bien pour un premier script !
Mais bon, on peut toujours trouver des choses améliorables :

- dans la majorité des cas "start /unix" est inutile, et a pour effet de bord qu'annuler une installation ne stoppe pas immédiatement les programmes Windows lancés, donc à éviter si ça marche sans

- bug mineur:
cd "$POL_System_TmpDir"

POL_System_TmpCreate n'ayant pas été utilisé auparavant dans le script, aucun répertoire temporaire privé n'a été créé et $POL_System_TmpDir n'est pas defini !
Bon, je viens de vérifier que cd "" ne change pas le répertoire courant, donc le fichier doit atterrir dans ~/.PlayOnLinux/tmp/ (je pense), pas de conséquences funestes ;)

-
POL_SetupWindow_wait "$(eval_gettext 'PlayOnLinux is installing your application...')" "$TITLE"
POL_Wine_WaitBefore "$TITLE"

Le POL_SetupWindow_wait est redondant, POL_Wine_WaitBefore "$TITLE" fait quasiment la même chose

- Plus compliqué à corriger, c'est une bonne pratique de retarder le plus possible la création du disque virtuel ("prefix" dans le parler Wine), de façon à ce qu'en cas d'interruption du script les chances de laisser un disque virtuel à moitié initialisé soient moindres; ça demande de réorganiser un peu l'ordre des opérations :
* présentation
* questions à l'utilisateur (mode d'installation, emplacement du fichier local si c'est le mode choisi)
* téléchargement (si c'est le choix de l'utilisateur)
* création du disque virtuel
* installation de dépendances
* installation du logiciel
* création du/des raccourci(s)

Edited by petch

guyr Tuesday 19 February 2013 at 19:37
guyrAnonymous

Bonsoir,
Voici une 2eme version corrigée.
Comme amélioration de POL je verrai bien la fusion de l’écran 1 et 2 puis de l’écran 3 et 4 que l'on a lorsqu'on demande l'execution d'un script local.
Sinon le download tombait, je crois, dans /windows/system32


#!/bin/bash
# guyr version 2

[ "$PLAYONLINUX" = "" ] && exit 
source "$PLAYONLINUX/lib/sources"

TITLE="e-Sword"
PREFIX="esword"
EDITOR="e-sword"
SOFT_URL="http://www.e-sword.net/files"
EXE_FILE="setup1010.exe"
AUTHOR="guyr"
WORKING_WINE_VERSION="1.5.24"

# Starting script
POL_SetupWindow_Init
 
# Starting debugging API
POL_Debug_Init
 
# Presentation
POL_SetupWindow_presentation "$TITLE" "$EDITOR" "$GAME_URL" "$AUTHOR" "$PREFIX"

# Questions à l'utilisateur et téléchargement si necessiare
POL_SetupWindow_InstallMethod "LOCAL,DOWNLOAD"
if [ "$INSTALL_METHOD" = "LOCAL" ]
then
 POL_SetupWindow_browse "$(eval_gettext "Please select the install file.")" "$TITLE"
 SETUP_PATH="$APP_ANSWER"
 POL_SetupWindow_wait "$(eval_gettext 'PlayOnLinux is installing your application...')" "$TITLE"
elif [ "$INSTALL_METHOD" = "DOWNLOAD" ]
then
 POL_System_TmpCreate "$PREFIX"
 cd "$POL_System_TmpDir"
 POL_Download "$SOFT_URL/$EXE_FILE"
 POL_Wine_WaitBefore "$TITLE"
 SETUP_PATH="$POL_System_TmpDir/$EXE_FILE"
fi

# Setting prefix path
POL_Wine_SelectPrefix "$PREFIX"
# POL_System_SetArch "x86"
POL_Wine_PrefixCreate "$WORKING_WINE_VERSION"

#POL_SetupWindow_prefixcreate
POL_Call "POL_Install_msls31"
POL_Call "POL_Install_msxml3"
POL_Call "POL_Install_vbrun6"
POL_Call "POL_Install_vcrun6"
POL_Call "POL_Install_wsh57"

POL_Call POL_Function_OverrideDLL builtin oleaut32

POL_Wine "$SETUP_PATH"
POL_Wine_WaitExit "$TITLE"

POL_Shortcut "e-Sword.exe" "esword"
POL_SetupWindow_Close
exit

Edited by guyr

petch Tuesday 19 February 2013 at 20:39
petch

ça me semble bien, personnellement je ne vois plus rien à redire :)

Si tu veux qu'il soit ajouté à la bibliothèque des scripts, il suffit de cliquer sur "Logiciels supportés", puis "Nouvel installeur" et rentrer le script dans le formulaire.
Ceci fait il faut cliquer pour demander à ce que le script soit signé (je ne me rappelle pas de l'intitulé exact du lien, mas il devrait être facile à trouver), et dès qu'il sera validé il apparaîtra dans PlayOnLinux (et PlayOnMac, si la case à cocher correspondante est remplie)...
You are here: Index > Vos créations > e-Sword