Forums

Demande d'information générale

Sur le fonctionnement de wine

Auteur Réponses
billou Mardi 9 Aoüt 2011 à 9:47
billou

Hello, non dans la pratique, mais plus dans l'exercice théorique, j'aimerais avoir une petite information sur wine, et non PlayOnLinux (mais comme les deux sont intimements liés, j'imagine que bon nombres de personnes connaissant très bien wine sont dans le coin.)

Bon, ma question est simple, par défaut, wine ne permet pas à des fichiers appartenant à un utilisateur X, d'être exécutés par un utilisateur Y ou Z.

Comment faire en sorte que wine se contente des accès en écriture et lecture sans faire attention au propriétaire?



Si l'on essaie de le lancer sans être le propriétaire des fichiers, on obtient une phrase de type "wine [chemin de l’exécutable] is not owned by you"


Il y a bien une astuce qui consiste à créer un utilisateur wine, à rajouter dans son groupe les autres utilisateurs, etc... Mais ça n'est ni pratique, ni propre et ça tient plus de la bidouille qu'autre chose.

À noter que s'il faut compiler wine avec certains arguments, ça ne me posera pas de problème. :)
Quentin PÂRIS Mardi 9 Aoüt 2011 à 10:58
Quentin PÂRISAnonymous

J'imagine qu'on peut empêcher ça, mais il faudra à mon avis modifier le code source de wine

Je pense que si ils ont mit cette option, c'est pour éviter des bugs.
billou Mardi 9 Aoüt 2011 à 11:05
billou

Sauf qu'en l’occurrence, ça m'arrange pas du tout :-/

Après je peux comprendre que dans certains cas, ça puisse poser des problèmes de droits, mais je cherche à reproduire le comportement de wine intégré dans picassa de google, donc c'est uniquement pour une application spécifique à chaque fois.

Ils ont fait un paquet intégrant à la fois leur programme, leur préfixe, et wine, avers des fichiers appartenant à root, et le programme pouvant être exécuté par tous les utilisateurs d'un système.

Je veux reproduire la même chose
Quentin PÂRIS Mardi 9 Aoüt 2011 à 11:19
Quentin PÂRISAnonymous

Pourquoi ça ne t'arrange pas ? Un patch et puis ça roule

T'es sur que picassa ils ne copient pas le préfixe dans un dossier temporaire au lancement ? Regarde leur script de lancement si ce n'est pas déjà fait
billou Mardi 9 Aoüt 2011 à 11:44
billou

Déjà fait, et ça ne semble pas être le cas, ils ont bien un dossier caché créé dans le home de l'utilisateur, mais il ne sert qu'à conserver les préférences du programme pour l'utilisateur comme il en serait le cas sous windows. (sans compter que leur paquet est blindé de scripts en tout genre, difficilement compréhensibles)

Après pour le patch, le problème, c'est que je ne suis pas développeur donc mettre mon nez dans le code source de wine, autant dire que c'est mal barré... Et je n'ai pas connaissance de l'existence d'un tel patch non plus.

Edité par billou

Quentin PÂRIS Mardi 9 Aoüt 2011 à 12:04
Quentin PÂRISAnonymous

Pour commencer, il faudrait chercher dans quel fichier est le message alertant que l'utilisateur n'est pas propriétaire du préfixe
billou Mardi 9 Aoüt 2011 à 12:29
billou

J'ai trouvé 3 fichiers ayants "is not owned by you" !


~/wine-src/libs/wine/config.c

~/wine-src/dlls/ntdll/server.c

~/wine-src/server/request.c

Edité par billou

Quentin PÂRIS Mardi 9 Aoüt 2011 à 12:32
Quentin PÂRISAnonymous

En replaçant les fatal_error des printf, je suppose que ça devrait fonctionner
billou Mardi 9 Aoüt 2011 à 12:35
billou

Bon, bha comme on dit, y'a plus qu'à; je vais essayer ça, je compile, et je te dis de quoi il en retourne , merci ! :)

Edité par billou

billou Mardi 9 Aoüt 2011 à 13:40
billou

Bon, je viens de tenter, ça fonctionne en partie.

Je m'explique, les exécutables se lancent depuis un autre compte utilisateur désormais, je ne suis plus bloqué après le message concernant les droits, par contre, les paramètres ne sont pas conservé par le programme, à chaque lancement du jeu, il refait la recherche des paramètre et réagit comme si je le lançais pour la première fois.

J'ai eu exactement le même comportement quand j'ai tenté de renommer le dossier /drive_c/users/monlogin sous un autre nom et en essayant de remplacer toutes les annotations "monlogin" par un autre nom dans les fichiers system.reg, user.reg et userdef.reg

Il doit y avoir un truc tout bête qui bloque.

T'as une idée?


Edit : J'ai trouvé un début de réponse, c'est sans doute pas parfait encore, mais tout se lancer correctement, il faut créer un dossier ayant le nom de l'utilisateur qui va lancer l’exécutable, dans /drive_c/users/nom-de-l'user et un autre à l'intérieur de celui ci ayant le nom "Mes Documents" (les fichiers de préférence du jeu concerné et les sauvegardes sont enregistrés dans Mes Documents)

Voilà comment je pense faire les choses désormais :

1 - Un script lance le programme
2 - Le script va avant toute chose, vérifier avec la variable $USER si le dossier de l'utilisateur est existant dans /drive_c/users
3 - S'il n'existe pas, on crée un dossier tel que $HOME/.programme , puis un lien symbolique de ce dossier sur /driver_c/users/nom-de-l'user/Mes Documents
S'il existe, on saute, et on passe directement au lancement de l'application. :)

Il reste cependant un problème, le dossier Mes Documents a été pris tel quel en Français par wine, mais que se passera t'il si le système de l'utilisateur est dans une autre langue?... Wine aura il besoin d'un "Mes Documents" tel que "My Documents"?

Edité par billou

Quentin PÂRIS Mardi 9 Aoüt 2011 à 14:49
Quentin PÂRISAnonymous

Pour l'anglais je pense que en effet, il faut respecter la langue.

Tu peux toujours essayer de forcer l'anglais pour tout le monde, et d'appeler le dossier "My Documents"
billou Mardi 9 Aoüt 2011 à 15:54
billou

Justement, comment forcer wine à prendre l'anglais comme langue par défaut?
Quentin PÂRIS Mardi 9 Aoüt 2011 à 16:28
Quentin PÂRISAnonymous

Essais avec export LANG="en.US-utf8"
billou Mardi 9 Aoüt 2011 à 17:26
billou

Hum, visiblement, ça ne convient pas, ça réinitialise tout.

Wine n'a pas un fichier de configuration ou quelque chose du genre?
Quentin PÂRIS Mardi 9 Aoüt 2011 à 17:33
Quentin PÂRISAnonymous

Non. Comment ça ça réinitialise tout ?
billou Mardi 9 Aoüt 2011 à 19:56
billou

L'application concernée nécessite d'être réinstallée dès que je change les "locales", m'enfin de toute façon il est seulement en Français, pour là, ça ira, par contre il faudra que je pense à ça pour les programmes multilingues.

Bon, ça a l'air de fonctionner en tout cas, je concocterais un paquet 7zip prêt à l'emploi pour l'exemple, et il faudrait que je fasse un tutoriel clair, pour ceux qui voudraient reproduire le concept.

Edité par billou

billou Jeudi 18 Aoüt 2011 à 16:14
billou

ENFIN, j'ai transposé à l'écrit un tutoriel !

http://doc.ubuntu-fr.org/integrer-applications-windows-dans-paquets-logiciels

Edité par billou