Закрепление приложения Java с помощью Launch4j на панели задач Windows 7
В настоящее время я пытаюсь закрепить приложение Java на панели задач Windows 7. Приложение запускается с Launch4j. Значок программы отображается правильно, но при щелчке правой кнопкой мыши по значку на панели задач отображается только контекстное меню с записью "Закрыть окно". Нет пункта меню для закрепления приложения на панели задач. Перетаскивание файла EXE в панель задач также не работает должным образом. При нажатии этого нового средства запуска на панели задач появляется второй значок на панели задач.
Я следовал инструкциям решения этих двух вопросов, чтобы решить проблему, но это не помогло:
- Закрепление приложения Java на панели задач Windows 7
- Использование JNA для получения / установки идентификатора приложения
Материал JNA из второго вопроса / решения компилируется и не выдает никаких исключений. Я могу прочитать идентификатор приложения после установки. Но я все еще не могу прикрепить приложение к панели задач.
Я создал небольшое тестовое приложение на Github, которое демонстрирует проблему:
https://github.com/kayahr/launch4jtest
Приложение использует Maven в качестве системы сборки. Просто беги mvn package
и вы найдете ZIP-файл в целевом каталоге, который содержит EXE-файл и jna.jar, который необходим для установки этого идентификатора приложения. Извлеките этот ZIP в какой-либо каталог, дважды щелкните по EXE и попробуйте прикрепить приложение к панели задач, и вы увидите проблему.
Так что не так с этим приложением?
2 ответа
NB Переписать некоторые комментарии первоначально в основном посте согласно запросу каяра:)
Вам необходимо создать ярлык значка, который встраивает информацию AppUserModelID. InnoSetup может создать такой значок ярлыка под [Icons]
раздел. Укажите имя приложения, назначенное AppUserModelID через JNA. Предлагаемые ссылки для чтения:
Как сделать файл.exe для установщика izpack.jar file
Launch4j, NSIS и дубликаты закрепленных значков панели задач Windows 7
- Он работает при перетаскивании EXE-файла (не ярлыка его значка) на панель задач Windows 7 для создания закрепленного значка;
- Это работает при запуске EXE-файла и последующем выборе меню "закрепить на панели задач" для создания закрепленного значка. Если вы не установите AppUserModelID, это невозможно; даже это вызовет странное поведение, например, наличие значка javaw.exe на панели задач вместо значка exe, поскольку Launch4J вызывает исполняемый файл jar с помощью javaw.exe (дублированные закрепленные значки)
Чтобы запустить сборщик установщиков на базе Windows под Linux, обратитесь к этому руководству:
http://katastrophos.net/andre/blog/2009/03/16/setting-up-the-inno-setup-compiler-on-debian/
Да, как упомянул kayahr, эта функция Windows 7 будет работать только тогда, когда ее ярлык со встроенным AppUserModelID остается неизменным (то есть не удаляется / удаляется).
Я использую InnoSetup для создания установщика для своего Java-приложения. Чтобы сделать значок моего приложения закрепляемым, я делаю два шага:
- Установите AppUserModelID для моего приложения:
Добавьте пакет из Maven: net.java.dev.jna / jna-platform-5.7.0
установить AppUserModelID
WString id = новый WString("TMP.TestApp");
Shell32.INSTANCE.SetCurrentProcessExplicitAppUserModelID(идентификатор);
Используйте AppUserModelID при создании значка с помощью InnoSetup
[Иконки]
Название:"{commondesktop}\TestApp"; Имя файла:"{app}\run.bat"; Рабочий каталог:"{приложение}"; Имя файла значка:"{приложение}\test-icon.ico"; AppUserModelID: "TMP.TestApp"; Флаги: runminimized