IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Discussion :

[Wise][Registre] Association de fichier pendant installation


Sujet :

Windows

  1. #1
    Membre éprouvé Avatar de leminipouce
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2004
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2004
    Messages : 754
    Points : 1 251
    Points
    1 251
    Par défaut [Wise][Registre] Association de fichier pendant installation
    Bonjour tout le monde.

    Je suis en train de créer un fichier d'installation sous Windows d'un logiciel que je viens de développer enn Java.
    Pour cela j'utilise Wise, pour lequel j'ai écrit un script (copie des fichiers, menu démarrer...).
    Or, mon logiciel peut lire des fichiers, et j'aimerai automatiser l'ouverture de mon fichier sur le double-clic depuis les fichiers qui lui sont spécifiques (extension ".zkv") ou depuis un "clic droit->Ouvrir avec..." sur les fichiers qu'il peut lire mais qui ne lui sont pas "réservés" (extensions ".txt", ".xls", ".xml"...).

    Je me doute que c'est dans le registre qu'il faut que j'aille créer quelques entrées, et/ou en modifier quelques unes, mais j'ai un tout petit peu du mal à obtenir précisément ce que je veux.

    Alors voici ce que j'ai, ce que j'arrive à faire, et si vous pouvez me guider vers quelque chose d'efficace et qui marche, j'en serai ravi.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.zkv]
    @="MonSoft"
    Si j'ai bien compris, avec cette clé, je demande de faire ce qu'il y a à l'adresse "MonSoft" dans la base de registre, quand je recoontre ce type d'extension. Elle est donc indispensable pour ce que je veux faire. PS: Si ici je mets TextPad, par exemple, au lieu de MonSoft, alors je lance TextPad et j'ouvre directement mon fichier dans ce dernier. J'en conclus qu'il faut que je "clone" les instructions TextPad en instructions MonSoft pour obtenir le comportement que je cherche.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\MonSoft.tws\DefaultIcon]
    @="\"C:\\Program Files\\MaSociete\\MonSoft.exe\",-2000"
    
    [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\MonSoft.tws\shell\open\command]
    @="\"C:\\Program Files\\MaSociete\\MonSoft.exe\" -s"
    La c'est ce que j'ai pour TextPad, égèrement modifié comme vous pouvez le voir. Manque de bol, mon application est Java... donc il faut que je passe par javaw. J'imagine que c'est déjà subsidiaire, car il me suffit de remplacer la ligne par quelque chose du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    @=javaw " -jar c:\\Program Files\\MaSociete\\MonSoft.jar" -s"
    Si j'ai bien compris, c'est la ligne de commande qui va être exécutée suite à la résolution de mon adressage "MonSoft" ci-dessus (première clé que je donne). Il me faut donc encore réaliser cette résolution. Et c'est là ou j'ai un problème.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    [HKEY_USERS\S-1-5-51-3755963761-1932595355-744259898-1009\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.zkv\OpenWithList]
    "a"="MonSoft.exe"
    "MRUList"="a"
    
    [HKEY_USERS\S-1-5-51-3755963761-1932595355-744259898-1009\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.zkv\OpenWithProgids]
    "MonSoft"=hex(0):
    
    [HKEY_USERS\S-1-5-51-3755963761-1932595355-744259898-1009\Software\Microsoft\Windows\ShellNoRoam\MUICache]
    javaw " -jar c:\\Program Files\\MaSociete\\MonSoft.jar"="MonSoft"
    Mais ici, je ne comprends pas tout (déjà que je suis loin d'être sûr d'avoir tout bien compris avant...
    Dans la première de ces trois clés, le a correspond au libellé de la clé, j'ai du mal à voir le fonctionnement/utilité du MRUList.
    Dans la seconde des trois clés, je ne vois absolument pas à quoi peut correspondre le hex(0) -récupéré lui aussi de textPad.
    Je ne vois pas non plus ce que veux dire le Progids dans "OpenWithProgids"...
    Enfin, j'ai l'impression de faire un doublon avec la troisième clé, par rapport à celle définit dans le HKey_Local_Machine/.../shell/.../command. Quel est le rôle de chacune ?
    Je ne vois pas non plus comment je peux récupérer l'équivalent de mon "S-1-5-51-3755963761-1932595355-744259898-1009" sur chaque des machines, car j'imagine facilement cette valeur comme étant différente d'une machine à l'autre...

    Enfin, je ne sais pas du tout si je pars dans le bon sens, si j'utilise la bonne démarche et si je n'oublie rien dans cette démarche.

    Voilà. J'espère ne pas être trop confus !

    PS: javaw est un "adressage" connu par mon système, je pense donc pouvoir l'utiliser directement...

  2. #2
    Membre éprouvé Avatar de leminipouce
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2004
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2004
    Messages : 754
    Points : 1 251
    Points
    1 251
    Par défaut
    Bon, je suis pas spur d'avoir été très clair...

    Je vais donc reformuler ma question en quelques mots :
    Est-ce que quelqu'un sait ce qu'il faut écrire dans le registre pour associer une action (lancer un logiciel Java en l'occurence), au double-clique sur un fichier d'extension donnée.

  3. #3
    Membre éprouvé Avatar de leminipouce
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2004
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2004
    Messages : 754
    Points : 1 251
    Points
    1 251
    Par défaut
    Pour clore le sujet...

    J'ai toujours pas trouvé la solution.

    Désolé.

  4. #4
    Membre averti Avatar de pascal.barbier
    Profil pro
    Inscrit en
    Août 2007
    Messages
    362
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Août 2007
    Messages : 362
    Points : 442
    Points
    442
    Par défaut
    Tu n'étais pas très loin de la solution :
    D'abord, au lieu de travailler dans HKLM\Software\Classes, tu peux travailler dans HKEY_CLASSES_ROOT (HKCR), la première clé est un alias de la seconde.
    Pour associer l'extension de fichiers zkv à la commande "javaw -jar c:\Program Files\MaSociete\MonSoft.jar", il faut deux clés et leurs deux valeurs par défaut, le reste n'est que décor :
    D'abord on associe une "classe" de document à une extension :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    clé : HKCR\.zkv
    valeur par défaut : monsoft.document.1
    Ensuite on crée la clé correpsondant à la classe de document :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    clé : HKCR\monsoft.document.1\shell\open\command
    valeur par défaut : "javaw -jar \"c:\\Program Files\\MaSociete\\MonSoft.jar\" %1"
    Attention : il faut des guillemets au début et à la fin de la commande pour l'encadrer. Ensuite, chaque chemin de fichier doit impérativement être encadré de guillemets échappés \". Enfin, les \ des chemins de fichiers doivent être doublés. %1 représente le nom du fichier document.
    En général il est conseillé d'ajouter une valeur par défaut à la clé HKCR\monsoft.document.1 : c'est le titre de la classe de document qui apparait dans de nombreuses interfaces utilisateur.
    pour ajouter une icône associée, on peut également ajouter la clé suivante et sa valeur par défaut :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    clé : HKCR\monsoft.document.1\DefaultIcon
    valeur par défaut : "\"c:\\Program Files\\MaSociete\\MonSoft.ico\" "
    Remarque :
    le nom de la classe est parfaitement arbitraire, mais doit être unique, en général on utilise le nom de l'application avec le type de document et éventuellement un numéro de format. On peut également utiliser le nom de l'extension suivie de autofile (c'est ce qui est choisi quand on associe une extension depuis l'explorateur.
    Il y a des centaines d'autres possibilités mais il faudrait un bouquin entier pour les détailler.
    En ce qui concerne les clés dans HKEY_USERS, cela n'a pas grand chose à voir. Il s'agit du cache de l'explorateur. La clé avec un grand numéro correspond au SID (identité unique) de l'utilisateur.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Créer un setup avec association de fichier dans la base de registre
    Par iBen68 dans le forum Développement Windows
    Réponses: 4
    Dernier message: 21/03/2013, 18h05
  2. InstallShield - Copier un fichier pendant l'installation
    Par megamario dans le forum EDI/Outils
    Réponses: 2
    Dernier message: 26/01/2011, 09h41
  3. Réponses: 12
    Dernier message: 09/08/2006, 13h24
  4. [SHELL] Icônes associées à des fichiers
    Par agh dans le forum API, COM et SDKs
    Réponses: 5
    Dernier message: 09/04/2003, 17h04
  5. Réponses: 19
    Dernier message: 24/05/2002, 16h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo