Теория - Где создавать ini - в директории с главной программой или в %appdata%?

Ответить
 • Просмотры: 1
Аватара пользователя
bk99

Теория - Где создавать ini - в директории с главной программой или в %appdata%?

Сообщение bk99 »

Вопрос к практикующим "писателям".

Сразу оговорюсь, что программ я не пишу, языками не владею, стандартов не знаю.

Итак, преамбула.

Есть одна Программа (типа текстовый редактор с фенечками), один ехе-шник, настройки хранятся в реестре. Автор Программы решил вынести настройки из реестра в ini, но поместил его (этот ини) сюда:

C:\Documents and Settings\[user]\Application Data\Программа

Мне же кажется, что ини-шник должен лежать в директории с главной программой. Но автор упёрся на своём, и переубедить его я не могу. Посоветуйте, пожалуйста, какие доводы я бы мог привести в свою пользу? Или я всё-таки не прав?

Спасибо.

зы Прошу прощения, если это офтоп...
Аватара пользователя
DedAlex

Re: Теория - Где создавать ini - в директории с главной программой или в %appdata%?

Сообщение DedAlex »

bk99, правильно автор решил. В Win Vista/7 для записи в ProgramFiles, куда обычно устанавливаются программы, нужны привилегии.
Аватара пользователя
Любезный

Re: Теория - Где создавать ini - в директории с главной программой или в %appdata%?

Сообщение Любезный »

Сам задавался этим вопросом за время программирования.



Решение хранить ини (и не только ини, но и базу данных) в каталоге с программой пригодно ТОЛЬКО для программ, которые разрабатываются для таскания на флэшке или для размещения в каталоге с документами.



В Program Files нужно размещать файлы программы, которые будут изменяться только по праздникам (exe, справка и.т.п).



Что касается настроек. Если вы хотите, чтобы пользователь имел к ним доступ с помощью сторонних приложений, например, с помощью "Блокнота", ини-файл можно разместить в каталоге "Мои документы". Если же настройки будут меняться только самой программой - им путь в специальный каталог, являющийся подкаталогом в одном из каталогов AppData. Причём есть как общий каталог AppData, так и пользовательские. Пользовательский каталог AppData - свой для каждого пользователя Windows. Общие AppData могут меняться только пользователями с привилегиями администратора. Если вы хотите, чтобы простой пользователь мог менять общие настройки, нужно назначить на ваш подкаталог в общих AppData соответствующие права.



Ещё один важный момент. Ни в коем случае не следует жёстко прописывать путь к настройкам в AppData, ибо для разных версий Windows эти пути отличаются. Не следует также искать путь к AppData в реестре - для этого есть специальная функция Windows API shGetFolderPath, которая вернёт этот путь.
Аватара пользователя
yurfed

Re: Теория - Где создавать ini - в директории с главной программой или в %appdata%?

Сообщение yurfed »

Цитата bk99:



Программа портабельна, поставляется как один зазипованный ехе-шник (сори, что сразу про это не упомянул
Теория - Где создавать ini - в директории с главной программой или в %appdata%?




Так в этом и есть всё доказательство, что раз портабельная, то должна хранить настройки не зависимо от конфигурации компьютера, т.е. свободно переноситься на флешке. Значит .ini должен лежать возле программы, а на хз где. В этом и есть смысл портабельности и настроек в том числе.
Аватара пользователя
Iska

Re: Теория - Где создавать ini - в директории с главной программой или в %appdata%?

Сообщение Iska »

Ну, "портабельная" - это я так сказал, автор эту Программу не позиционирует как "портабельную". Программа - это один ехе-шник, который может запускаться из любого места (хоть с флешки), а ини файл пишется в АпДата.
Аватара пользователя
DedAlex

Re: Теория - Где создавать ini - в директории с главной программой или в %appdata%?

Сообщение DedAlex »

Программа портабельна, поставляется как один зазипованный ехе-шник (сори, что сразу про это не упомянул).
Аватара пользователя
bk99

Re: Теория - Где создавать ini - в директории с главной программой или в %appdata%?

Сообщение bk99 »

Ну, "портабельная" - это я так сказал, автор эту Программу не позиционирует как "портабельную". Программа - это один ехе-шник, который может запускаться из любого места (хоть с флешки), а ини файл пишется в АпДата.
Аватара пользователя
Drongo

Re: Теория - Где создавать ini - в директории с главной программой или в %appdata%?

Сообщение Drongo »

Цитата Busla:



"путь, к ини, пусть хранится также в самом ини" - это гениально, и как его найти?!
Теория - Где создавать ini - в директории с главной программой или в %appdata%?




С этим я перемудрил, тут каюсь. Изображение


Цитата Busla:



Просто проверять наличие рядом с exe-файлом ini-файла, если есть - использовать только его, если нет - искать/создавать в %appdata%.
Теория - Где создавать ini - в директории с главной программой или в %appdata%?




Он же прогер, это и имелось ввиду, не разжёвывать же мысль. Изображение
Аватара пользователя
bk99

Re: Теория - Где создавать ini - в директории с главной программой или в %appdata%?

Сообщение bk99 »

Цитата bk99:



Есть одна Программа (типа текстовый редактор с фенечками), один ехе-шник, настройки хранятся в реестре. Автор Программы решил вынести настройки из реестра в ini, но поместил его (этот ини) сюда:

C:\Documents and Settings\[user]\Application Data\Программа
Теория - Где создавать ini - в директории с главной программой или в %appdata%?




Скажу как программист и системный администратор.

Есть такой социальный подвид "Programmist 98" - это человек, который пишет программы так, будто бы все вокруг до сих пор работают в операционной системе Windows 98, которая никак не контролирует и не ограничивает действия программы.



"Programmist 98" никак не задумывается о том, что такие места, как корень диска C:, каталоги Windows и Program files, раздел Local Machine реестра в нормально настроенной системе доступны на запись только программам, запущенным от имени пользователей с полномочиями администратора.

Посему системному администратору, столкнувшемуся с необходимостью использования таких "продуктов", приходится выслеживать, какие же объекты эта ... программа пытается открыть на запись, и указывать эти разрешения в индивидуальном порядке.

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




Цитата bk99:



Ну, "портабельная" - это я так сказал, автор эту Программу не позиционирует как "портабельную". Программа - это один ехе-шник, который может запускаться из любого места (хоть с флешки), а ини файл пишется в АпДата.
Теория - Где создавать ini - в директории с главной программой или в %appdata%?




Да, если программа в своей работе не требует инсталляции, её можно считать "портабельной".

Однако тогда для запуска не с флэшки её придётся устанавливать вручную, что не очень удобно.



Что могу посоветовать, как программист и сисадмин?

1. Использовать инсталлятор: это позволит не только создать ярлыки на рабочем столе, но и ассоциировать её с нужными файлами (то есть открывать ею файлы по двойному щелчку)

2. Сделать проверку наличия INI-файла в каталоге с программой:

- если файл рядом с программой есть и открывается для записи, значит программа используется в переносной редакции

- если файл отсутствует, значит программа используется в установленной редакции, и нужно хранить параметры в профиле
Ответить

Вернуться в «Программирование и базы данных»