2012-03-06 3 views
2

J'ai un problème avec la création de raccourcis sur des versions de WindowsXP qui ne sont pas en anglais.Java Web Start - Raccourcis multiples

Je souhaite ajouter un raccourci au menu 'Démarrage' afin que l'application s'exécute chaque fois que l'utilisateur se connecte.

Alors je l'ai fait:

<shortcut online="true"> 
    <desktop/> 
    <menu submenu="Startup"/> 
</shortcut> 

Mais, à WindowsXP en portugais, par exemple, le sous-menu correct besoin d'être 'Inicializar' au lieu de 'démarrage'.

Donc, étant donné que je besoin de quelque chose peut avoir des versions anglaise ou portugaise de Windows utilisateurs de cette application, que:

<shortcut online="true"> 
    <desktop/> 
    <menu submenu="Startup"/> 
</shortcut> 
<shortcut online="true"> 
     <desktop/> 
     <menu submenu="Inicializar"/> 
</shortcut> 

Mais cela ne fonctionne pas.

Quelqu'un peut-il aider?

Merci.

+0

Je pense que vous devez fournir différents jnlps pour différentes langues. – alexvetter

+0

Merci pour le conseil! –

Répondre

3

Le format JNLP prend en charge le partitionnement des téléchargements par les paramètres régionaux dans les éléments resources, mais pas l'élément shortcuts (à partir de la mémoire - utilisez JaNeLA pour vérifier à coup sûr). Au lieu de cela, vous devrez probablement regarder à IntegrationService introduit dans 6.0.18. Particulièrement la méthode requestShortcut(desktop,menu,submenu) . La méthode renvoie un boolean pour indiquer le succès/l'échec.

  1. La chaîne pour submenu peut être déduit de:
    • user.language
    • Locale.getDefault()
    • Les solutions simples - demander à l'utilisateur:
      1. combo-box éditable de variantes connues dans un volet d'option .
      2. Un sélecteur de fichier pointant vers un emplacement proche du menu de démarrage.
+0

Merci pour la réponse. Mais j'ai fourni deux jnlps pour mes clients. C'était la manière la plus rapide de résoudre le problème en considérant l'urgence du projet –

3

Je l'ai fait dans mon application:

public static void main(String[] args) { 
     IntegrationService is = null; 
     String osName = System.getProperty("os.name"); 

     try { 
      is = (IntegrationService) ServiceManager.lookup("javax.jnlp.IntegrationService"); 
     } catch (UnavailableServiceException use) { 
      use.printStackTrace(); 
     } 
     if (!is.hasMenuShortcut()) { 
      if (osName.equals("Windows 7")) { 
       is.requestShortcut(false, true, "Startup"); 
      } else { 
       is.requestShortcut(false, true, "Inicializar"); 
      } 
     } 
     SystemTrayTest main = new SystemTrayTest(); 
    } 

Ainsi dans Windows XP, le raccourci est créé dans "Inicializar" et Windows 7 dans "Démarrage".

+1

'if (! Is.MenuShortcut()) {' Si est 'null', cela provoquera un NPE. Ce code devrait être déplacé dans le 'try'. Alternativement, vérifiez null avant de procéder à if (is! Null &&! Is.hasMenuShortcut()) {' –