Java Web Start - несколько ярлыков - PullRequest
2 голосов
/ 06 марта 2012

У меня проблема с созданием ярлыков в версиях WindowsXP, которые не на английском языке.

Я хочу добавить ярлык в меню «Автозагрузка», чтобы приложение запускалось каждый раз.время входа пользователя в систему.

Так я и сделал:

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

Но, например, в WindowsXP на португальском языке правильное подменю должно быть «Inicializar» вместо «Startup».

Итак, учитывая, что пользователи приложения могут иметь английскую или португальскую версии Windows, мне нужно что-то вроде этого:

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

Но это не работает.

Можеткто-нибудь помочь?

Спасибо.

Ответы [ 2 ]

3 голосов
/ 08 октября 2012

Я сделал это в моем приложении:

 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();
    }

Таким образом, в Windows XP ярлык создается в «Inicializar», а Windows 7 - в «Автозагрузке».

3 голосов
/ 06 марта 2012

Формат JNLP поддерживает загрузку разделов по языковым стандартам в элементах resources, но не в элементе shortcuts (из памяти - для проверки обязательно используйте JaNeLA ).

Вместо этого вам, вероятно, придется обратиться к IntegrationService, представленному в 6.0.18. В частности, метод requestShortcut(desktop,menu,submenu) 1 . Метод возвращает boolean для обозначения успеха / неудачи.

  1. Строка для submenu может быть выведена из:
    • user.language
    • Locale.getDefault()
    • Простые решения - спросите пользователя:
      1. Редактируемое поле со списком известных вариантов на панели параметров.
      2. Выбор файла, указывающий на то место, где должно быть меню пуска.
...