系统相关
首页 > 系统相关> > 使用Launch4j将Java应用程序固定到Windows 7任务栏

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

作者:互联网

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

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

> Pinning a Java application to the Windows 7 taskbar
> Using JNA to get/set application identifier

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

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

https://github.com/kayahr/launch4jtest

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

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

解决方法:

注:根据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

>将EXE文件(不是其图标快捷方式)拖放到Windows 7任务栏中以创建固定图标时,它可以正常工作;
>它在运行EXE文件并稍后选择“pin to taskbar”选项菜单以创建固定图标时起作用.如果您未设置AppUserModelID,则无法进行此操作;甚至它会导致一种奇怪的行为,例如在任务栏上使用javaw.exe“icon”而不是你的exe图标,因为Launch4J使用javaw.exe调用可执行jar(重复的固定图标)

要在Linux下运行基于Windows的安装程序构建器,请参考以下内容:

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

是的,正如kayahr所提到的,只有当嵌入式AppUserModelID的图标快捷方式保持不变(即不删除/删除)时,此Windows 7功能才有效.

标签:taskbar,java,windows,windows-7,launch4j
来源: https://codeday.me/bug/20191004/1852175.html