Windows 上的 /usr/local 或 /opt

Windows 上的 /usr/local 或 /opt

在 Linux 系统上,您有像 /usr/local 或 /opt 这样的目录树,您可以在其中放置“自定义安装”的应用程序,这些应用程序在您的发行版中没有软件包,因此不太适合您的发行版的 FHS。

在 Windows 上,如果应用程序没有提供安装程序,并且无法很好地拆分为C:\Program Files (x86)和,那么应该将应用程序放在哪里C:\ProgramData? 是否有一个完善的惯例?


背景:许多小工具(例如 sysinternals 工具)或 Unix 移植的应用程序(例如 emacs)不提供 Windows 安装程序,而是提供带有说明的 zip 文件“只需将其解压到任意位置并启动 exe 文件即可“。 现在我可以创建一个任意的顶级目录,例如C:\Tools,但是,出于迂腐的考虑,我希望它有一个“正确”的名称。是否有一些共识,还是每个人都为这种类型的应用程序发明了自己的惯例?

答案1

由于我经常在家里和工作中使用相同的小工具,而且公司通常不允许用户拥有管理员权限,因此无法在 egC:\tools或 even中安装"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%不能总是以未扩展的形式使用(例如在注册表中),因此很麻烦。

答案2

关于这一点,没有严格的规定。

c:\tools建议:选择或者c:\opt如果你更熟悉 Linux。

您可能必须更改此新文件夹的权限,因为某些应用程序需要提升的权限才能在此处写入自己的数据。

作为开发人员,我正在使用这种结构:

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

这使得我在另一台机器上设置新的开发环境时可以轻松跟踪我正在使用的工具及其配置。

答案3

Windows 有AppData一个任何用户的目录,用户在该目录中拥有完全权限,某些安装程序使用该目录来安装其应用程序而无需特权访问。但是,由于/usr/local是所有普通用户的目录,因此您应该找到与所有用户的用户文件夹等效的目录AppData

所有用户配置文件(C:\Users\All Users)只是一个符号链接C:\ProgramData,它不包含AppData文件夹,但它似乎是AppData所有用户的文件夹。

背后的人巧克力味决定将 Chocolatey 安装到,因此我猜可以安全地得出结论, (以及或)C:\ProgramData\chocolatey的等效项是,它存储在 和 中并从和扩展。在以前的版本中,它隐藏在 Windows 文件夹中。/usr/local/var/etcC:\ProgramData\%ALLUSERSPROFILE%%PROGRAMDATA%%ALLUSERSPROFILE%

因此,您应该优先使用%PROGRAMDATA%系统范围的二进制文件和所有用户共享的配置。这是您的“GlobalAppData”目录。

对于用户特定的二进制文件或配置,有%LOCALAPPDATA%

相关内容