当前位置: 首页 > 面试题库 >

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

鄂育
2023-03-14
问题内容

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

第二个问题/解决方案中的JNA内容将进行编译,并且不会引发任何异常。设置后,我可以读取应用ID。但是我仍然无法将应用程序固定到任务栏。

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

https://github.com/kayahr/launch4jtest

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

那么,此应用程序怎么了?


问题答案:

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

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

  1. 将EXE文件(不是其图标快捷方式)拖放到Windows 7任务栏中以创建固定的图标时,它可以工作。
  2. 当运行EXE文件并随后选择“固定到任务栏”选项菜单来创建固定的图标时,它将起作用。如果您未设置 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的
图标快捷方式保持不变(即未删除/删除)时才能使用。



 类似资料:
  • 但是,当我将exe文件复制到其他地方并运行它时,我会得到错误消息。 我在SO上搜索,发现了以下问题,但无法使我的应用程序与那里给出的建议工作。 如何将JRE绑定到Java应用程序的EXE中?Launch4j表示“运行时丢失或损坏”。 如有任何帮助,将不胜感激。

  • 我尝试的第一件事是用7zip解包exe。这样,我得到了一些类文件,但肯定不是包在exe中的整个应用程序(类文件似乎属于launch4j)。 还有什么选择?

  • 问题内容: 我有一个运行自定义gradle任务的Java应用程序,该应用程序在被调用时需要一些参数。这些是: Gradle任务如下所示: 我已尝试运行,但无法正常工作。 问题答案: 从Gradle 4.9开始,可以使用–args传递命令行参数。例如,如果要使用命令行参数启动应用程序,则可以使用 gradle run –args =’foo –bar’ 另请参阅Gradle应用程序插件 如何升级Gr

  • 我转换了一个java程序(猜数字游戏)到. jar,但它没有双击运行,所以,运行它在cmd(它的工作)现在我转换为. exe使用启动4j,但应用程序也不工作。救命啊!

  • 我正在探索将java web应用程序移动到Azure应用程序服务的可能性。应用程序on prem在启动时读取属性文件。 是否有可能将属性文件传递或放置到应用服务?如果没有,建议将此类遗留应用程序移动到Azure应用服务?

  • 我需要混淆一个Java应用程序,它依赖于许多外部JAR。该应用程序由许多模块组成,每个模块都包含API和实现JAR。基本上,我需要创建一个gradle任务来混淆所有这些jar,这些jar可以稍后在Jenkins的构建过程中使用。有许多关于Proguard的文档,但大部分都涉及Android应用程序。 已经提到官方的ProGuard留档在这里:ProGuard Gradle插件