我在我的应用程序的 jnlp 描述符中使用快捷方式标记来为我的应用程序创建一个桌面链接和一个菜单项。
如果这些快捷方式在客户端上被删除 - 如何在没有用户操作的情况下自动重新安装它们?jnlp 文件有配置选项吗?
(顺便说一句,我正在使用 java6)
我在我的应用程序的 jnlp 描述符中使用快捷方式标记来为我的应用程序创建一个桌面链接和一个菜单项。
如果这些快捷方式在客户端上被删除 - 如何在没有用户操作的情况下自动重新安装它们?jnlp 文件有配置选项吗?
(顺便说一句,我正在使用 java6)
这是一种自动方式的骨架(您需要javaws.jar
在类路径中才能使其工作):
IntegrationService is = null;
try
{
is = (IntegrationService) ServiceManager.lookup("javax.jnlp.IntegrationService");
}
catch (UnavailableServiceException use)
{
// integration service unavailable
}
if (!is.hasDesktopShortcut())
{
if (!is.requestShortcut(true, true, "Companyapp"))
{
// failed to install shortcuts
}
}
else
{
// shortcuts already exist
}
请参考此链接 - http://mindprod.com/jgloss/javawebstart.html
摘要:如果您希望 JWS 重新创建菜单和/或桌面快捷方式,请删除菜单项和桌面图标,然后在命令行上运行 javaws -viewer 然后单击按钮以创建快捷方式。如果其中任何一个存在,javaws.exe 将不会创建另一个。它也可能不会在您期望的地方创建它们,所以环顾四周。
javaws 上的Java6文档显示,您可以使用可执行文件来启动应用程序或执行它们调用控制选项的维护操作。
其中两个选项是:
javaws -uninstall <jnlp>
javaws -import [import-options] <jnlp>
你可以做的一件事是
javaws -import -silent -shortcut <jnlp>
因此,如果您可以运行一个脚本,该脚本首先卸载您的特定 jnlp 应用程序,然后静默重新导入它及其快捷方式,那么这将解决您的问题。我认为 Java 不会自动为您执行此操作。
请注意,文档说它必须是静默安装才能使快捷方式选项起作用。此外,我还没有仔细检查这是否真的有效。
我只是想对上述解决方案添加评论,以防它节省任何时间。
如果您的应用程序安装在 WebStart 缓存中,但快捷方式已被删除(如在 java 更新期间,或用户删除),则 javaws -import -silent -shortcut 将不仅仅为应用程序重新创建快捷方式。至少对于 1.6.0_u35 和 u37。
似乎 WebStart 检查应用程序是否在缓存中,如果是,它只是退出而不创建快捷方式。非常失望...