Page 1 of 2

Корпоративная (массовая) установка

PostPosted: Fri May 07, 2010 11:36 am
by Times
Есть пара предложений связанных с массовой установкой GoldenDict в MS Windows.

Установка ПО обычно выполняется до того как пользователь войдет в систему (или в фоновом режиме) и не от его имени.

Поэтому было бы удобно если бы:
    1. Индекс располагался не в папке пользователя "C:\Documents and Settings\user_name\Application Data\GoldenDict\index" (для XP), а в какой либо общей папке. Например в "C:\Documents and Settings\All Users\Application Data\GoldenDict\index" или в Program Files\GoldenDict. Т.к. словари общие и индекс у них должен быть один. А сейчас процесс индексации запускается для каждого нового пользователя.

    2. Ярлык для запуска приложения, так же сделать общим, положить в - "C:\Documents and Settings\All Users\Главное меню". Сейчас ярлык создается только для пользователя, который устанавливал ПО.

    3. Проверять наличие файла config в папке user_name\Application Data\GoldenDict\, а если его там нет, то использовать общий из All Users\Application Data\GoldenDict\. Тогда можно будет сделать стандартные настройки, при этом позволив пользователю их менять "под себя". Соответственно когда пользователь захочет изменить настройки, общий файл config нужно скопировать в папку пользователя и уже там вносить изменения.

Все выше перечисленное относится к версии 0.9.0.

В дополнение к существующим темам:
Дистрибутив в виде MSI-пакета
Как сделать custom-инсталлятор для windows?

Re: Корпоративная (массовая) установка

PostPosted: Fri May 07, 2010 12:50 pm
by ikm
Вопросы:

1. Есть ли права доступа в "C:\Documents and Settings\All Users\Application Data" у обычного пользователя в Vista/7?
2. Что делать с удалением старых индексов? Например, был у нас словарь X, а теперь нет. Удалять ли его индекс, или же этот словарь остался в пользовании другим пользователем, и индекс нужно оставить?

Re: Корпоративная (массовая) установка

PostPosted: Fri May 07, 2010 2:06 pm
by Times
1. Есть ли права доступа в "C:\Documents and Settings\All Users\Application Data" у обычного пользователя в Vista/7?

На All Users у простого пользователя есть права только на чтение и выполнение.
Но установка будет выполнятся от имени привилегированного пользователя (администратора), который сможет писать в эту папку.

Что делать с удалением старых индексов? Например, был у нас словарь X, а теперь нет. Удалять ли его индекс, или же этот словарь остался в пользовании другим пользователем, и индекс нужно оставить?

Хороший вопрос.
Словари, которые были добавлены администратором и им проиндексированы, обычный пользователь не должен удалять. И соответственно их индексы должны оставаться до тех пор, пока администратор не решит удалить/переустановить всё приложение.

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


Но если простым пользователям всё-таки нужно добавлять/удалять персональные словари, то можно сделать так.

Предусмотреть вариант административного запуска GoldenDict, напр. из командной строки с ключом.
В таком режиме все исправления файла config и индексы будут размещаться в папке All Users.
Это позволит отличать административную настройку, от обычной пользовательской работы.

Если пользователь подключает свою папку со словарями, тогда их индексы можно класть в папку этого пользователя (как сейчас).
Так же у него появится свой файл config, в котором будут прописаны эти новые словари.

Но в то же время, другой пользователь на том же ПК, который ни чего не подключал, и у которого нет своего config.
Не использует новые словари и ему не нужен их индекс.

А администратор, запустив приложение из командной строки с ключом, сможет добавить словари и проиндексировать их.
Так же у пользователей будет возможность удалить свой config и использовать стандартные настройки, которые прописаны в аналогичном config, который лежит в All Users.

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

Re: Корпоративная (массовая) установка

PostPosted: Thu Jul 08, 2010 10:21 am
by X-Ander
Присоединяюсь к просьбе реализовать эту возможность. Более того, могу попытаться помочь написанием нужного кода. Давно, правда не писал на С++, а под Qt и Windows вообще никогда - всё больше на Перле для юниксоподобных осей и веба. Так что нуждаюсь в указании, какие конкретно места в исходниках отвечают за пути к индексам и конфигам.

От себя добавлю:

1. Попутно неплохо бы решить задачу облегчения перемещаемых профилей. Если таковые используются, то хранение в них многомегабайтных индексов приводит к "распуханию" профиля, лишней нагрузке на сеть и тормозам при входе/выходе пользователя. Решение - создавать пользовательские индексы внутри "Local Settings". Для тех пользователей, которые всегда работают за одной и той же машиной, видимых изменений не будет, зато перемещаемые доменные сразу почувствуют разницу.

2. Само-собой всё в этой теме сказанное нужно предусмотреть и для [нас] линуксоидов, бо Линукс в корпоративной среде тоже бывает, да и нынешние тенденции в школах весьма красноречивы, и хороший словарик там будет как раз кстати.

Re: Корпоративная (массовая) установка

PostPosted: Thu Jul 08, 2010 10:30 am
by ikm
Просто используйте портабельный режим.

Re: Корпоративная (массовая) установка

PostPosted: Thu Jul 08, 2010 10:59 am
by X-Ander
Немного не то. Нужно многопользовательское решение, а это - однопользовательское. А если вписать все настройки и индексы внутри Program Files, то программа будет ненастраиваемая - доступ на запись туда давать - плохой тон.

Re: Корпоративная (массовая) установка

PostPosted: Thu Jul 08, 2010 11:04 am
by ikm
Если говорить в контексте юниксов, то правильно ли я понимаю, что задача - размещать словари и индексы к ним где-то в /usr, доступном только на чтение? Я недостаточно хорошо знаком с многопользовательским windows-окружением.

Re: Корпоративная (массовая) установка

PostPosted: Thu Jul 08, 2010 1:24 pm
by X-Ander
В контексте юниксов глобальные словари и индексы скорее нужно в /var, глобальные настройки - в /etc, пользовательские настройки - в $HOME/.goldendict (или лучше в $HOME/.config/goldendict, как всё чаще сейчас делают), а пользовательские индексы - в $HOME/.local/goldendict (вроде так, но могу ошибаться). Словари могут быть где угодно. В виндовсах, понятное дело, ни /var, ни /etc нет, а есть только "Program Files" и "Documents and Settings". Первый пойдёт за /usr, /var и /etc, а второй за /home.

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

Re: Корпоративная (массовая) установка

PostPosted: Thu Jul 08, 2010 2:58 pm
by X-Ander
Про юниксы. Вот нужный стандарт: http://standards.freedesktop.org/basedi ... atest.html Вкратце:
1. Пользовательские настройки в $XDG_CONFIG_HOME/goldendict или $HOME/.config/goldendict, если нет $XDG_CONFIG_HOME.
2. Пользовательские индексы в $XDG_CACHE_HOME/goldendict или $HOME/.cache/goldendict, если нет $XDG_CACHE_HOME.
3. Глобальные настройки в подкаталоге goldendict одного из каталогов, перечисленных в $XDG_CONFIG_DIRS, или в /etc/xdg/goldendict, если нет $XDG_CONFIG_DIRS. Сложновато, имхо можно по-старинке в /etc/goldendict.
4. Глобальные индексы в /var/cache/goldendict, опять же имхо.

То же для виндовзов (моё вИдение):
1. Пользовательские настройки в %APPDATA%\GoldenDict.
2. Пользовательские индексы в %LOCALAPPDATA%\GoldenDict или %APPDATA%\Local Settings\Application Data\GoldenDict, если нет %LOCALAPPDATA%.
3. Глобальные настройки и индексы в %COMMONPROGRAMFILES%\GoldenDict, чтобы не путались с файлами программы. Стандартных переменных для C:\Documents and Settings\All Users\Application Data, как я понял, нет, а на старых и новых виндах этот каталог может быть в разных местах.

Re: Корпоративная (массовая) установка

PostPosted: Thu Jul 08, 2010 7:17 pm
by ikm
Красиво. Хотя, признаюсь, мне не нравится подход с разделением ~/.config/$NAME и ~/.cache/$NAME -- как-то проще, когда всё в ~/.$NAME.

Основной вопрос был и остается - как строить и обновлять глобальные индексы?