2015-04-13 2 views
0

Я создал приложение Java, сделал из него автономное приложение и сделал установщик с InnoSetup.JAR не имеет прав на запись в своей собственной установке directoy (Windows 8)

Когда я его установлю, мое приложение будет установлено по умолчанию в Windows 8: C:\Program Files (x86)\InstallDirOfApp.

Когда я запускаю свое приложение, он должен записать некоторые файлы (например, настройки) в свою папку установки. Но у него нет разрешения на это. Только когда я начинаю его с «Начать как администратор», он снова работает хорошо.

Как это исправить? Я не хочу говорить моим пользователям, что они всегда должны нажать «выполнить как администратор».

И кстати: почему Windows не позволяет приложению писать в свой собственный каталог установки?

+3

«Когда я запускаю приложение, он должен записать некоторые файлы (например, настройки) в каталог установки». Не делайте этого, в основном. Жизнь намного проще, если вы отделяете данные, присущие самой программе (ее двоичные файлы и ресурсы) от сгенерированных данных (настройки, пользовательские документы и т. Д.). Это упрощает процесс обновления, поскольку вы знаете, что вы можете заменить * все * в области программных файлов. Это очень распространено. –

+1

Поместите ваши программы в записываемые данные в '{user.home}/AppData/Local' или' {user.home}/AppData/Roaming' в зависимости от того, может ли конфигурация переноситься на другие машины или нет. – MadProgrammer

+0

Я думаю, что реальный вопрос : почему ** вы ** считаете, что каталог, который используется для установки приложений, является подходящим местом для хранения данных, с которыми имеет дело приложение ?! – GhostCat

ответ

1

Это удача Windows 8.

Как это исправить? Правильный ответ (IMHO) - «не записывать в каталог установки». Существует разница между установкой и рабочим каталогом. Вы можете продолжить использование "C\Program Files\Foobar" в качестве каталога установки, но используйте что-то вроде "%temp%\Foobar" или "%home%\Foobar" как рабочий каталог. Места, которые я рекомендовал, обычно доступны для записи.

Смежные вопросы