【发布时间】:2013-11-03 11:41:48
【问题描述】:
我已经安装了 Chocolatey,但我希望它将程序安装到另一个驱动器而不是 C。C 只是一个小型 SSD,但我有其他驱动器,我通常会在其中安装程序。
有什么想法吗?
【问题讨论】:
-
我在这篇文章中发现了一些好东西:superuser.com/questions/693466/…。 @Thor 的回答很有帮助。
标签: windows chocolatey
我已经安装了 Chocolatey,但我希望它将程序安装到另一个驱动器而不是 C。C 只是一个小型 SSD,但我有其他驱动器,我通常会在其中安装程序。
有什么想法吗?
【问题讨论】:
标签: windows chocolatey
对于每个应用程序,您需要知道其在安装期间使用的命令行开关以更改其安装目录并使用--installArgs 传递它。请参阅 Install Command (choco install) 和 Overriding default install directory or other advanced install concepts。
另一种确保不同驱动器的方法是将您的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 没有问题,所以似乎可以工作。
【讨论】:
set 并查看所有其他内容。
choco.exe,您仍然需要编写整个路径,因为操作系统不关心 Choco 的特殊 env 变量。但是,操作系统会查看 PATH。将 Choco 的路径添加到 PATH 允许您只编写 choco。这几乎就是全部了。
您可以将 Chocolatey 目录移动到另一个位置,然后从默认位置创建一个硬符号链接 - 请参阅 The Complete Guide to Creating Symbolic Links (AKA Symlinks) on Windows。
即mklink /J C:/ProgramData/chocolatey D:/my/new/location
但请务必在执行任何操作之前创建常规备份、还原点等。
【讨论】:
mklink /J "C:/ProgramData/chocolatey" D:/my/new/location(注意添加的引号)。我的第二个目录无论如何都需要它们,所以我不知道它是否总是希望它们在那里。希望它可以帮助某人。
对于免费版本,您必须将目录作为附加i输入a参数:
choco install theapp -y --ia "folder switch"
tools\chocolateyInstall.ps1。如果没有此类文件,请返回搜索并使用“.installer”版本。fileType = exe。我测试的大多数应用程序都有这个扩展。如果是这种情况,请搜索 silentArgs。如果有:/S:使用--ia "/D=C:\new\path。注意:单反斜杠,双反斜杠对我不起作用。在 = 符号之前也有 no 反斜杠,正如其他 cmets 中所建议的那样。/VERYSILENT:使用--ia /DIR=C:\new\path。 verysilent 开关属于 InnoSetup 安装程序。something else:在google上搜索“应用静默安装”,确定路径开关并相应输入:--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
(由于我的分数,我无法直接发表评论,抱歉)
【讨论】:
对于 MSI 包(在 Windows 中最常见),请使用:
choco install package-name --% -ia INSTALLDIR="c:\intall\path"
要查看包是否是 MSI 包,请在 Chocolatey 包页面的 Files 下查找 chocolateyInstall.ps1,然后查找:
fileType = 'msi'
已使用Strawberry Perl 进行了测试。
当然,您始终可以使用付费巧克力并受益于无处不在的安装开关。
【讨论】:
--% 开关的作用?我似乎无法找到这方面的文档。
-ia 之前尝试 --% 以按原样传递 args,这意味着它不应该需要任何特殊的解决方法。”
C: 驱动器的默认目录中。巧克力0.10.15
--ia 选项用两个破折号记录
看起来 Chocolatey 现在已经创建了一个无处不在的开关:
Ubiquitous Install Directory Option (Licensed Editions Only)
我没有机会亲自使用它,但看起来这样可以解决问题。如果每个应用程序有一点手册。
【讨论】:
添加到@antonio's answer 我想将我的发现放在设置安装目录的其他案例上。
对于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 docs,开关应该是/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。
或另一个环境变量:
ChocolateyInstall:D:\ProgramData\chocolatey
来源:
【讨论】:
accepted answer 已经暗示了这个选项,所以我只是为了完整起见而发帖:
尽管近年来 SSD 变得更大更便宜,但仍有一些小众用例,您希望将 Windows 安装在单独的较小分区上,并将软件安装在不同的较大分区上。
win + R 并输入regedit
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion
ProgramFilesDir 和ProgramFilesDir (x64) 从C:\ProgramFiles 更改为[your drive]:\Program Files
引用我的消息来源:this answer but longer。
一般来说,Chocolatey 会尊重这一点 - 但需要提及该方法的一些注意事项:
ProgramFilesDir 注册表项。 例如,Audacity 仍然安装到 C:(尽管 - 在我的情况下,至少 - ProgramFilesDir 是 F:\Program Files,但是Chocolatey 在创建快捷方式和开始菜单条目时假设它已安装到 F:)。ProgramFilesDir 注册表项在安装任何带有巧克力的东西,否则某些脚本、包或程序可能会损坏(例如,我必须重新安装chocolateygui 包) 旁注:此答案的运行假设“我如何设置巧克力以将应用程序安装到另一个驱动器”意味着“我如何设置巧克力以将应用程序安装到我安装了大多数其他软件的同一驱动器。 "
【讨论】: