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

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Microsoft Windows 7 (http://forum.oszone.net/forumdisplay.php?f=95)
-   -   [решено] Установка программ в C:\ProgramData (http://forum.oszone.net/showthread.php?t=341208)

Bibelwort 07-07-2019 19:04 2878646

Установка программ в C:\ProgramData
 
Привет всем!
По роду работы у меня возник такой вопрос. Как правильно организовать установку и администрирование программ в Windows (Windows 7 и выше) для многопользовательской среды НЕ в стандартной директории Program Files, а, например, в ProgramData или в другой корневой директории, например, C:\opt\?
Вопрос обусловлен тем, что я работаю с научным ПО и программерским ПО для разработки (docker, python, gcc), которое преимущественно ориентировано на Linux. Однако кросс-платформенное ПО (которого все больше) еще не до конца поддерживает раличия в системах и в частности в файловой структуре. Например, оно не поддерживает пробелы в файловых путях, часто не поддерживает Unicode (кирилицу и т.п знаки) и даже порой "не любит" длинные имена директорий (больше 7 знаков) (это не старое ПО, просто оно с длинным бэкграундом из 80-х).
Для примера из нового массового ПО возьмем Anaconda для Python. Только относительно недавно стало возможным устанавливать ее в директорию с пробелами, хотя при этом разработчики не могут гарантировать, что все пакеты будут адекватно работать с такими директориями. Если устанавливать Conda для многопользовательской среды, то согласно документации это лучше делать в ProgramData. Действительно, эта директория защищена от записи для обычных пользователей и при этом она системная, а значит есть шанс, что она адекватно поддерживается UAC-ом и системами бэкапирования.
Собственно в этом и вопрос. Можно ли ставить программы, пришедшие из Linux в ProgramData вместо Program Files? Есть ли подводные камни? Корректно ли работают в этом случае UAC-виртуализация, реестр, бэкап и восстановление, нет ли подводных камней, связанных с безопасностью, и т.п системные вещи?
Ну а так как имя для ProgramData длиннее 7 символов, то можно ли сделать кастномную директорию, типа C:\opt, организованную подобным образом?

П.С. Отмечу, что речь идет именно о ПО, которое скомпилировано именно для Windows, но изначально пришло из Linux. Вопрос не о системах виртуализации типа WSL в Windows 10 и не о docker (который по большому счету работает через VirtualBox и тот же WSL), где Linux-программы исполняются на машине с Windows.
П.П.С. Тему поместил в ветку Windows 7, так как работаю пока что преимущественно с Windows 7, хотя вопрос актуален и для 10-ки

Avatar-Lion 07-07-2019 19:23 2878656

Я бы на вашем месте именно в отдельный каталог ставил всё. Вроде того, как вы предложили (C:\opt), чтобы точно не было проблем с правами, пробелами и прочей ерундой. Формально ProgramData тоже подходит под ваши нужды, но там много кто хранит свои настройки: система, программы, игры, драйвера... Короче, вы сами же запутаетесь в итоге где ваше, а где не ваше. Шлёпните случайно подкаталог не тот какой-нибудь в этой ProgramData и будете потом с глюками на ровном месте разбираться. Вам оно надо? Реально, организуйте отдельную папку и туда скидывайте всё необходимое ПО.

Насчет бэкапа - это уж сами смотрите. Если настроен бэкап только отдельных каталогов типа C:\Windows, то вашу C:\opt придется добавить в список того, что нужно бэкапить. Если же архивируется весь диск С: целиком, то ничего делать не нужно. UAC вас беспокоить не должен, ибо с точки зрения системы C:\opt является обычной папкой и UAC мешать должен не больше, чем при работе с любой другой директорией. Реестр тут вообще никаким боком. Если ваше ПО вносит в реестр записи о путях установки, то ему без разницы какой путь прописывать - ProgramData или opt.

Bibelwort 07-07-2019 19:44 2878657

Avatar-Lion, да, согласен, что можно нарваться на проблемы с именами. Некоторые GUI-программы, написанные с использованием Qt хранят свои настройки в системных и пользовательских папках..
А как тогда правильно настроить права на эту кастомную папку? По умолчанию, если создать в корне директорию, то у нее в настройках прав для группы Authenticated Users ставятся полные права, то есть все пользователи смогут туда писать. Правильно ли я понимаю, что для этой папки лучше настроить права аналогичные Program Files? (Правда там есть непонятные для меня trusted installer, CREATOR OWNER, SYSTEM и ALL APPLICATION PACKAGES).
В данном случае мне наоборот нужно защитить эту папку от влияния пользователей (прямого или косвенного через саму программу), чтобы если приложение захочет сохранить настройки или другие файлы в свою папку, то UAC направит ее в AppData конкретного пользователя (это я все прочитал у Вадима Стеркина здесь). То же относится и к реестру - программа может писать настройки в системную ветку, а может в пользовательскую - в моем случае хотелось бы, чтобы в пользовательскую.

Iska 07-07-2019 22:15 2878676

Bibelwort, можно устанавливать и в C:\PROGRA~1 (обычно так), если не отключено создание коротких имён формата 8.3.

Цитата:

Цитата Bibelwort
- в моем случае хотелось бы, чтобы в пользовательскую. »

Куда оно будет писать — зависит только от самого приложения.


Время: 17:26.

Время: 17:26.
© OSzone.net 2001-