使用Launch4j将Java应用程序固定到Windows 7任务栏

我目前正试图将Java应用程序固定到Windows 7任务栏。 该应用程序使用Launch4j启动。 程序图标显示正确,但右键单击任务栏上的图标只会显示带有“closures窗口”条目的上下文菜单。 没有用于将应用程序固定到任务栏的菜单项。 将EXE文件拖到任务栏也不能正常工作。 在任务栏中单击此新启动器时,任务栏中会出现另一个图标。

我按照解决这两个问题的方法来解决问题,但是没有帮助:

  • 将Java应用程序固定到Windows 7任务栏
  • 使用JNA获取/设置应用程序标识符

从第二个问题/解决scheme的JNA东西编译,并没有抛出任何exception。 设置后我可以读取应用程序ID。 但我仍然不能将应用程序固定到任务栏。

我在Github上创build了一个小的testing应用程序来演示这个问题:

https://github.com/kayahr/launch4jtest

该应用程序使用Maven作为构build系统。 只需运行mvn package ,你会在目标目录中find一个ZIP文件,其中包含EXE文件和需要设置该应用程序ID的jna.jar。 将此ZIP解压缩到某个目录,双击EXE并尝试将应用程序固定到任务栏上,您将看到问题。

那么这个应用程序有什么问题?

注意根据kayahr的要求,在主帖中重写了一些评论:)

您需要创建嵌入AppUserModelID信息的图标快捷方式。 InnoSetup可以在[Icons]部分创建这样的图标快捷方式。 提供通过JNA分配给AppUserModelID的应用程序名称。 建议阅读的链接:

如何为izpack安装程序.jar文件制作.exe文件

Launch4j,NSIS和复制固定的Windows 7任务栏图标

  1. 它可以在将EXE文件(不是它的图标快捷方式)拖放到Windows 7任务栏上时创建固定图标;
  2. 它在运行EXE文件时运行,之后选择“pin to taskbar”选项菜单创建一个固定图标。 如果你没有设置AppUserModelID ,这是不可能的; 即使它会导致一个奇怪的行为,如在任务栏上有javaw.exe“图标”而不是你的exe图标,因为Launch4J使用javaw.exe调用可执行jar(重复的固定图标)

要在Linux下运行基于Windows的安装程序生成器,请参考以下指南:

http://katastrophos.net/andre/blog/2009/03/16/setting-up-the-inno-setup-compiler-on-debian/

是的,正如kayahr所提到的,这个Windows 7功能只有在其带有嵌入的AppUserModelID的图标快捷方式保持不变(即不被移除/删除)时才能起作用。