2017-04-07 1 views
1

J'essaie d'utiliser le programme de mise à jour sans vérification de version pour arrêter le lanceur d'appels. J'ai inclus les éléments suivants dans mon code pour lancer l'Updater:Comment spécifier le répertoire du programme de mise à jour à partir d'une application Java?

ApplicationLauncher.launchApplication("368", null, false, null); 

Je reçois une erreur quand il est l'exécution de cette ligne qu'il ne peut pas trouver le fichier i4jparams.conf. Il est évidemment à la recherche du fichier dans le même répertoire que le lanceur, mais le fichier se trouve dans le sous-répertoire .install4j (par défaut). L'application de mise à jour est également dans ce répertoire.

Il travaillait quand j'ai appelé directement Updater:

Process process = new ProcessBuilder(".\\.install4j\\updater.exe").start(); 

Malheureusement, cette approche ne permet pas la mise à jour de fermer le lanceur appeler quand il est occupé l'installation d'une nouvelle application.

Je dois évidemment dire ApplicationLauncher.launchApplication pour rechercher le programme de mise à jour dans le répertoire .launch4j, mais je ne sais pas comment faire cela.

Répondre

1

Il est à la recherche de toute évidence pour le fichier dans le même répertoire que le launcher`

Non, ce n'est pas le cas. Le mécanisme actuel utilise le répertoire dans lequel se trouve le fichier JAR avec les classes d'exécution. Si vous mettez vous-même i4jruntime.jar dans le classpath, il se peut qu'il utilise un mauvais répertoire.

+1

Merci, votre réponse m'a indiqué dans la bonne direction. J'ai dû exclure le fichier install4j-runtime-6.1.5.jar du répertoire de la bibliothèque Maven exporté. J'ai changé la définition de l'arborescence de distribution de fichiers dans Install4j pour exclure ce fichier JAR spécifique. Après ce changement, ça fonctionne bien maintenant. – Keplerian