我目前正在尝试将Java应用程序固定到Windows 7任务栏。该应用程序随Launch4j一起启动。程序图标显示正确,但右键单击任务栏上的图标仅显示带有“关闭窗口”条目的上下文菜单。没有用于将应用程序固定到任务栏的菜单条目。将EXE文件拖到任务栏也无法正常工作。在任务栏中单击此新启动器时,会在任务栏中生成第二个图标。
我按照这两个问题的解决方案的指示解决了这个问题,但没有帮助:
来自第二个问题/解决方案的JNA内容编译并且不会抛出任何异常。我可以在设置后阅读应用程序ID。但我仍然无法将应用程序固定到任务栏。
我在Github上创建了一个小测试应用程序来演示这个问题:
https://github.com/kayahr/launch4jtest
该应用程序使用Maven作为构建系统。只需运行mvn package
,您就会在目标目录中找到一个ZIP文件,其中包含设置此应用程序ID所需的EXE文件和jna.jar。将此ZIP解压缩到某个目录,双击EXE并尝试将应用程序固定到任务栏,您将看到问题。
这个应用程序出了什么问题?
答案 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
要在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 应用程序创建安装程序。为了使我的应用程序图标可固定,我执行了两个步骤:
从 Maven 添加包:net.java.dev.jna/jna-platform-5.7.0
设置 AppUserModelID
WString id = new WString("TMP.TestApp");
Shell32.INSTANCE.SetCurrentProcessExplicitAppUserModelID(id);
在使用 InnoSetup 创建图标时使用 AppUserModelID
[图标]
名称:“{commondesktop}\TestApp”;文件名:“{app}\run.bat”;工作目录:“{app}”;图标文件名:“{app}\test-icon.ico”; AppUserModelID: "TMP.TestApp";标志:运行最小化