我需要在完全脱机的Windows客户端上安装软件。这意味着他们无法访问互联网。
一个例子。假设我想安装Paint.Net。我转到参考机器(使用INet)并使用Chocolatey安装Paint.Net。
choco install paint.net -y
安装完成后,我安装了软件和两个工件:
%ChocolateyInstall%/ lib / paint.net
中的包文件“paint.net.nupkg”和
%Temp%\ chocolatey中的安装程序文件“paint.net.4.0.6.install.zip”。
我现在将这两个文件放在USB记忆棒上。然后我去离线机器,插上USB棒,想要安装包。
是否可以在不修改软件包的情况下安装软件?我知道在nupkg文件中有一个工具/ chocolateyInstall.ps1文件,其中定义了$ url变量。但我想在不更改包内容或手动修改URL的情况下安装包。
我玩了参数--cache和--source,但几乎没有运气。
我已经看到过这样的问题。但从来没有(据我所知)打算从棒上运行安装程序文件(而不仅仅是包文件)。所以我希望这不是重复。
答案 0 :(得分:4)
虽然有办法设置原始nupkg(包含其上的版本,而不是packages目录中的版本 - 使用从Chocolatey community package repository的包页左侧下载)和缓存到USB记忆棒上在某个地方,它的工作并不总是确定的。您还可以覆盖缓存位置,以便该文件夹位于TEMP中的某个位置。请参阅choco config
,choco config -h
和choco config set cacheLocation c:\some\location
来执行此操作。
对于您需要离线的软件包,您可以管理自己的软件包,并且可以将软件直接嵌入到软件包中。当您想要离线管理软件时,这是理想的,因为社区存储库中的大多数东西都受版权法和发行权的约束(为什么他们不仅仅拥有嵌入的软件)。
创建和使用自己的软件包非常安全,可靠且可重复(并且可以完全脱机),但确实需要花费时间。如果您自己这样做,那么它可以覆盖使用Chocolatey和社区存储库作为消费者所获得的任何时间节省。
你可以在这里做的最好的事情是一个称为内化的过程,你下载并解压缩包,下载所有资源并将它们嵌入到包中(或将它们放在本地/ UNC共享的地方),编辑脚本到使用这些嵌入/本地资源并重新编译包。
这使您可以利用现有的包逻辑而不会出现互联网问题。
有关详细信息,请参阅Recompiling Packages和Package Internalizer - Automatically Recompile Packages。
注意:作为旁注,我们考虑提供使用Chocolatey Pro版本而不仅仅是商业版自动重新编译的功能。
大多数使用Chocolatey的组织正在进行创建包和重新编译包的组合,因为在生产场景中使用它们时需要绝对信任和控制这些包。