Где создавать ini - в директории с главной программой или в %appdata%?
Вопрос к практикующим "писателям".
Сразу оговорюсь, что программ я не пишу, языками не владею, стандартов не знаю. Итак, преамбула. Есть одна Программа (типа текстовый редактор с фенечками), один ехе-шник, настройки хранятся в реестре. Автор Программы решил вынести настройки из реестра в ini, но поместил его (этот ини) сюда: C:\Documents and Settings\[user]\Application Data\Программа Мне же кажется, что ини-шник должен лежать в директории с главной программой. Но автор упёрся на своём, и переубедить его я не могу. Посоветуйте, пожалуйста, какие доводы я бы мог привести в свою пользу? Или я всё-таки не прав? Спасибо. зы Прошу прощения, если это офтоп... |
bk99, правильно автор решил. В Win Vista/7 для записи в ProgramFiles, куда обычно устанавливаются программы, нужны привилегии.
|
Программа портабельна, поставляется как один зазипованный ехе-шник (сори, что сразу про это не упомянул).
|
Цитата:
|
Ну, "портабельная" - это я так сказал, автор эту Программу не позиционирует как "портабельную". Программа - это один ехе-шник, который может запускаться из любого места (хоть с флешки), а ини файл пишется в АпДата.
|
bk99, уговорите его в настройках программы указать на выбор место сохранение ini-файла или в AppData или в месте с программой, лояльность к пользователям приветствуется всегда. Кому нужно пусть сохраняют в папку с прогой, путь, к ини, пусть хранится также в самом ини. А по умолчанию, пусть создаётся в AppData.
|
Drongo, да, так и сделал, жду что скажет...
Спасибо. |
Drongo, bk99, скажет о вас много нелицеприятного - "путь, к ини, пусть хранится также в самом ини" - это гениально, и как его найти?!
Просто проверять наличие рядом с exe-файлом ini-файла, если есть - использовать только его, если нет - искать/создавать в %appdata%. |
Цитата:
Цитата:
|
Цитата:
Есть такой социальный подвид "Programmist 98" - это человек, который пишет программы так, будто бы все вокруг до сих пор работают в операционной системе Windows 98, которая никак не контролирует и не ограничивает действия программы. "Programmist 98" никак не задумывается о том, что такие места, как корень диска C:, каталоги Windows и Program files, раздел Local Machine реестра в нормально настроенной системе доступны на запись только программам, запущенным от имени пользователей с полномочиями администратора. Посему системному администратору, столкнувшемуся с необходимостью использования таких "продуктов", приходится выслеживать, какие же объекты эта ... программа пытается открыть на запись, и указывать эти разрешения в индивидуальном порядке. К счастью, этот социальный подвид постепенно вытесняется нормальными программистами, которые предусматривают хранение настроек программ и прочих изменяемых объектов в профиле пользователя. Цитата:
Однако тогда для запуска не с флэшки её придётся устанавливать вручную, что не очень удобно. Что могу посоветовать, как программист и сисадмин? 1. Использовать инсталлятор: это позволит не только создать ярлыки на рабочем столе, но и ассоциировать её с нужными файлами (то есть открывать ею файлы по двойному щелчку) 2. Сделать проверку наличия INI-файла в каталоге с программой: - если файл рядом с программой есть и открывается для записи, значит программа используется в переносной редакции - если файл отсутствует, значит программа используется в установленной редакции, и нужно хранить параметры в профиле |
Сам задавался этим вопросом за время программирования.
Решение хранить ини (и не только ини, но и базу данных) в каталоге с программой пригодно ТОЛЬКО для программ, которые разрабатываются для таскания на флэшке или для размещения в каталоге с документами. В Program Files нужно размещать файлы программы, которые будут изменяться только по праздникам (exe, справка и.т.п). Что касается настроек. Если вы хотите, чтобы пользователь имел к ним доступ с помощью сторонних приложений, например, с помощью "Блокнота", ини-файл можно разместить в каталоге "Мои документы". Если же настройки будут меняться только самой программой - им путь в специальный каталог, являющийся подкаталогом в одном из каталогов AppData. Причём есть как общий каталог AppData, так и пользовательские. Пользовательский каталог AppData - свой для каждого пользователя Windows. Общие AppData могут меняться только пользователями с привилегиями администратора. Если вы хотите, чтобы простой пользователь мог менять общие настройки, нужно назначить на ваш подкаталог в общих AppData соответствующие права. Ещё один важный момент. Ни в коем случае не следует жёстко прописывать путь к настройкам в AppData, ибо для разных версий Windows эти пути отличаются. Не следует также искать путь к AppData в реестре - для этого есть специальная функция Windows API shGetFolderPath, которая вернёт этот путь. |
На мой взгляд, программа вообще не должна:
1) ставится на системный диск 2) иметь установщик (максимум что-то типа sfx архива, для удобства распаковки) 3) хранить настройки вне своей папки 4) не работать при переустановке системы |
vzli_izv, это всё хорошо выглядит ровно до тех пор, пока Вам не понадобится сопровождать приложения в корпоративной многопользовательской среде.
|
поясните, в чём отличие?
|
vzli_izv, на мой взгляд, вам категорически нельзя создавать программы с таким подходом :)
Цитата:
1. Программа должна быть вместе с системой. 2. Установщик должен проверять права администратора с помощью запроса UAC. 3. Настройки должны храниться в профиле, чтобы у каждого пользователя они были своими. 4. Это зависит исключительно от того, требуется ли программе регистрация компонентов/библиотек. Я не говорю, что всем программам необходимы все эти пункты. Мелким утилитам они вряд ли нужны. Но если вы беретесь за прикладное ПО, то нужно следовать рекомендациям Майкрософт. |
Цитата:
А вот перенос самой папки Program Files тоже считаю бе3смысленным. Цитата:
Цитата:
Цитата:
Цитата:
И ладно бы была возможность изменять всё под себя простыми способами, но нет. Пока программисты не поймут, что операционная система должна быть модульного типа (например как FireFox и дополнения к нему) не видать нам качественного продукта. В идеале ОС должна ставить минимально необходимое и давать простые возможности в установке плагинов её расширяющих. Скачал dll > установил > получил нужные функции. Тот, кто первый поймёт данную технологию и её реализует, утрёт нос всем ОС современности. Андройд в этом плане максимально приблизился к идеалу, от того и такая бешенная популярность. Для корректировке моих ответов прошу их рассматривать от частного лица, а не сисадмина, корпорации, многопользовательской среды или сетки с 100 ПК. Частному лицу надо проще, быстрее и желательно под полный контроль. |
vzli_izv, принципы, которые я описал, не имеют отношения к корпоративной среде.
Они относятся к: 1. Многопользовательской модели Windows. Я могу привести вам 7 причин использовать отдельные учетные записи для каждого члена семьи. 2. Модели безопасности Windows. Oдним из фундаментальных ee принципов являются уровни целостности. Это я к вопросу о проверке прав администратора для установки программы. Сей тезис явно намекает на то, что не у всех пользователей компьютера должны быть полные права, опять же из соображений безопасности и стабильности работы ОС. То, что вы пишете (в форуме и в коде), подразумевает "XP и пользователя с правами админа, с чьей учетной записью работают все члены семьи". Вы отстали на 5 с лишним лет, ибо Vista вышла еще в 2006 году. Вы пишете код для себя, отторгая изменения в технологиях и обосновывая это неприемлемостью для себя. А нужно писать для людей... |
Вложений: 1
а я согласен с написанным на все 100%.
На данный момент всё так и есть и это правильно. Но знаете почему правильно на данный момент? Потому, что других вариантов нету! Вот 4х местная машина. Она для семьи. Есть двухместные. Есть мини, есть универсал. Чувствуете? Вы не покупаете гараж со всеми машинами по умолчанию. Есть задача - есть предложение. Windows предлагает сразу сесть на машину, которая размером с фуру + без надобности устанавливает прицеп, без возможности его отцепить. Причём фура как из анекдота - "Доработать напильником". И да, при каждом переключении скорости ты должен спросить разрешение на действие. Залезть под капот? Нееет. Система безопасности внутренних агрегатов и узлов под напряжением. Резиновые перчатки дают видимость доступа, но это "какбэ нитак". Хочется повесить ароматизатор "Йолочка" иль GPS навигатор? Только на станции тех обслуживания. Но это фсё флуд. Пока ОС делают люди без идей и фантазии, мы будет за ними пытаться доделать. Это ж надо - 2012 год, а Проводник Windows до сих пор без вкладок (как у браузеров). Благодарю тех людей, которые создают программы, для возможности минимально приблизить интерфейс к более менее приятному в использовании. |
Цитата:
Цитата:
Кстати, реализовать работу с драйверами устройств мешает модель безопасности системы, которая закрывает пользователю доступ к руту. |
Цитата:
Обратите внимание, что это диалог с дополнительными настройками, а флажки и радиокнопки отражают стандартные параметры установки. |
Цитата:
А вот картинка выше - есть лояльный подход к пользователям. Достаточно одного запуска, чтобы потом не спрашивать "кого и зачем", если настройки имеют место в папке с программой. Про всю безопасность для текстового вьюера я просто молчу. Тут надо быть параноиком. -Вы за меня и пальцы что ли загибать будете? -Ага! А вообще, где на эту программу посмотреть можно? |
Цитата:
И если автор не хочет делать расширенную установку, как показано на рисунке TC выше (что грамотно), то ничто не мешает ему сделать в настройках одну кнопку "Сделать поративную версию", которая скопирует файл с настройками и файлы программы в указанное расположение. И вообще, я не понимаю отторжения, которое вызывает предложение хранить настройки в профиле. Когда программа хранит свои параметры в HKCU, это никого не напрягает. Но как только речь заходит об AppData, сразу начинается аллергия. |
Цитата:
Отсюда и вопрос - зачем всё это записывать в систему, когда можно обойтись однократным запуском, с уже готовыми настройками и возможным редактированием этих самых настроек для конкретного случая. Цитата:
Может где то не так сказал, но думаю смысл понятен. |
Цитата:
Цитата:
|
Цитата:
Цитата:
Цитата:
|
Цитата:
|
Цитата:
Да и файловая система продумана много лучше. В /etc общие настройки (требующие прав суперпользователя), в домашней директории - пользовательские. И немало программ поддерживает наследование настроек. То есть, если пользователь не создал конфигов, используются общесистемные. (Или как вариант, в домашней директории конфиги есть, и в них явно указано наследовать настройки). На мой взгляд, это наилучшая схема. Адаптировав под винду, получаем - в Program files стандартный конфиг, в %appdata% - пользовательский. Если пользователя устраивает стандартное поведение, ему и трогать ничего не надо. Если нет - он может отредактировать пользовательский конфиг, подправив или создав определенные параметры. (Заодно, если он испортит пользовательский конфиг - он может его восстановить, просто скопировав из Program files). |
Цитата:
про AppData молчу уже... Цитата:
дистрибутив уже на закачке, видео обзоры я уже глянул, как с флешки ставить уже нашёл ответы.... и судя по последним поправка к закону надо скорее переходить, пока ещё безболезненно. так что.. |
Цитата:
* возможность гибкой автоматизированной установки, обновления версий и отката приложения; сюда же я отношу и частичное обновление посредством патчей; * возможность разграничения управляемости приложением: какие-то настройки приложения должны быть настроены централизованно, единообразно и быть недоступны для изменения конечным пользователям, какие-то — тоже централизованно, но доступными для изменения, третьи — полностью отданы на откуп конечным пользователям. P.S. Я вижу спор, но не пойму, о чём он. Приложение, нормально работающее в корпоративной многопользовательской среде, превосходно будет работать и с такой постановкой вопроса: Цитата:
|
Цитата:
Цитата:
Цитата:
Всё остальное не буду цитировать. |
Цитата:
|
Цитата:
Цитата:
Извини, но я скажу Чтобы открыть какой то текстовый документ, мне надо зашифроваться и показать жопе паспорт. Ну не доводите до абсурда эту элементарщину. |
Цитата:
Цитата:
Цитата:
Закрыто. |
Время: 10:39. |
Время: 10:39.
© OSzone.net 2001-