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

时间:2012-02-18 15:58:30

标签: java windows windows-7 taskbar launch4j

我目前正在尝试将Java应用程序固定到Windows 7任务栏。该应用程序随Launch4j一起启动。程序图标显示正确,但右键单击任务栏上的图标仅显示带有“关闭窗口”条目的上下文菜单。没有用于将应用程序固定到任务栏的菜单条目。将EXE文件拖到任务栏也无法正常工作。在任务栏中单击此新启动器时,会在任务栏中生成第二个图标。

我按照这两个问题的解决方案的指示解决了这个问题,但没有帮助:

来自第二个问题/解决方案的JNA内容编译并且不会抛出任何异常。我可以在设置后阅读应用程序ID。但我仍然无法将应用程序固定到任务栏。

我在Github上创建了一个小测试应用程序来演示这个问题:

https://github.com/kayahr/launch4jtest

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

这个应用程序出了什么问题?

2 个答案:

答案 0 :(得分:5)

N.B。根据kayahr的要求,在主帖中重写了一些评论:)

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

How to make .exe file for izpack installer .jar file

Launch4j, NSIS, and duplicate pinned Windows 7 taskbar icons

  1. 将EXE文件(不是其图标快捷方式)拖放到Windows 7任务栏中以创建固定图标时,它可以正常工作;
  2. 在运行EXE文件并稍后选择“pin to taskbar”选项菜单以创建固定图标时,它可以正常工作。如果您未设置 AppUserModelID ,则无法进行此操作;甚至它会导致一种奇怪的行为,比如在任务栏上使用javaw.exe“icon”而不是你的exe图标,因为Launch4J使用javaw.exe调用可执行jar(重复的固定图标)
  3. 要在Linux下运行基于Windows的安装程序构建器,请参阅此指南:

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

    是的,正如kayahr所述,此Windows 7功能仅在嵌入 AppUserModelID 的图标快捷方式保持不变(即未删除/删除)时才有效。

答案 1 :(得分:0)

我使用 InnoSetup 为我的 Java 应用程序创建安装程序。为了使我的应用程序图标可固定,我执行了两个步骤:

  1. 为我的应用设置 AppUserModelID:
  • 从 Maven 添加包:net.java.dev.jna/jna-platform-5.7.0

  • 设置 AppUserModelID

    WString id = new WString("TMP.TestApp");
    Shell32.INSTANCE.SetCurrentProcessExplicitAppUserModelID(id);

  1. 在使用 InnoSetup 创建图标时使用 AppUserModelID

    [图标]

    名称:“{commondesktop}\TestApp”;文件名:“{app}\run.bat”;工作目录:“{app}”;图标文件名:“{app}\test-icon.ico”; AppUserModelID: "TMP.TestApp";标志:运行最小化