使用Launch4j将Java应用程序固定到Windows 7任务栏
我目前正在尝试将Java应用程序固定到Windows7任务栏。该应用程序是通过以下方式启动的。程序图标显示正确,但右键单击任务栏上的图标仅显示带有“关闭窗口”条目的上下文菜单。没有用于将应用程序固定到任务栏的菜单项。将EXE文件拖动到任务栏也无法正常工作。在任务栏中单击此新启动器时,任务栏中会出现第二个图标 我按照这两个问题的解决方案的说明来解决问题,但没有帮助:使用Launch4j将Java应用程序固定到Windows 7任务栏,java,windows,windows-7,taskbar,launch4j,Java,Windows,Windows 7,Taskbar,Launch4j,我目前正在尝试将Java应用程序固定到Windows7任务栏。该应用程序是通过以下方式启动的。程序图标显示正确,但右键单击任务栏上的图标仅显示带有“关闭窗口”条目的上下文菜单。没有用于将应用程序固定到任务栏的菜单项。将EXE文件拖动到任务栏也无法正常工作。在任务栏中单击此新启动器时,任务栏中会出现第二个图标 我按照这两个问题的解决方案的说明来解决问题,但没有帮助: 第二个问题/解决方案中的JNA内容是编译的,不会引发任何异常。设置后,我可以读取应用程序id。但我仍然无法将应用程序固定到任
mvn package
,您将在目标目录中找到一个ZIP文件,其中包含设置此应用程序id所需的EXE文件和jna.jar。将此ZIP解压缩到某个目录,双击EXE并尝试将应用程序固定到任务栏,您将看到问题
那么,这个应用程序有什么问题吗?N.B.按照kayahr的要求,重写了最初在主要帖子中的一些评论:) 您需要创建一个嵌入AppUserModelID信息的图标快捷方式。InnoSetup可以在
[图标]
部分下创建这样的图标快捷方式。通过JNA提供分配给AppUserModelID的应用程序名称。建议链接如下:
是的,正如kayahr所提到的,只有当带有嵌入式AppUserModelID的图标快捷方式保持不变(即未被删除/删除)时,此Windows 7功能才会工作。我使用InnoSetup为我的java应用程序创建安装程序。要使我的应用程序图标可锁定,请执行两个步骤:
- 从Maven添加包:net.java.dev.jna/jna-platform-5.7.0
- 设置AppUserModelID
WString id=新的WString(“TMP.TestApp”)
setCurrentProcessExpliciticTappUserModelId(id)
我已经成功地做到了这一点,但不是通过Maven为使用Launch4J创建的可执行文件。您需要创建一个嵌入AppUserModelID信息的图标快捷方式。InnoSetup可以在[Icons]部分下创建这样的图标快捷方式。提供通过JNA分配给AppUserModelID的应用程序名。请参阅和@eee问题是:我需要在Linux上创建此安装程序,因为我在构建期间无法访问Windows box。NSIS有一个插件,但它也只在Windows上运行,因为它直接调用一些Windows API调用。即使我设法修改了这些快捷方式:当用户直接启动EXE或从EXE文件创建自定义快捷方式时会发生什么?相反,它仍然以任何顺序工作:(1)将EXE文件(不是其图标快捷方式)拖放到Windows 7任务栏中以创建固定图标时,它会工作;(2) 当运行EXE文件并在以后选择“将其固定到任务栏”选项菜单以创建固定图标时,它会工作。如果未设置AppUserModelID,则无法执行此操作;即使它会导致一种奇怪的行为,比如在任务栏上显示javaw.exe“icon”,而不是您的exe图标,因为Launch4J使用javaw.exe调用可执行jar要在Linux操作系统上运行基于Windows的应用程序,您可以使用wine。应该注意,只有在特定位置有快捷方式时,此方法才有效!开始菜单。如果让安装程序在程序文件中创建快捷方式(在
.exe
旁边),我可以确认此操作不起作用。我一直在绞尽脑汁试图弄清楚为什么从exe启动时无法锁定(我只能通过拖动快捷方式锁定到任务栏,因为从exe启动时锁定不会与锁定的快捷方式分组)。值得一提的是,我正在运行一个非管理员用户帐户,这可能与权限有关。