/usr/local или /opt в Windows

В системах Linux у вас есть деревья каталогов, такие как /usr/local или /opt, где вы можете поместить "установленные пользователем" приложения, которые не имеют пакета в вашем дистрибутиве и, таким образом, не вписываются в FHS вашего дистрибутива.

В Windows, куда вы помещаете приложения, которые не предоставляют инсталлятор, и, таким образом, не делятся красиво на C:\Program Files (x86) а также C:\ProgramData? Существует ли устоявшаяся конвенция?


Справочная информация: Многие небольшие инструменты (например, инструменты sysinternals) или приложения, портированные на Unix (например, emacs), не предоставляют установщика Windows, а представляют собой zip-файл с инструкцией " просто распаковать его в любом месте и запустить exe-файл ". Теперь я могу создать произвольный каталог верхнего уровня, например C:\Tools Но, будучи педантичным, я бы хотел, чтобы у него было "правильное" имя. Есть ли какой-то консенсус или каждый придумывает свое соглашение для такого типа приложений?

3 ответа

Поскольку у меня часто одни и те же небольшие инструменты дома и на работе, и потому что обычно компании не позволяют пользователям иметь права администратора, установка, например, в C:\tools или даже "C:\Program Files\Tools" это не вариант. Для того, чтобы мои сценарии установки оставались неизменными, я использую корневой узел, который указывает на мой каталог пользователя. Этот переход требует прав администратора, но это один выстрел:

C:\>mkdir %USERPROFILE%\localapp
C:\>mklink /J localapp %USERPROFILE%\localapp

Тогда вы можете предоставить C:\localapp установщикам MSI переносимых инструментов или разархивировать инструменты там, даже без привилегий, и использовать это в PATH. У меня например одинаково дома и на работе

C:\localapp\Mozilla
C:\localapp\Sysinternals
C:\localapp\Joeware
...

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

Вы могли бы также установить в C:\Users\yourself\localapp напрямую, но в моем случае мое имя пользователя не везде одинаково, и %USERPROFILE% не всегда может быть использован без расширения (например, в реестре), так что это боль.

Нет быстрого правила в отношении этого.

Предложение: идти с c:\tools или c:\opt если вы более знакомы с Linux.

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

Как разработчик я использую эту структуру:

C:\
+-- code  // for repositories   
+-- data  // db files  
+-- tools // software tools

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

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

Профиль всех пользователей (C:\Users\All Users) — это просто символическая ссылка наC:\ProgramDataи он не содержит папки, но кажется, что этоAppDataпапка для всех пользователей.

Разработчики Chocolatey решили установить Chocolatey наC:\ProgramData\chocolatey, поэтому я думаю, можно с уверенностью заключить, что эквивалент/usr/local(а также/varили/etc) являетсяC:\ProgramData\который хранится и расширяется из и . В предыдущих версиях%ALLUSERSPROFILE%был спрятан в папке Windows.

Итак, вы должны предпочесть использовать%PROGRAMDATA%для общесистемных двоичных файлов и конфигураций, которые являются общими для всех пользователей. Это ваш каталог GlobalAppData.

Для пользовательских двоичных файлов или конфигураций существует%LOCALAPPDATA%.

Другие вопросы по тегам