Java Web Start - 多个快捷方式

时间:2012-03-06 13:58:19

标签: java windows-xp shortcut jnlp java-web-start

我在使用非英文版本的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 个答案:

答案 0 :(得分:3)

JNLP格式支持按resources元素中的区域设置分区下载,但不支持shortcuts元素(来自内存 - 使用JaNeLA进行检查以确定)。

相反,您可能需要查看6.0.18中引入的IntegrationService。特别是requestShortcut(desktop,menu,submenu) 1 方法。该方法返回boolean以指示成功/失败。

  1. submenu的字符串可能来自:{
    • user.language
    • Locale.getDefault()
    • 简单的解决方案 - 询问用户:
      1. 选项窗格中已知变体的可编辑组合框。
      2. 文件选择器,指向开始菜单应该靠近的位置。

答案 1 :(得分:3)

我在我的应用中做到了这一点:

 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在“Startup”中创建。