我已经安装了 Chocolatey,但我希望它将程序安装到另一个驱动器而不是 C。C 只是一个小型 SSD,但我有其他驱动器,我通常会在其中安装程序。
有任何想法吗?
我已经安装了 Chocolatey,但我希望它将程序安装到另一个驱动器而不是 C。C 只是一个小型 SSD,但我有其他驱动器,我通常会在其中安装程序。
有任何想法吗?
对于每个应用程序,您需要知道其在安装期间使用的命令行开关,以更改其安装目录并使用--installArgs
. 请参阅安装命令 (choco install)和覆盖默认安装目录或其他高级安装概念。
确保不同驱动器的另一种方法是将您重新定位Program Files
到不同的驱动器。你可能想查一下;这是可能的。
我们添加了无处不在的安装开关!如果您需要覆盖安装目录并且您不想做所有工作来确定该开关是什么,您可以选择使用一个带有 Chocolatey - Ubiquitous Install Directory Option (Licensed Editions Only)的开关。
注意:我们需要以某种方式确保 Chocolatey 社区的长寿,那就是拥有 FOSSium(免费增值)模式。专业版每月 8 美元(每年 96 美元),比每月外出就餐花费更少,为您提供一些很棒的功能,并确保社区基础设施继续提供优质服务和改进。当您使用免费服务(社区存储库,又名https://chocolatey.org/packages)时,提供该服务不是免费的。因此,我们选择某些高级功能进入这些版本,以提供足够的价值以物有所值。
我发现了另一个简单的技巧 - 像往常一样安装 choco,安装后立即将c:\programdata\chocolatey
目录移动到您喜欢的任何位置,然后更新ChocolateyInstall
环境变量并更新PATH
环境变量,以便在移动后找到 choco 的 \bin 子文件夹。
当然,我不知道它是否适用于任何其他软件包,但我刚刚安装了 7zip 和 docker-machine 没有任何问题,所以似乎可以工作。
您可以将 Chocolatey 目录移动到另一个位置,然后从默认位置创建硬符号链接 - 请参阅Windows 上创建符号链接 (AKA Symlinks) 的完整指南。
IEmklink /J C:/ProgramData/chocolatey D:/my/new/location
但请务必在执行任何操作之前创建通常的备份、还原点等。
对于 MSI 包(在 Windows 中最常见),请使用:
choco install package-name --% -ia INSTALLDIR="c:\intall\path"
要查看包是否是 MSI 包,请在 Chocolatey 包页面上的Files下查找chocolateyInstall.ps1
,然后查找:
fileType = 'msi'
它是用Strawberry Perl测试的。
当然,您始终可以使用付费巧克力并从无处不在的安装开关中受益。
对于免费版本,您必须将目录作为附加输入参数传递:
choco install theapp -y --ia "folder switch"
tools\chocolateyInstall.ps1
. 如果没有这样的文件,请返回搜索并使用“.installer”版本。fileType = exe
。我测试的大多数应用程序都有这个扩展。如果是这种情况,请搜索silentArgs
. 如果有一个:/S
: 使用--ia "/D=C:\new\path
。注意:单反斜杠,双反斜杠对我不起作用。正如其他评论中所建议的那样,标志前也没有反斜杠。=
/VERYSILENT
: 使用--ia /DIR=C:\new\path
。verysilent 开关属于 InnoSetup 安装程序。something else
:在谷歌上搜索“应用静默安装”,确定路径开关并相应输入:--ia "..."
fileType = msi
:使用--ia INSTALLDIR="C:\new\path"
(我没有测试这个)执行非静默安装并在 ui 中指定路径:choco install theapp --notsilent
我创建了一个 Powershell 脚本,它允许安装带有自定义参数的常见应用程序(vlc、VS Code、python、git、Chrome ......),包括。文件夹:
https://github.com/vii33/ChocoVanillaPackage
(因为我的分数,我不能直接评论,对不起)
添加到@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 包有参数来设置目录等。如果你不能匹配上面的silentArgs
和fileType
你将不得不做一些研究。
对于 VirtualBox,我运行安装程序/?
并弹出一个解释可以添加的参数的弹出窗口。
对于 Mozilla Firefox,我发现了一个社区帖子,其中解释了安装程序允许使用哪些标志和开关。不幸的是,您每次都必须重新提供 ini 文件以进行更新,这有点乏味。
现在,如果您主要使用 Chocolatey 来轻松地自动更新您的应用程序并安装它们,而无需手动查找下载链接并将下载文件夹中的 .msi、.exe 和 .zip 文件弄得乱七八糟,您只需添加 Chocolatey 标志--notsilent
(或--not-silent
)即可安装程序正常运行,所有选项也可以正常提供给 UI。在大多数情况下,它们也用于更新。
使用ChocolateyToolsLocation
环境变量。该程序本身保持在它应该在的位置,但是所有带有 choco 的安装都安装在D:\tools
.
或另一个 env-var:
ChocolateyInstall
:D:\ProgramData\chocolatey
资源:
接受的答案已经暗示了这个选项,所以我只是为了完整起见而发布:
尽管近年来 SSD 变得更大更便宜,但仍有一些小众用例,您希望将 Windows 安装在单独的较小分区上,并将软件安装在不同的较大分区上。
win + R
并输入regedit
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion
ProgramFilesDir
和ProgramFilesDir (x64)
从C:\ProgramFiles
到[your drive]:\Program Files
引用我的消息来源:这个答案但更长。
一般来说,Chocolatey 会尊重这一点——但该方法有一些需要注意的地方:
ProgramFilesDir
注册表项。例如,Audacity 仍然安装到C:
(尽管 - 在我的情况下,至少 - ProgramFilesDir
is ,但是 Chocolatey在制作快捷方式和开始菜单条目时F:\Program Files
假设它已安装到)。F:
ProgramFilesDir
注册表项,否则某些脚本、包或程序可能会损坏(例如,我必须重新安装包)chocolateygui
旁注:这个答案是在“我如何设置巧克力以将应用程序安装到另一个驱动器上”的假设下运行的,这意味着“我如何设置巧克力以将应用程序安装到我安装了大多数其他软件的同一个驱动器上。”