Russian Qt Forum

Qt => Общие вопросы => Тема начата: lenny от Апрель 16, 2011, 09:56



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


Название: Re: Подскажите, где хранить изменяемые файлы кроссплатформенными приложениями?
Отправлено: Пантер от Апрель 16, 2011, 10:50
QString QDir::homePath () [static]
QString QDir::tempPath () [static]


Название: Re: Подскажите, где хранить изменяемые файлы кроссплатформенными приложениями?
Отправлено: lit-uriy от Апрель 16, 2011, 19:51
Смотри:
enum QDesktopServices::StandardLocation
и
QSettings ini-формат


Название: Re: Подскажите, где хранить изменяемые файлы кроссплатформенными приложениями?
Отправлено: zenden от Апрель 16, 2011, 20:36
QString QDir::homePath () [static]
QString QDir::tempPath () [static]

а потом на винде появляется такая чушь ( каждая программа с unix-корнями непременно создает свою папку не там, где надо)
(http://habreffect.ru/files/21d/71d511d98/screenshot_2011-04-16_002.jpg)

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



Название: Re: Подскажите, где хранить изменяемые файлы кроссплатформенными приложениями?
Отправлено: lenny от Апрель 16, 2011, 21:02
Спасибо за QDir::homePath ()! Но все-таки напишу для виндуз код отдельно. А где в маке хранят файлы?


Название: Re: Подскажите, где хранить изменяемые файлы кроссплатформенными приложениями?
Отправлено: Igors от Апрель 17, 2011, 04:24
А где в маке хранят файлы?
Файлы все-таки рядом с приложением. А (относительно небольшие) настройки - в преференсах, и это очень удобно


Название: Re: Подскажите, где хранить изменяемые файлы кроссплатформенными приложениями?
Отправлено: lenny от Апрель 18, 2011, 11:44
Спасибо за советы! QSettings прикольная штука, правда не совсем то, что мне надо.


Название: Re: Подскажите, где хранить изменяемые файлы кроссплатформенными приложениями?
Отправлено: Denjs от Апрель 18, 2011, 15:28
QString QDir::homePath () [static]
QString QDir::tempPath () [static]

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


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

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

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

а про настройки - скажу так: я понимаю, что рекомендации - это для некоторых "все"... но в гробу я видел лишний раз в болото виндового реестра лезть...) и не я один, полагаю.
Если только глобальные вещи "единые для всех пользователей..." но и это под сомнением...
с другой сторооны - QSettings должен прекрасно справиться с хранением настроек в реестре (в том числе и в плане соответсвия вашему талмуду msdn)... теоретически...


Название: Re: Подскажите, где хранить изменяемые файлы кроссплатформенными приложениями?
Отправлено: Авварон от Апрель 18, 2011, 20:02
Использовать QSettings в любом случае, а файлы рядом с приложением, либо давать юзеру возможность указать куда сохранять (если они юзер специфик, что вообще редкий юзкейз - в большинстве случаев закачанные/созданные файлы будут полезны и другим пользователям).
В любом случае, QSettings ФС не засирает (вернее засирает в пределах разумного), а вот если начать создавать папки в хомяке, будет очень плохо - на маке программы ставятся/удаляются драг&дропом и в общем случае нет способа удалить мусор в хомяке.


Название: Re: Подскажите, где хранить изменяемые файлы кроссплатформенными приложениями?
Отправлено: zenden от Апрель 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


Название: Re: Подскажите, где хранить изменяемые файлы кроссплатформенными приложениями?
Отправлено: xokc от Апрель 19, 2011, 17:30
а файлы рядом с приложением
В Windows могут быть ограничения по-умолчанию на доступ по записи к каталогу с приложением, особенно если оно в Program Files.


Название: Re: Подскажите, где хранить изменяемые файлы кроссплатформенными приложениями?
Отправлено: mutineer от Апрель 19, 2011, 17:31
а файлы рядом с приложением
В Windows могут быть ограничения по-умолчанию на доступ по записи к каталогу с приложением, особенно если оно в Program Files.


В семерке, например, Program Files юзеру для записи недоступен. По умолчанию, естественно


Название: Re: Подскажите, где хранить изменяемые файлы
Отправлено: Пантер от Апрель 20, 2011, 07:24
Доступ-то недоступен, но винда как-то это отрабатывает. У меня конфиги лежат рядом с прогой и редактировать их из проги получается, вот только измененный вариант ложится системой в хомяк и впоследствии работа происходит с ним.


Название: Re: Подскажите, где хранить изменяемые файлы
Отправлено: xokc от Апрель 20, 2011, 20:27
Доступ-то недоступен, но винда как-то это отрабатывает
Какая версия? Если Vista и выше - должен быть отключён (или соответствующим образом настроен) UAC и пользователь должен быть из группы админов. Но это всё лишь частные случаи.


Название: Re: Подскажите, где хранить изменяемые файлы кроссплатформенными приложениями?
Отправлено: Пантер от Апрель 21, 2011, 07:29
Какая версия? Если Vista и выше - должен быть отключён (или соответствующим образом настроен) UAC и пользователь должен быть из группы админов. Но это всё лишь частные случаи.
Это было в семерочке. Пользователь не админ.


Название: Re: Подскажите, где хранить изменяемые файлы кроссплатформенными приложениями?
Отправлено: lenny от Апрель 21, 2011, 11:12
Хорошая прога должна избавлять админов от лишних настроек при установке или внедрению. Для винды сделал в Application Data пользователя, для осталного в хом.


Название: Re: Подскажите, где хранить изменяемые файлы кроссплатформенными приложениями?
Отправлено: andybeg от Апрель 21, 2011, 12:36
можно ещё хранить настройки например в БД


Название: Re: Подскажите, где хранить изменяемые файлы кроссплатформенными приложениями?
Отправлено: mutineer от Апрель 21, 2011, 12:50
А БД хранить в ...? И все возвращается к начальному вопросу


Название: Re: Подскажите, где хранить изменяемые файлы кроссплатформенными приложениями?
Отправлено: andybeg от Апрель 21, 2011, 14:35
Цитировать
А БД хранить в ...? И все возвращается к начальному вопросу
а не всё ли равно? бд сама занимается хранением баз ...


Название: Re: Подскажите, где хранить изменяемые файлы кроссплатформенными приложениями?
Отправлено: Пантер от Апрель 21, 2011, 14:41
Цитировать
А БД хранить в ...? И все возвращается к начальному вопросу
а не всё ли равно? бд сама занимается хранением баз ...
Это как так?


Название: Re: Подскажите, где хранить изменяемые файлы кроссплатформенными приложениями?
Отправлено: Denjs от Апрель 21, 2011, 14:47
Цитировать
А БД хранить в ...? И все возвращается к начальному вопросу
а не всё ли равно? бд сама занимается хранением баз ...
а если у вас SQLite? встраиваемая с файликом вместо всей БД? вы должны файлик разместить.


Название: Re: Подскажите, где хранить изменяемые файлы кроссплатформенными приложениями?
Отправлено: Sancho_s_rancho от Апрель 21, 2011, 14:50
Хорошая прога должна избавлять админов от лишних настроек при установке или внедрению. Для винды сделал в Application Data пользователя, для осталного в хом.
Хде-хде. Известно где! QDesktopServices::storageLocation(QDesktopServices::DataLocation)


Название: Re: Подскажите, где хранить изменяемые файлы кроссплатформенными приложениями?
Отправлено: andybeg от Апрель 21, 2011, 15:50
Цитировать
Это как так?
ставим мускуль и коннектимся к нему


Название: Re: Подскажите, где хранить изменяемые файлы кроссплатформенными приложениями?
Отправлено: mutineer от Апрель 21, 2011, 15:58
Цитировать
Это как так?
ставим мускуль и коннектимся к нему

То бишь чтобы заюзать приложение нужен установленный и запущенный мускуль? Как-то не очень юзер-френдли


Название: Re: Подскажите, где хранить изменяемые файлы кроссплатформенными приложениями?
Отправлено: Пантер от Апрель 21, 2011, 16:02
Цитировать
Это как так?
ставим мускуль и коннектимся к нему
А мускуль разве сам размещает базы??? Вообще-то ты при установке указываешь где инициализировать БД.