Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Где создавать ini - в директории с главной программой или в %appdata%? (http://forum.oszone.net/showthread.php?t=223359)

bk99 20-12-2011 13:11 1818655

Где создавать ini - в директории с главной программой или в %appdata%?
 
Вопрос к практикующим "писателям".
Сразу оговорюсь, что программ я не пишу, языками не владею, стандартов не знаю.
Итак, преамбула.
Есть одна Программа (типа текстовый редактор с фенечками), один ехе-шник, настройки хранятся в реестре. Автор Программы решил вынести настройки из реестра в ini, но поместил его (этот ини) сюда:
C:\Documents and Settings\[user]\Application Data\Программа
Мне же кажется, что ини-шник должен лежать в директории с главной программой. Но автор упёрся на своём, и переубедить его я не могу. Посоветуйте, пожалуйста, какие доводы я бы мог привести в свою пользу? Или я всё-таки не прав?
Спасибо.
зы Прошу прощения, если это офтоп...

DedAlex 20-12-2011 13:28 1818673

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

bk99 20-12-2011 13:45 1818696

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

Drongo 20-12-2011 22:17 1819024

Цитата:

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

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

bk99 21-12-2011 08:38 1819242

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

Drongo 21-12-2011 23:23 1819802

bk99, уговорите его в настройках программы указать на выбор место сохранение ini-файла или в AppData или в месте с программой, лояльность к пользователям приветствуется всегда. Кому нужно пусть сохраняют в папку с прогой, путь, к ини, пусть хранится также в самом ини. А по умолчанию, пусть создаётся в AppData.

bk99 22-12-2011 08:00 1819917

Drongo, да, так и сделал, жду что скажет...
Спасибо.

Busla 27-12-2011 09:34 1823157

Drongo, bk99, скажет о вас много нелицеприятного - "путь, к ини, пусть хранится также в самом ини" - это гениально, и как его найти?!

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

Drongo 27-12-2011 12:54 1823312

Цитата:

Цитата Busla
"путь, к ини, пусть хранится также в самом ини" - это гениально, и как его найти?! »

С этим я перемудрил, тут каюсь. :laugh:
Цитата:

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

Он же прогер, это и имелось ввиду, не разжёвывать же мысль. :)

El Scorpio 29-12-2011 03:00 1824588

Цитата:

Цитата bk99
Есть одна Программа (типа текстовый редактор с фенечками), один ехе-шник, настройки хранятся в реестре. Автор Программы решил вынести настройки из реестра в ini, но поместил его (этот ини) сюда:
C:\Documents and Settings\[user]\Application Data\Программа »

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

"Programmist 98" никак не задумывается о том, что такие места, как корень диска C:, каталоги Windows и Program files, раздел Local Machine реестра в нормально настроенной системе доступны на запись только программам, запущенным от имени пользователей с полномочиями администратора.
Посему системному администратору, столкнувшемуся с необходимостью использования таких "продуктов", приходится выслеживать, какие же объекты эта ... программа пытается открыть на запись, и указывать эти разрешения в индивидуальном порядке.
К счастью, этот социальный подвид постепенно вытесняется нормальными программистами, которые предусматривают хранение настроек программ и прочих изменяемых объектов в профиле пользователя.

Цитата:

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

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

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

Любезный 29-12-2011 17:52 1825026

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

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

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

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

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

vzli_izv 31-12-2011 14:44 1826120

На мой взгляд, программа вообще не должна:
1) ставится на системный диск
2) иметь установщик (максимум что-то типа sfx архива, для удобства распаковки)
3) хранить настройки вне своей папки
4) не работать при переустановке системы

Iska 31-12-2011 16:32 1826167

vzli_izv, это всё хорошо выглядит ровно до тех пор, пока Вам не понадобится сопровождать приложения в корпоративной многопользовательской среде.

vzli_izv 31-12-2011 19:03 1826249

поясните, в чём отличие?

Vadikan 01-01-2012 12:53 1826430

vzli_izv, на мой взгляд, вам категорически нельзя создавать программы с таким подходом :)
Цитата:

Цитата vzli_izv
1) ставится на системный диск
2) иметь установщик (максимум что-то типа sfx архива, для удобства распаковки)
3) хранить настройки вне своей папки
4) не работать при переустановке системы »

Нормальная программа должна быть такой:
1. Программа должна быть вместе с системой.

2. Установщик должен проверять права администратора с помощью запроса UAC.

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

4. Это зависит исключительно от того, требуется ли программе регистрация компонентов/библиотек.

Я не говорю, что всем программам необходимы все эти пункты. Мелким утилитам они вряд ли нужны. Но если вы беретесь за прикладное ПО, то нужно следовать рекомендациям Майкрософт.

vzli_izv 01-01-2012 23:40 1826675

Цитата:

Цитата Vadikan
1. Программа должна быть вместе с системой. »

С таким утверждением я не согласен. Хотя бы потому, что для меня такое не приемо.
А вот перенос самой папки Program Files тоже считаю бе3смысленным.

Цитата:

Цитата Vadikan
2. Установщик должен проверять права администратора с помощью запроса UAC. »

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

Цитата:

Цитата Vadikan
3. Настройки должны храниться в профиле, чтобы у каждого пользователя они были своими. »

это если пользователей несколько, а если пользователь один то это становится проблемой.

Цитата:

Цитата Vadikan
4. Это зависит исключительно от того, требуется ли программе регистрация компонентов/библиотек. »

согласен, но лучше бы не требовалось...

Цитата:

Цитата Vadikan
Но если вы беретесь за прикладное ПО, то нужно следовать рекомендациям Майкрософт. »

спорно, так как Майкрософт пытается сделать универсальное для всех. В этом и беда.
И ладно бы была возможность изменять всё под себя простыми способами, но нет.

Пока программисты не поймут, что операционная система должна быть модульного типа (например как FireFox и дополнения к нему) не видать нам качественного продукта.
В идеале ОС должна ставить минимально необходимое и давать простые возможности в установке плагинов её расширяющих.
Скачал dll > установил > получил нужные функции.

Тот, кто первый поймёт данную технологию и её реализует, утрёт нос всем ОС современности.
Андройд в этом плане максимально приблизился к идеалу, от того и такая бешенная популярность.

Для корректировке моих ответов прошу их рассматривать от частного лица, а не сисадмина, корпорации, многопользовательской среды или сетки с 100 ПК.
Частному лицу надо проще, быстрее и желательно под полный контроль.

Vadikan 02-01-2012 02:11 1826722

vzli_izv, принципы, которые я описал, не имеют отношения к корпоративной среде.

Они относятся к:

1. Многопользовательской модели Windows. Я могу привести вам 7 причин использовать отдельные учетные записи для каждого члена семьи.

2. Модели безопасности Windows. Oдним из фундаментальных ee принципов являются уровни целостности. Это я к вопросу о проверке прав администратора для установки программы. Сей тезис явно намекает на то, что не у всех пользователей компьютера должны быть полные права, опять же из соображений безопасности и стабильности работы ОС.

То, что вы пишете (в форуме и в коде), подразумевает "XP и пользователя с правами админа, с чьей учетной записью работают все члены семьи". Вы отстали на 5 с лишним лет, ибо Vista вышла еще в 2006 году.

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

vzli_izv 02-01-2012 06:08 1826737

Вложений: 1
а я согласен с написанным на все 100%.
На данный момент всё так и есть и это правильно.
Но знаете почему правильно на данный момент? Потому, что других вариантов нету!

Вот 4х местная машина. Она для семьи.
Есть двухместные. Есть мини, есть универсал.
Чувствуете?
Вы не покупаете гараж со всеми машинами по умолчанию. Есть задача - есть предложение.

Windows предлагает сразу сесть на машину, которая размером с фуру + без надобности устанавливает прицеп, без возможности его отцепить. Причём фура как из анекдота - "Доработать напильником".

И да, при каждом переключении скорости ты должен спросить разрешение на действие.
Залезть под капот? Нееет. Система безопасности внутренних агрегатов и узлов под напряжением. Резиновые перчатки дают видимость доступа, но это "какбэ нитак".
Хочется повесить ароматизатор "Йолочка" иль GPS навигатор? Только на станции тех обслуживания.

Но это фсё флуд. Пока ОС делают люди без идей и фантазии, мы будет за ними пытаться доделать.
Это ж надо - 2012 год, а Проводник Windows до сих пор без вкладок (как у браузеров).
Благодарю тех людей, которые создают программы, для возможности минимально приблизить интерфейс к более менее приятному в использовании.

Любезный 02-01-2012 09:37 1826764

Цитата:

Цитата vzli_izv
Windows предлагает сразу сесть на машину, которая размером с фуру + без надобности устанавливает прицеп, без возможности его отцепить. Причём фура как из анекдота - "Доработать напильником". »

Вы когда-нибудь задумывались о причинах эпидемии вирусов и баннеров на ХР? Думаю, что нет. А зря. Все, кто понял, что отдельная ограниченная учётка в сочетании с самым простым антивирусом позволяют закрыться от этой дряни, уже давно создали себе одну или несколько таких учёток для себя и членов своей семьи.

Цитата:

Цитата vzli_izv
Тот, кто первый поймёт данную технологию и её реализует, утрёт нос всем ОС современности.
Андройд в этом плане максимально приблизился к идеалу, от того и такая бешенная популярность. »

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

Кстати, реализовать работу с драйверами устройств мешает модель безопасности системы, которая закрывает пользователю доступ к руту.

Vadikan 02-01-2012 12:39 1826812

Цитата:

Цитата vzli_izv
Это ж надо - 2012 год, а Проводник Windows до сих пор без вкладок (как у браузеров). »

Ну так и учитесь у тех людей, которые пишут файловые менеджеры со вкладками :)



Обратите внимание, что это диалог с дополнительными настройками, а флажки и радиокнопки отражают стандартные параметры установки.

yurfed 02-01-2012 13:06 1826827

Цитата:

Цитата Vadikan
Настройки должны храниться в профиле, чтобы у каждого пользователя они были своими. »

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

-Вы за меня и пальцы что ли загибать будете?
-Ага!

А вообще, где на эту программу посмотреть можно?

Vadikan 02-01-2012 14:51 1826880

Цитата:

Цитата yurfed
Настройки такого рода программ, могут храниться и на съёмном устройстве. Совершенно не понятен подход записи этих настроек в профиль, если это используется единожды. »

Какого рода программ? Речь в шапке идет о текстовом редакторе, который каждый пользователь должен иметь возможность настроить столько раз, сколько нужно, а не единожды.

И если автор не хочет делать расширенную установку, как показано на рисунке TC выше (что грамотно), то ничто не мешает ему сделать в настройках одну кнопку "Сделать поративную версию", которая скопирует файл с настройками и файлы программы в указанное расположение.

И вообще, я не понимаю отторжения, которое вызывает предложение хранить настройки в профиле. Когда программа хранит свои параметры в HKCU, это никого не напрягает. Но как только речь заходит об AppData, сразу начинается аллергия.

yurfed 02-01-2012 15:11 1826888

Цитата:

Цитата Vadikan
Какого рода программ? »

Вадим, ну неужели и тебе объяснять нужно? Самые обычные, которые будут использованы однократно (при падении системы и прочая вся недолга....)
Отсюда и вопрос - зачем всё это записывать в систему, когда можно обойтись однократным запуском, с уже готовыми настройками и возможным редактированием этих самых настроек для конкретного случая.
Цитата:

Цитата Vadikan
Но как только речь заходит об AppData, сразу начинается аллергия. »

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

Vadikan 02-01-2012 15:23 1826895

Цитата:

Цитата yurfed
Вадим, ну неужели и тебе объяснять нужно? Самые обычные, которые будут использованы однократно (при падении системы и прочая вся недолга....) »

Мне не нужно объяснять это. Достаточно читать, что я пишу...
Цитата:

Цитата Vadikan
Я не говорю, что всем программам необходимы все эти пункты. Мелким утилитам они вряд ли нужны. Но если вы беретесь за прикладное ПО, то нужно следовать рекомендациям Майкрософт. »


yurfed 02-01-2012 15:33 1826899

Цитата:

Цитата Vadikan
Достаточно читать, что я пишу... »

Достаточно услышать что говорят другие участники и не слышать только себя, любимого.
Цитата:

Цитата Vadikan
Мелким утилитам они вряд ли нужны »

А тут что то грандиозное обсуждается?
Цитата:

Цитата Vadikan
нужно следовать рекомендациям Майкрософт »

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

Любезный 02-01-2012 18:05 1826976

Цитата:

Цитата yurfed
Даже если без рекомендованного, всё работает нормально, так что ли? Упрись, но следуй рекомендациям. »

Не всегда в этом случае всё работает нормально. Инсталляторы крайне редко умеют определять, что программа устанавливается на съёмное устройство.

PhilB 02-01-2012 18:29 1826992

Цитата:

Цитата vzli_izv
Пока программисты не поймут, что операционная система должна быть модульного типа (например как FireFox и дополнения к нему) не видать нам качественного продукта.
В идеале ОС должна ставить минимально необходимое и давать простые возможности в установке плагинов её расширяющих.
Скачал dll > установил > получил нужные функции. »

Дистрибутивы линукса по сути и представляет подобную систему.

Да и файловая система продумана много лучше. В /etc общие настройки (требующие прав суперпользователя), в домашней директории - пользовательские. И немало программ поддерживает наследование настроек. То есть, если пользователь не создал конфигов, используются общесистемные. (Или как вариант, в домашней директории конфиги есть, и в них явно указано наследовать настройки).

На мой взгляд, это наилучшая схема. Адаптировав под винду, получаем - в Program files стандартный конфиг, в %appdata% - пользовательский.
Если пользователя устраивает стандартное поведение, ему и трогать ничего не надо. Если нет - он может отредактировать пользовательский конфиг, подправив или создав определенные параметры. (Заодно, если он испортит пользовательский конфиг - он может его восстановить, просто скопировав из Program files).

vzli_izv 02-01-2012 19:07 1827008

Цитата:

Цитата Vadikan
И вообще, я не понимаю отторжения, которое вызывает предложение хранить настройки в профиле. Когда программа хранит свои параметры в HKCU, это никого не напрягает. Но как только речь заходит об AppData, сразу начинается аллергия. »

во во, а потом лови эти настройки в реесте да экспортируй...почему по человечески нельзя сделать: просто и без головняка.
про AppData молчу уже...

Цитата:

Цитата PhilB
Дистрибутивы линукса по сути и представляет подобную систему. »

да вот...сегодня 3 часа писал сообщение в эту тему, потом понял, что это бе3полезно и надо что-то менять. И полез читать про линукс...
дистрибутив уже на закачке, видео обзоры я уже глянул, как с флешки ставить уже нашёл ответы....
и судя по последним поправка к закону надо скорее переходить, пока ещё безболезненно.
так что..

Iska 02-01-2012 21:51 1827087

Цитата:

Цитата vzli_izv
поясните, в чём отличие? »

В корпоративной многопользовательской среде важны следующие основные моменты:

* возможность гибкой автоматизированной установки, обновления версий и отката приложения; сюда же я отношу и частичное обновление посредством патчей;
* возможность разграничения управляемости приложением: какие-то настройки приложения должны быть настроены централизованно, единообразно и быть недоступны для изменения конечным пользователям, какие-то — тоже централизованно, но доступными для изменения, третьи — полностью отданы на откуп конечным пользователям.

P.S. Я вижу спор, но не пойму, о чём он. Приложение, нормально работающее в корпоративной многопользовательской среде, превосходно будет работать и с такой постановкой вопроса:
Цитата:

Цитата vzli_izv
опять таки, это нужно для администратирования а не частному пользователю. »

Portable-приложения — это вообще отдельный класс, не надо их тут приводить в пример. Монолитное приложение — пожалуйста, но никакого комплексного решения на них не построишь.

yurfed 02-01-2012 22:59 1827127

Цитата:

Цитата Iska
P.S. Я вижу спор, но не пойму, о чём он »

Iska, ты вроде мужичок нормальный, башка варит, я к тебе прислушиваюсь. Спасибо.
Цитата:

Цитата Iska
Portable-приложения — это вообще отдельный класс »

Согласен на все сто
Цитата:

Цитата Iska
Монолитное приложение »

А чёрт его знает...
Всё остальное не буду цитировать.

Iska 02-01-2012 23:34 1827145

Цитата:

Цитата yurfed
…я к тебе прислушиваюсь.»

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

yurfed 03-01-2012 04:52 1827306

Цитата:

Цитата Любезный
Не всегда в этом случае всё работает нормально. Инсталляторы крайне редко умеют определять, что программа устанавливается на съёмное устройство. »

Я вроде конкретно сказал - если работает нормально, но ковырять инсталяторы можно и до седьмого пришествия. Что здесь не так?

Цитата:

Цитата Iska
В корпоративной многопользовательской среде важны следующие основные моменты:
* возможность гибкой автоматизированной установки, обновления версий и отката приложения; сюда же я отношу и частичное обновление посредством патчей;
* возможность разграничения управляемости приложением: какие-то настройки приложения должны быть настроены централизованно, единообразно и быть недоступны для изменения конечным пользователям, какие-то — тоже централизованно, но доступными для изменения, третьи — полностью отданы на откуп конечным пользователям. »

Да, вот такие политики.
Извини, но я скажу
Чтобы открыть какой то текстовый документ, мне надо зашифроваться и показать жопе паспорт.
Ну не доводите до абсурда эту элементарщину.

Drongo 04-01-2012 03:02 1827970

Цитата:

Цитата Drongo
уговорите его в настройках программы указать на выбор место сохранение ini-файла или в AppData или в месте с программой, лояльность к пользователям приветствуется всегда. »

Цитата:

Цитата Vadikan
Ну так и учитесь у тех людей, которые пишут файловые менеджеры со вкладками
Обратите внимание, что это диалог с дополнительными настройками, а флажки и радиокнопки отражают стандартные параметры установки. »

Цитата:

Цитата yurfed
А вот картинка выше - есть лояльный подход к пользователям. Достаточно одного запуска, чтобы потом не спрашивать "кого и зачем", если настройки имеют место в папке с программой. »

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

Закрыто.


Время: 10:39.

Время: 10:39.
© OSzone.net 2001-