Закрепление исполняемого файла Java (с launch4j) на панели задач Windows 7 - PullRequest
28 голосов
/ 28 марта 2012

Потратив полдня на поиски и попытки, я, наконец, сдаюсь.

У меня есть Java-приложение, в котором я создаю исполняемый jar (чтобы включить любые другие библиотеки и просто иметь один файл jar).С помощью launch4j и исполняемого фляги я делаю исполняемый файл «MyApp.exe».

Исполняемый файл работает нормально, но я хочу прикрепить его к панели задач Windows 7.На данный момент у меня есть только запись на панели задач «Закрыть окно».

После прочтения и реализации следующих решений с JNA

мое приложение корректно отображает свой «Идентификатор модели приложения» в графическом интерфейсе (только для тестированияцель).

НО: моя программа отображается в диспетчере задач как "javaw.exe", и я все еще не могу прикрепить ее к панели задач, даже если я установил опцию launch4j "пользовательское имя процесса и XPманифест стиля ".

Справочная информация: я работаю с учетной записью администратора Windows 7, и я не хочу, чтобы приложение требовало прав администратора.

В любом случае, если я запускаю приложение"как администратор "из контекстного меню и подтвердите сообщение UAC, теперь я могу закрепиться на панели задач.НО: несмотря на то, что я правильно установил «Идентификатор модели пользователя приложения», Windows все еще хочет закрепить «javaw.exe», хотя моя программа теперь отображается как «MyApp.exe» в TaskManager.

IЯ в полном замешательстве.Но я, очевидно, не единственный, у кого есть эти проблемы.=> См. Последние комментарии к ответу Григория Пакоша в Использование JNA для получения / установки идентификатора приложения

Заключительные вопросы:

  1. Путь Григория Пакоша с помощью JNA для установки«Идентификатор модели пользователя приложения» (https://stackoverflow.com/a/1928830/1128689) работает для меня.Но все же Windows распознает мое приложение как экземпляр "javaw.exe".Что еще мне нужно сделать?
  2. Возможно, некоторые обновления Windows или Java что-то нарушают?
  3. Действительно ли мне нужно запускать мое приложение с повышенными правами пользователя?Я действительно не хочу ...
  4. Есть ли еще какие-то опции в launch4j, которые я должен установить?
  5. Нужно ли использовать файл манифеста в launch4j?

Ответы [ 4 ]

1 голос
/ 23 августа 2013

Основная причина: javaw зарегистрирован как хост-процесс (в реестре Windows).Скорее всего это вызвано следующими причинами (источник: Идентификаторы модели пользователя приложения (AppUserModelID) )

Определенные приложением и определяемые системой AppUserModelIDs

Некоторые приложенияне объявляйте явный AppUserModelID.Они не являются обязательными.В этом случае система использует серию эвристик для присвоения внутреннего AppUserModelID.

[...]

, если процесс был запущен с помощью ярлыка, содержащего аргументы запуска (обычно это цель)содержимое для размещения в качестве «приложения»), система может определить личность, и приложение может быть закреплено и перезапущено.

О поведении хост-процесса:

РегистрацияПриложение как хост-процесс

Приложение может установить запись реестра IsHostApp так, чтобы процесс этого исполняемого файла на панели задач рассматривался как процесс хоста.Это влияет на его группировку и записи списка переходов по умолчанию.

1 голос
/ 23 апреля 2012

Вы ищете это, которое я использовал в своем приложении, чтобы показать работающее приложение Java на панели задач Windows ..

SystemTray systemTray = new SystemTray(composite, parent.getShell(), parent.getDisplay(), "My Application");
systemTray.makeSystemTray();
1 голос
/ 22 августа 2012

Нет проблем и с winrun4j , который новее и проще в использовании, чем Jsmooth

1 голос
/ 05 апреля 2012

Я получил эту работу, создав Exe из работающего фляги с помощью JSmooth . Прикрепил его к панели задач и запустил без проблем.

Надеюсь, это поможет

...