Russian Qt Forum
Ноябрь 25, 2024, 05:48 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: Подскажите, где хранить изменяемые файлы кроссплатформенными приложениями?  (Прочитано 10641 раз)
lenny
Гость
« : Апрель 16, 2011, 09:56 »

Здравствуйте! Подскажите где хранить изменяемые файлы, в windows, для возможности менять файлы с права пользователя, папка с установленной программой не подходит, т.к. приложение скорее всего устанавливается администратором. Обычно получаю путь к Application Data пользователя и там храню файлы. А как дело с этим обстоит в других операционных системах? И есть ли в Qt что-нить для получения Application Data. И как вообще лучше поступить при создании кроссплатформенных приложений?
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #1 : Апрель 16, 2011, 10:50 »

QString QDir::homePath () [static]
QString QDir::tempPath () [static]
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #2 : Апрель 16, 2011, 19:51 »

Смотри:
enum QDesktopServices::StandardLocation
и
QSettings ini-формат
Записан

Юра.
zenden
Гость
« Ответ #3 : Апрель 16, 2011, 20:36 »

QString QDir::homePath () [static]
QString QDir::tempPath () [static]

а потом на винде появляется такая чушь ( каждая программа с unix-корнями непременно создает свою папку не там, где надо)


Настройки надо хранить там, где это требует операционная система. В винде это все стандартизировано и описано в MSDN. Конечно, ленивому программисту легче написать Dir::homePath ()  и больше не думать об этом.

Записан
lenny
Гость
« Ответ #4 : Апрель 16, 2011, 21:02 »

Спасибо за QDir::homePath ()! Но все-таки напишу для виндуз код отдельно. А где в маке хранят файлы?
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #5 : Апрель 17, 2011, 04:24 »

А где в маке хранят файлы?
Файлы все-таки рядом с приложением. А (относительно небольшие) настройки - в преференсах, и это очень удобно
Записан
lenny
Гость
« Ответ #6 : Апрель 18, 2011, 11:44 »

Спасибо за советы! QSettings прикольная штука, правда не совсем то, что мне надо.
Записан
Denjs
Гость
« Ответ #7 : Апрель 18, 2011, 15:28 »

QString QDir::homePath () [static]
QString QDir::tempPath () [static]

а потом на винде появляется такая чушь ( каждая программа с unix-корнями непременно создает свою папку не там, где надо)
<...>
Настройки надо хранить там, где это требует операционная система. В винде это все стандартизировано и описано в MSDN. Конечно, ленивому программисту легче написать Dir::homePath ()  и больше не думать об этом.


а что с файлами? с файлами-то что? вот вы, любезнейший, и расскажите нам тогда, зачем в винде начали копировтаь концепцию Unix-систем - создавать для каждого пользователя "домашние каталоги"? ведь не было этого изначально в виндоус)))

И чем именно вам не нравятся папки начинающиеся с точки? тем что вы не можете их переименовать их быдло-эксплорера? ("мол он , по вине китайских программистов считает что это файл без имени").  я так понимаю это единственная "претензия"??

Где тогда и как по вашему должно хранить файлы относящиеся к только к пользователю, кроме как в его домашнем каталоге?  (с цитатами из MSDN пожалуйста) .

а про настройки - скажу так: я понимаю, что рекомендации - это для некоторых "все"... но в гробу я видел лишний раз в болото виндового реестра лезть...) и не я один, полагаю.
Если только глобальные вещи "единые для всех пользователей..." но и это под сомнением...
с другой сторооны - QSettings должен прекрасно справиться с хранением настроек в реестре (в том числе и в плане соответсвия вашему талмуду msdn)... теоретически...
« Последнее редактирование: Апрель 18, 2011, 15:34 от Denjs » Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #8 : Апрель 18, 2011, 20:02 »

Использовать QSettings в любом случае, а файлы рядом с приложением, либо давать юзеру возможность указать куда сохранять (если они юзер специфик, что вообще редкий юзкейз - в большинстве случаев закачанные/созданные файлы будут полезны и другим пользователям).
В любом случае, QSettings ФС не засирает (вернее засирает в пределах разумного), а вот если начать создавать папки в хомяке, будет очень плохо - на маке программы ставятся/удаляются драг&дропом и в общем случае нет способа удалить мусор в хомяке.
Записан
zenden
Гость
« Ответ #9 : Апрель 19, 2011, 11:29 »

Denjs


Цитировать
Где тогда и как по вашему должно хранить файлы относящиеся к только к пользователю, кроме как в его домашнем каталоге?  (с цитатами из MSDN пожалуйста) .

Цитировать
Per user, roaming   CSIDL_APPDATA   [user profile]\Application data
Per user, non-roaming   CSIDL_LOCAL_APPDATA   [user profile]\Local Settings\Application data

http://msdn.microsoft.com/en-us/library/ms995853.aspx
Записан
xokc
Птица говорун
*****
Offline Offline

Сообщений: 976



Просмотр профиля
« Ответ #10 : Апрель 19, 2011, 17:30 »

а файлы рядом с приложением
В Windows могут быть ограничения по-умолчанию на доступ по записи к каталогу с приложением, особенно если оно в Program Files.
Записан
mutineer
Гость
« Ответ #11 : Апрель 19, 2011, 17:31 »

а файлы рядом с приложением
В Windows могут быть ограничения по-умолчанию на доступ по записи к каталогу с приложением, особенно если оно в Program Files.


В семерке, например, Program Files юзеру для записи недоступен. По умолчанию, естественно
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #12 : Апрель 20, 2011, 07:24 »

Доступ-то недоступен, но винда как-то это отрабатывает. У меня конфиги лежат рядом с прогой и редактировать их из проги получается, вот только измененный вариант ложится системой в хомяк и впоследствии работа происходит с ним.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
xokc
Птица говорун
*****
Offline Offline

Сообщений: 976



Просмотр профиля
« Ответ #13 : Апрель 20, 2011, 20:27 »

Доступ-то недоступен, но винда как-то это отрабатывает
Какая версия? Если Vista и выше - должен быть отключён (или соответствующим образом настроен) UAC и пользователь должен быть из группы админов. Но это всё лишь частные случаи.
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #14 : Апрель 21, 2011, 07:29 »

Какая версия? Если Vista и выше - должен быть отключён (или соответствующим образом настроен) UAC и пользователь должен быть из группы админов. Но это всё лишь частные случаи.
Это было в семерочке. Пользователь не админ.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.056 секунд. Запросов: 23.