Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
integrer-applications-windows-dans-paquets-logiciels [Le 18/08/2011, 15:38]
billou
integrer-applications-windows-dans-paquets-logiciels [Le 11/09/2022, 12:17]
moths-art Suppression des espaces en fin de ligne (détecté et corrigé via le bot wiki-corrector (https://forum.ubuntu-fr.org/viewtopic.php?id=2067892)
Ligne 1: Ligne 1:
 ====== Intégrer une application Windows dans un paquet logiciel ====== ====== Intégrer une application Windows dans un paquet logiciel ======
  
-<note important>​Page en cours de construction,​ veuillez ​notez que cette manipulation peut différer partiellement en fonction des applications visées, et sera donc à adapter ​aux besoins ​requis.</​note>​+<note important>​Veuillez ​notez que cette manipulation peut différer partiellement en fonction des applications visées, et sera donc à adapter ​à vos besoins.</​note>​
  
-Pour la petite histoire, cette manipulation me trottait dans la tête depuis un petit moment, et à force d'aide et de recherches, j'​ai ​finit par trouver quelques réponses sur le forum PlayOnLinux,​ je remercie d'​ailleurs Tinou de m'​avoir donné quelques indications,​ n'​étant pas développeur pour deux sous.+Pour la petite histoire, cette manipulation me trottait dans la tête depuis un petit moment, et à force d'aide et de recherches, j'​ai ​fini par trouver quelques réponses sur le forum PlayOnLinux,​ je remercie d'​ailleurs Tinou de m'​avoir donné quelques indications,​ n'​étant pas développeur pour deux sous.
  
 Très clairement, le but recherché est l'​intégration d'une application Windows au sein d'un environnement Linux, telle une application Linux, pas question donc de devoir avoir un menu wine, ou playonlinux,​ ou de dépendre de l'​installation de ces programmes pour exécuter les logiciels ciblés, on recherchera donc à installer le programme et son environnement d’exécution dans son propre répertoire,​ et à avoir un fichier caché dans le dossier utilisateur qui contiendra fichiers de configurations,​ sauvegarde & cie du programme ciblé. Très clairement, le but recherché est l'​intégration d'une application Windows au sein d'un environnement Linux, telle une application Linux, pas question donc de devoir avoir un menu wine, ou playonlinux,​ ou de dépendre de l'​installation de ces programmes pour exécuter les logiciels ciblés, on recherchera donc à installer le programme et son environnement d’exécution dans son propre répertoire,​ et à avoir un fichier caché dans le dossier utilisateur qui contiendra fichiers de configurations,​ sauvegarde & cie du programme ciblé.
  
-Ainsi, le programme en question sera installable en seulement ​quelque ​clics, ne nécessitera pas la réinstallation ou certaines reconfiguration d’exécutables,​ base de registres, ou librairies, du prêt à l'​emploi,​ pour faire simple.+Ainsi, le programme en question sera installable en seulement ​quelques ​clics, ne nécessitera pas la réinstallation ou certaines reconfiguration d’exécutables,​ base de registres, ou librairies, du prêt à l'​emploi,​ pour faire simple.
  
 ===== Étape 1 : Récupérer le préfixe Wine ===== ===== Étape 1 : Récupérer le préfixe Wine =====
Ligne 61: Ligne 61:
 Et je me place dans le dossier des sources de wine Et je me place dans le dossier des sources de wine
 <​code>​cd wine-1.3.26</​code>​ <​code>​cd wine-1.3.26</​code>​
 +
 +
 +installation des dépendance avec le script de wine
 +
 +<​code>​wget http://​winezeug.googlecode.com/​svn/​trunk/​install-wine-deps.sh</​code>​
 +
 +
 +
 +<​code>​sudo sh http://​winezeug.googlecode.com/​svn/​trunk/​install-wine-deps.sh</​code>​
 +
 +
  
 Ensuite, il est nécessaire d'​éditer 3 fichiers Ensuite, il est nécessaire d'​éditer 3 fichiers
Ligne 68: Ligne 79:
 <​code>​gedit server/​request.c</​code>​ <​code>​gedit server/​request.c</​code>​
  
-Dans ces 3 fichiers, vous devez rechercher les termes "**is not owned by you**" contenant peu avant l'​occurence "​**fatal_error**"​ que vous devrez à chaque fois remplacer par "​**printf**",​ dans mon cas, j'ai aussi pris la précaution de remplacer la valeur "​**fatal_error**"​ des allocutions "​**must not be accessible by other users**",​ cette dernière faisant référence aux droits des utilisateurs ​+Dans ces 3 fichiers, vous devez rechercher les termes "**is not owned by you**" contenant peu avant l'​occurence "​**fatal_error**"​ que vous devrez à chaque fois remplacer par "​**printf**",​ dans mon cas, j'ai aussi pris la précaution de remplacer la valeur "​**fatal_error**"​ des allocutions "​**must not be accessible by other users**",​ cette dernière faisant référence aux droits des utilisateurs
  
 <code c>if (st.st_mode & 077) printf( "'​%s'​ must not be accessible by other users\n",​ serverdir );</​code>​ <code c>if (st.st_mode & 077) printf( "'​%s'​ must not be accessible by other users\n",​ serverdir );</​code>​
Ligne 86: Ligne 97:
 <​code>​make</​code>​ <​code>​make</​code>​
  
-Une fois celle ci terminée (ce qui devrait prendre un peu de temps), il n'y a plus qu'à installer les fichiers dans le répertoire choisit précédemment ​+Une fois celle ci terminée (ce qui devrait prendre un peu de temps), il n'y a plus qu'à installer les fichiers dans le répertoire choisit précédemment
  
-<​code>​make install</​code>​+<​code>​sudo make install</​code>​
  
 Vous devriez maintenant retrouver tous les fichiers liés à cette version de wine modifié dans "​**/​opt/​catégorie-de-votre-programme/​nom-de-votre-programme/​.wine/​version-choisie-de-wine/​**"​ Vous devriez maintenant retrouver tous les fichiers liés à cette version de wine modifié dans "​**/​opt/​catégorie-de-votre-programme/​nom-de-votre-programme/​.wine/​version-choisie-de-wine/​**"​
Ligne 152: Ligne 163:
 Pour pouvoir utiliser ces scripts, n'​oubliez pas de les rendre exécutables ! Pour pouvoir utiliser ces scripts, n'​oubliez pas de les rendre exécutables !
  
-<​code>​cd chmod u+x /​opt/​catégorie-de-votre-programme/​nom-de-votre-programme/​scripts/​nom-du-script</​code>​+<​code>​sudo chmod u+x /​opt/​catégorie-de-votre-programme/​nom-de-votre-programme/​scripts/​nom-du-script</​code>​
  
 +Q
 ===== Étape 4 : Script python zenity (gui GTK) pour lancer votre script d'​application ===== ===== Étape 4 : Script python zenity (gui GTK) pour lancer votre script d'​application =====
  
Ligne 180: Ligne 192:
  exit  exit
  ;;  ;;
- "​Trainer"​) 
  
 #À compléter selon vos besoins : #À compléter selon vos besoins :
Ligne 197: Ligne 208:
 </​code>​ </​code>​
  
 +
 +
 +Pour moi Billou ce script ne fonctionne pas aussi pourquoi créer un autre script avant si ont peut métre les variable dans le zenity un example qui fonctionne
 +
 +<​code>#​!/​bin/​bash
 +PATH="/​opt/​catégorie-de-votre-programme/​nom-de-votre-programme/​.wine/​version-choisie-de-wine/​bin/:​$PATH"​
 +export WINEPREFIX="/​opt/​catégorie-de-votre-programme/​nom-de-votre-programme/​prefix/"​
 +export WINEDEBUG="​-all"​
 +#Forcer la langue FR pour l'​environnement et les applications
 +export LANG="​fr.FR-utf8"​
 +
 +programme=`zenity --list \
 +  --title="​faite votre choix dnas la liste" \
 +  --column="​Choix"​ \
 +    "​lancer nom de votre programme"​ \
 +    "​winecfg"​`
 +if [ "​$programme"​ == "​winecfg"​ ]
 +then
 +# commande pour lancer winecfg
 +wine winecfg
 +elif [ "​$programme"​ == "​lancer nom de votre programme"​ ]
 +then
 +# commande pour lancer votre programme
 +wine "​c:​\Program Files\chemin-du-dossier-de-l'​executable-windows-de-votre-programme\executable.exe"​
 +else
 +exit 1
 +fi
 +exit 0</​code>​
 +
 +
 +===== Étape 5 : Créer votre paquet logiciel =====
 +
 +<note important>​Attention,​ comme pour beaucoup de programmes Linux, il est conseiller de divisier votre paquet en deux parties, l'un contenant les données "​simples",​ l'​autre des données plus lourdes, afin de faciliter la mise à jour d'une partie des fichiers, sans devoir tout re-télécharger / réinstaller !
 +Par exemple, pour un jeu, un paquet contenant tout les fichiers sauf **/​opt/​catégorie-de-votre-programme/​nom-de-votre-programme/​prefix/​drive_c/​Program Files/​chemin-du-dossier-de-votre-programme-windows**,​ et l'​autre contenant ce dossier, ainsi, si vous mettez à jour le premier petit paquet, vous n'​aurez pas à vous soucier de l'​autre vu que les données ne devraient pas changer.</​note>​
 +
 +En fait, créer un paquet est très simple, il suffit de créer un dossier contenant l'​arborescence complète des fichiers qui seront copiés.
 +
 +Ainsi, vous retrouverez le plus souvent dans le dossier créé, ​ un dossier opt, un dossier usr, etc... L'​important étant d'y copier tel que présents sur le systèmes, tous les fichiers concernés jusque là, tout doit correspondre ! (vous comprendrez facilement ce que je veux dire, en décompressant n'​importe quel paquet *.deb ;) )
 +
 +Il faudra juste rajouter les fichiers nécessaires pour qu'un raccourci apparaisse dans votre menu Applications :
 +
 +__Dans votre dossier, créez les dossiers suivant cette arborescence :__
 +
 +**/​usr/​share/​applications**
 +
 +**/​usr/​share/​pixmaps**
 +
 +Dans le dossier applications,​ vous devez créer le fichier de configuration du raccourci dans le menu :
 +
 +<​code>​cd usr/​share/​applications</​code>​
 +<​code>​gksudo gedit nom-du-programme.desktop</​code>​
 +
 +<​code>​
 +#​!/​usr/​bin/​env xdg-open
 +
 +[Desktop Entry]
 +Version=version du programme
 +Encoding=UTF-8
 +Name=
 +GenericName=
 +Comment=
 +Name[fr_FR]=
 +Comment[fr_FR]=
 +Commen[fr_FR]t=
 +Exec="/​usr/​bin/​nom-de-l'​executable-du-script-zenithy-du-programme"​
 +Icon=nom-de-l'​icone-du-dossier-pixmaps
 +Terminal=false
 +Type=Application
 +Categories=Game/​Internet/​Accesories/​etc-au-choix
 +</​code>​
 +
 +Concernant "​**usr/​share/​pixmaps**",​ le dossier doit contenir l’icône du programme en question (nom-de-l'​icone-du-dossier-pixmaps) en deux formats, PNG, et XPM !
 +
 +Une fois tout ceci fait, il faudra créer le fichier de configuration du paquet debian.
 +
 +Pour celà, dans le dossier du paquet à créer, à coté de l'​arborescence habituelle ou l'on peut voir opt, et usr, vous devez créer un dossier nommé "​**DEBIAN**"​
 +
 +<​code>​mkdir DEBIAN</​code>​
 +
 +Puis dans ce dossier on crée le fichier "​**control**"​
 +
 +<​code>​gksudo gedit control</​code>​
 +
 +<​code>​
 +Package: nom-du-paquet
 +Version: version du paquet (en chiffre)
 +Section: main
 +Priority: extra
 +Architecture:​ i386
 +Depends: (séparer les dépendances du paquet par une virgule)
 +Installed-Size:​ spécifier en Ko, la taille du programme une fois installée
 +Maintainer: C'est vous, laissez votre griffe
 +Description:​ Donner la description du programme
 +</​code>​
 +
 +Voilà, vous enregistrez,​ puis on corrige une quelconque erreur de droit (au cas ou)
 +
 +<​code>​sudo chown root:root /​chemin/​nom-du-dossier-du-paquet -R</​code>​
 +<​code>​sudo chmod 755 /​chemin/​nom-du-dossier-du-paquet -R</​code>​
 +<​code>​sudo chmod 777 /​chemin/​opt/​catégorie-de-votre-programme/​nom-de-votre-programme/​prefix/​drive_c/​ -R</​code>​
 +
 +Et maintenant, il ne reste plus... Qu'à créer le/les paquets (à refaire avec chaque paquet créé évidemment,​ si vous avez dissocié les fichiers et dossiers en plusieurs paquets)
 +
 +<​code>​cd ..
 +dpkg --build nom-du-dossier-du-paquet nom-du-paquet.deb
 +</​code>​
 +
 +Selon la taille de votre paquet, ça sera plus ou moins long, attention toutefois, les paquets de plusieurs Go ne sont pas pris en charge par les outils graphiques d'​Ubuntu et Debian à l'​installation (synaptic, gdebi...), il faudra les installer avec un sudo dpkg -i nom-du-paquet.deb ! :)
 +
 +Voilà, ce tutoriel est terminé, en l'​état,​ il n'​appartient plus qu'à vous d'​améliorer tout ça, je vous ai donné les bases de l'​écosystème pour vous en sortir, libre à vous d'​adapter à vos besoin, de créer des gui  ou scripts simplifiant la transposition préfixe => paquet, etc ! =D
 +
 +**Billou, du forum ubuntu-fr, à votre service ! ^^**
  • integrer-applications-windows-dans-paquets-logiciels.txt
  • Dernière modification: Le 11/09/2022, 12:17
  • par moths-art