Я написал приложение Java, которое включает самообучающийся файл. Self updater загружает новые версии программ с веб-сервера и заменяет файлы приложений. Хотя это работает отлично, если приложение установлено, например. в домашнем каталоге пользователей он не работает на машинах Windows, если он установлен в папке C: \ Program Files. Это связано с тем, что JVM выполняется под учетной записью пользователя, которая не имеет права на запись в каталог программы. Если родная программа, например. установщик, пытается записать в папку программы, обычно появляется всплывающее окно с просьбой разрешить операцию записи. Это не происходит для приложений Java. Зачем?Запись в C: Program Files из Java-программы
Есть ли способ достичь того, что операция записи программы Java в ограниченную папку вызывает всплывающее окно безопасности, чтобы пользователь мог разрешить доступ к этой папке?
Спасибо за ваши ответы. Согласно ответам я вижу следующие варианты:
Java Web Start
Для меня это не вариант для конечных пользователей. Я думаю, что никто не может ожидать от обычного конечного пользователя узнать, что такое Java Web Start, что это хорошо и как он используется, например. Я сомневаюсь, что обычный пользователь Windows знает, как удалить приложение Java Web Start.Используйте exe-пусковую установку с манифестом для запуска приложения Java
Насколько я понимаю это решение, exe-launcher запросит расширенное выполнение прямо при запуске приложения. Это не совсем то, что я хочу, потому что для моего случая использования было бы достаточно получить расширенные права, если обновление доступно, а не при каждом запуске приложения.Выполнение операции обновления путем вызова собственного исполняемого файла
Можно вызвать собственный исполняемый файл, чтобы он мог выполнить операцию обновления. Таким образом, приложение будет запрашивать только расширенные права, если доступно обновление. Это звучит неплохо, но включает в себя некоторые собственные кодировки для Windows и не работает на других платформах.Установите пусковой в папке программы и приложение в пользовательском доме
можно разместить пусковой в папке с программой, которая вызывает приложение, установленная в домашнем каталоге пользователя. Таким образом, можно будет обновить приложение в домашней папке пользователя. Я использую InnoSetup для установки моего приложения в Windows, и насколько я вижу, с этим установщиком сложно справиться с разделенной установкой и, возможно, с другими.Установка полного приложения в домашний каталог пользователя
Поскольку пользователь имеет право на запись в свой домашний каталог, проблем нет. Для меня это выглядит как лучший вариант своей простоты.
Проверьте это: http://stackoverflow.com/questions/4662574/how-do-i-elevate -my-uac-permissions-from-java – Xardas
В другом вопросе вы спрашивали о JWS. Почему бы не установить это приложение. используя JWS? Он обеспечивает автоматическое обновление .. –
Я был UAC, я бы заблокировал ваше приложение сразу и предотвратил его выполнение навсегда. Кто гарантирует, что вы не вводите вредоносные исполняемые файлы вместе с вашим, казалось бы, невиновным материалом Java? –