Закрепление приложения Java с помощью Launch4j на панели задач Windows 7

В настоящее время я пытаюсь закрепить приложение Java на панели задач Windows 7. Приложение запускается с Launch4j. Значок программы отображается правильно, но при щелчке правой кнопкой мыши по значку на панели задач отображается только контекстное меню с записью "Закрыть окно". Нет пункта меню для закрепления приложения на панели задач. Перетаскивание файла EXE в панель задач также не работает должным образом. При нажатии этого нового средства запуска на панели задач появляется второй значок на панели задач.

Я следовал инструкциям решения этих двух вопросов, чтобы решить проблему, но это не помогло:

Материал 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

  1. Он работает при перетаскивании EXE-файла (не ярлыка его значка) на панель задач Windows 7 для создания закрепленного значка;
  2. Это работает при запуске 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-приложения. Чтобы сделать значок моего приложения закрепляемым, я делаю два шага:

  1. Установите AppUserModelID для моего приложения:
  • Добавьте пакет из Maven: net.java.dev.jna / jna-platform-5.7.0

  • установить AppUserModelID

    WString id = новый WString("TMP.TestApp");
    Shell32.INSTANCE.SetCurrentProcessExplicitAppUserModelID(идентификатор);

  1. Используйте AppUserModelID при создании значка с помощью InnoSetup

    [Иконки]

    Название:"{commondesktop}\TestApp"; Имя файла:"{app}\run.bat"; Рабочий каталог:"{приложение}"; Имя файла значка:"{приложение}\test-icon.ico"; AppUserModelID: "TMP.TestApp"; Флаги: runminimized

Другие вопросы по тегам