58

我已经安装了 Chocolatey,但我希望它将程序安装到另一个驱动器而不是 C。C 只是一个小型 SSD,但我有其他驱动器,我通常会在其中安装程序。

有任何想法吗?

4

9 回答 9

28

巧克力味 FOSS

对于每个应用程序,您需要知道其在安装期间使用的命令行开关,以更改其安装目录并使用--installArgs. 请参阅安装命令 (choco install)覆盖默认安装目录或其他高级安装概念

确保不同驱动器的另一种方法是将您重新定位Program Files到不同的驱动器。你可能想查一下;这是可能的。

Chocolatey 许可版本

我们添加了无处不在的安装开关!如果您需要覆盖安装目录并且您不想做所有工作来确定该开关是什么,您可以选择使用一个带有 Chocolatey - Ubiquitous Install Directory Option (Licensed Editions Only)的开关。

注意:我们需要以某种方式确保 Chocolatey 社区的长寿,那就是拥有 FOSSium(免费增值)模式。专业版每月 8 美元(每年 96 美元),比每月外出就餐花费更少,为您提供一些很棒的功能,并确保社区基础设施继续提供优质服务和改进。当您使用免费服务(社区存储库,又名https://chocolatey.org/packages)时,提供该服务不是免费的。因此,我们选择某些高级功能进入这些版本,以提供足够的价值以物有所值。

于 2013-11-04T21:06:44.817 回答
14

我发现了另一个简单的技巧 - 像往常一样安装 choco,安装后立即将c:\programdata\chocolatey目录移动到您喜欢的任何位置,然后更新ChocolateyInstall环境变量并更新PATH环境变量,以便在移动后找到 choco 的 \bin 子文件夹。

当然,我不知道它是否适用于任何其他软件包,但我刚刚安装了 7zip 和 docker-machine 没有任何问题,所以似乎可以工作。

于 2017-07-10T18:24:52.210 回答
12

您可以将 Chocolatey 目录移动到另一个位置,然后从默认位置创建硬符号链接 - 请参阅Windows 上创建符号链接 (AKA Symlinks) 的完整指南

IEmklink /J C:/ProgramData/chocolatey D:/my/new/location

但请务必在执行任何操作之前创建通常的备份、还原点等。

于 2017-03-13T07:36:36.160 回答
9

对于 MSI 包(在 Windows 中最常见),请使用:

choco install package-name  --% -ia INSTALLDIR="c:\intall\path"

要查看包是否是 MSI 包,请在 Chocolatey 包页面上的Files下查找chocolateyInstall.ps1,然后查找:

fileType = 'msi'

它是用Strawberry Perl测试的。

当然,您始终可以使用付费巧克力并从无处不在的安装开关中受益。

于 2017-12-10T19:19:42.977 回答
9

总结和更正的解决方案(包括便利脚本)

对于免费版本,您必须将目录作为附加输入参数传递:

choco install theapp -y --ia "folder switch"


挑战在于开关因安装程序而异。

继续确定安装程序

  1. 转到巧克力包存储库并搜索您的应用程序
  2. 向下滚动到“列出文件”并打开tools\chocolateyInstall.ps1. 如果没有这样的文件,请返回搜索并使用“.installer”版本。
  3. 搜索fileType = exe。我测试的大多数应用程序都有这个扩展。如果是这种情况,请搜索silentArgs. 如果有一个:
  • /S: 使用--ia "/D=C:\new\path。注意:单反斜杠,双反斜杠对我不起作用。正如其他评论中所建议的那样,标志前也没有反斜杠。=
  • /VERYSILENT: 使用--ia /DIR=C:\new\path。verysilent 开关属于 InnoSetup 安装程序。
  • something else:在谷歌上搜索“应用静默安装”,确定路径开关并相应输入:--ia "..."
  1. fileType = msi:使用--ia INSTALLDIR="C:\new\path"(我没有测试这个)

后备解决方案

执行非静默安装并在 ui 中指定路径:choco install theapp --notsilent

便利脚本

我创建了一个 Powershell 脚本,它允许安装带有自定义参数的常见应用程序(vlc、VS Code、python、git、Chrome ......),包括。文件夹:

https://github.com/vii33/ChocoVanillaPackage


对其他评论的评论

(因为我的分数,我不能直接评论,对不起)

  • @geisterfurz007感谢您的手册。
  • @quetzalcoatl这对我不起作用,因为应用程序未安装在巧克力文件夹中。您的解决方案移动了巧克力二进制文件,包安装仍然在默认文件夹中完成。
于 2020-05-09T17:47:20.713 回答
4

看起来 Chocolatey 现在已经创建了一个无处不在的开关:

无处不在的安装目录选项(仅限许可版本)

我没有机会亲自使用它,但看起来这可以解决问题。如果每个应用程序有一点手册。

于 2016-06-01T15:48:26.400 回答
3

添加到@antonio 的答案中,我想将我的发现放在其他情况下以设置安装目录。

因为fileType = 'exe'似乎有两种类型的安装程序,您可以用给定的silentArgs(也在chocolateyInstall.ps1)中区分它们。

到目前为止,我发现/S以silentArgs 和一些更长的东西开头/VERYSILENT /NORESTART(这似乎是一个InnoSetup 安装程序)。

  • /S:经过测试,我发现这是可行的(以 7zip 为例):(
    choco install 7zip.install -y --ia "/D\=D:\Destination\"注意:这也会触发调试输出。如果您有没有解决方案,请告诉我!)
  • /VERYSILENT /NORESTART ...:根据InnoSetup Installer CLI 文档,开关应该是这样/DIR=<path>,它似乎像这样工作:choco install pdftk --ia="/DIR=D:\\Tool\\PDFTk"

许多安装程序也不使用上述任何一种。例如,VirtualBox 需要某些安装参数,jdk8 包有参数来设置目录等。如果你不能匹配上面的silentArgsfileType你将不得不做一些研究。
对于 VirtualBox,我运行安装程序/?并弹出一个解释可以添加的参数的弹出窗口。
对于 Mozilla Firefox,我发现了一个社区帖子,其中解释了安装程序允许使用哪些标志和开关。不幸的是,您每次都必须重新提供 ini 文件以进行更新,这有点乏味。

现在,如果您主要使用 Chocolatey 来轻松地自动更新您的应用程序并安装它们,而无需手动查找下载链接并将下载文件夹中的 .msi、.exe 和 .zip 文件弄得乱七八糟,您只需添加 Chocolatey 标志--notsilent(或--not-silent)即可安装程序正常运行,所有选项也可以正常提供给 UI。在大多数情况下,它们也用于更新。

于 2019-01-10T22:54:59.203 回答
3

使用ChocolateyToolsLocation环境变量。该程序本身保持在它应该在的位置,但是所有带有 choco 的安装都安装在D:\tools.

或另一个 env-var: ChocolateyInstallD:\ProgramData\chocolatey

环境变量

资源:

于 2021-07-09T09:24:38.840 回答
2

接受的答案已经暗示了这个选项,所以我只是为了完整起见而发布:

使用 regedit 更改默认 Program Files 目录

尽管近年来 SSD 变得更大更便宜,但仍有一些小众用例,您希望将 Windows 安装在单独的较小分区上,并将软件安装在不同的较大分区上。

  1. 按下win + R并输入regedit
  2. 找到这个键:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion
  3. 改变ProgramFilesDirProgramFilesDir (x64)C:\ProgramFiles[your drive]:\Program Files

引用我的消息来源:这个答案但更长

重要笔记

一般来说,Chocolatey 会尊重这一点——但该方法有一些需要注意的地方:

  • 一些程序/安装程序不尊重ProgramFilesDir注册表项。例如,Audacity 仍然安装到C:(尽管 - 在我的情况下,至少 - ProgramFilesDiris ,但是 Chocolatey在制作快捷方式和开始菜单条目时F:\Program Files假设它已安装到)。F:
  • 打破了 NVIDIA GeForce Experience可能还有其他副作用,但我还没有发现。
  • 在安装任何带有巧克力的东西之前,您需要更改ProgramFilesDir注册表项,否则某些脚本、包或程序可能会损坏(例如,我必须重新安装包)chocolateygui

旁注:这个答案是在“我如何设置巧克力以将应用程序安装到另一个驱动器上”的假设下运行的,这意味着“我如何设置巧克力以将应用程序安装到我安装了大多数其他软件的同一个驱动器上。”

于 2020-07-11T11:32:17.940 回答