Créer une association de gestionnaires de schéma d'URI


2

Je commence à créer des modèles d’URI personnalisés et j’essaie de lancer un fichier jar exécutable à l’aide de modèles d’URI dans mon système Windows 7.

Pour exécuter ce fichier jar à partir d'une invite de commande, j'utilise cette commande:

java -jar demo.jar

MODIFIER:

Pour lancer la même chose en utilisant le schéma d'URI personnalisé, j'ai créé un .regfichier avec l'entrée ci-dessous ( copié à partir de l'article ci-dessous ):

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\DemoStart]
"URL Protocol"=""

[HKEY_CLASSES_ROOT\DemoStart\shell]

[HKEY_CLASSES_ROOT\DemoStart\shell\open]

[HKEY_CLASSES_ROOT\DemoStart\shell\open\command]
@="\"java.exe\" -jar \"C:\\Users\\John\\Desktop\\demo.jar\""

Cela ne fonctionne pas pour la raison suivante:

Le fichier jar exécutable que j'essaye d'exécuter nommée demo.jarest un fichier jar fourni par une tierce partie. Il comporte de nombreuses dépendances sur les fichiers de configuration XML également situés dans le même dossier que le fichier jar. Je n'ai pas le privilège de changer le code présent dans le fichier jar.

À l’aide de l’invite de commande, la commande "java.exe" -jar "demo.jar"ne fonctionne que lorsque je navigue dans le dossier contenant à la fois le demo.jarfichier ainsi que le fichier dependent config xml files. MAIS si j'essaie d'exécuter la commande: à "java.exe" -jar "C:\Users\John\Desktop\demo.jar"partir de l'emplacement par défaut de la fenêtre d'invite de commande (ce qui est mon cas C:\Users\John), la commande ne fonctionne pas car les fichiers xml de configuration dépendants ne sont pas disponibles.

Par conséquent, je dois trouver un moyen de changer l'emplacement par défaut de l'invite de commande avant d'exécuter le fichier jar.

Indiquez s'il est possible de définir l'emplacement par défaut de l'invite de commande sur C:\Users\John\Desktoplorsque je déclenche l'URI personnalisé (dans ce cas, il n'est pas nécessaire de naviguer vers un autre emplacement et la commande devrait fonctionner correctement).


J'ai créé un .txtfichier, modifié l'extension du fichier .reg, mis le code que vous avez posté ci-dessous, puis double-cliquez sur le .regfichier pour créer l'entrée de registre. Puis j'ai vérifié la même chose dans le regedit.
user182944

Réponses:


2

Votre .regfichier ne semble pas correct. Le format est très étrange. Cela devrait ressembler davantage à ceci:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\DemoStart]
"URL Protocol"=""

[HKEY_CLASSES_ROOT\DemoStart\shell]

[HKEY_CLASSES_ROOT\DemoStart\shell\open]

[HKEY_CLASSES_ROOT\DemoStart\shell\open\command]
@="\"java.exe\" -jar \"C:\\Users\\John\\Desktop\\demo.jar\""

Si cela ne fonctionne toujours pas, vérifiez que java est dans votre PATH. Si c'est le cas et que cela ne fonctionne toujours pas, essayez de remplacer "java" par le chemin complet du fichier exe Java.


1
Cela ne peut pas fonctionner non plus, car l'URL n'est jamais transmise au programme. "%1"devrait apparaître à l'endroit approprié. En outre, utilisez toujours des chemins absolus, sinon vous ne faites que demander des ennuis. / edit: Oh oui, et il pourrait aussi être prudent de spécifier un nom (à @côté de URL Protocol).
Daniel B

Ce n'est pas ce que je voulais dire. Je parlais du «nom amical». C'est l'entrée par défaut à côté de URL Protocol . Vous pouvez le voir dans la plupart des entrées dans HKCR. Je posterai une réponse personnelle plus tard.
Daniel B

@Izam +1 pour l'aide jusqu'à présent. Lorsque j'ouvre le command prompt, l'emplacement par défaut est C:\Users\John. Si je navigue manuellement vers l'emplacement indiqué C:\Users\John\Desktopdans l'invite de commande et que j'exécute la commande, "java.exe" -jar "demo.jar"tout fonctionne normalement. Mais si je ne navigue pas vers le Desktopet n'exécute cette commande à "java.exe" -jar "C:\Users\John\Desktop\demo.jar"partir de l'emplacement par défaut (c'est-à-dire C:\Users\John), cela ne fonctionnera pas car, dans Desktop, j'ai d'autres fichiers XML également nécessaires pour exécuter le fichier jar.
user182944

Ok, j'ai fait quelques changements liés aux applications et j'ai finalement réussi à faire fonctionner cette chose, acceptant donc cette réponse.
user182944

1

Donc, d'après ce que je comprends, votre principal problème n'est pas l'association de fichier, mais le répertoire de travail. Malheureusement, le répertoire de travail ne peut pas être influencé lorsqu'il est lancé à partir d'une association de fichiers. Si un programme dépend de fichiers en plus de son exécutable, sa conception serait interrompue si elle reposait sur le répertoire de travail.

Heureusement, la programmation n'est plus réservée aux experts. ;)

Le script AutoHotkey à une ligne suivant (qui peut être compilé dans un .exefichier autonome ) lance un programme (ou un .jarfichier ou autre). Le répertoire de travail sera défini sur l' .exeemplacement du script .

Run, hello.jar, %A_ScriptDir%

Je n'ai pas réellement testé cela avec un .jarfichier, car JDK n'est pas installé pour le moment. J'ai cependant essayé avec un script AutoHotkey non compilé. La documentation sur la Runcommande est disponible ici .


J'ai suivi ces étapes: Créer un .ahkfichier, ajouter l'entrée #z::Run, demp.jar, %A_ScriptDir%dans le fichier, Run Scriptpuis cliquer Windows Key + zpour démarrer le demo.jar, tout cela a bien fonctionné pour moi. Mais je ne veux pas demander à mes utilisateurs de cliquer sur le bouton AutoHot Keymanuellement, donc disposé à automatiser ce processus pour quelque chose du genre: lorsque le navigateur démarre, il demo.jarest exécuté automatiquement. S'il vous plaît suggérer quelque chose à ce sujet.
user182944

Vous devrez associer le script AHK (ou .exe) au protocole, au lieu de java.exe.
Daniel B
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.