如何完全离线安装Chocolatey软件包



我需要在完全离线的Windows客户端上安装软件。这意味着他们无法上网。

一个例子。假设我想安装Paint.Net。我去一个参考机器(使用INet),并使用Chocolatey安装Paint.Net。

choco install paint.net -y

安装完成后,我安装了软件和两个工件:

%ChocolateInstall%/lib/paint.net 中的包文件"paint.net.nupkg"

%Temp%\chocolatey中的安装程序文件"paint.net4.0.6.install.zip"。

我现在把这两个文件放在U盘上。然后我去离线机器,插入U盘,想安装软件包。

是否可以在不修改软件包的情况下安装软件?我知道在nupkg文件中有一个定义了$url变量的tools/chocolateInstall.ps1文件。但我想在不更改包内容或手动修改URL的情况下安装包。

我玩了一些参数--缓存和--源,但运气很差。

我以前见过有人问这种问题。但(据我所知)从来没有打算从棒上运行安装程序文件(不仅仅是包文件)。所以我希望这不是重复的。

缓存下载-不确定

虽然有一些方法可以将原始的nupkg(上面有版本,而不是packages目录中的版本-使用Chocolatey社区软件包存储库上软件包页面左侧的下载)和缓存设置到某个U盘上,但它是否能工作并不总是确定的。您也可以覆盖缓存位置,使文件夹不在TEMP中。请参阅choco configchoco config -hchoco config set cacheLocation c:somelocation

创建自己的包-更好

对于离线需要的包,您可以管理自己的包,并且可以将软件直接嵌入到包中。当你想离线管理软件时,这是需要的,因为社区存储库中的大多数东西都受版权法和发行权的约束(为什么他们没有简单地嵌入他们所代表的软件)。

创建和使用自己的包是非常安全、可靠和可重复的(并且可以完全离线),但这确实需要时间。如果你这样做是为了自己,那么它可能会覆盖你作为消费者使用Chocolatey和社区存储库所节省的任何时间。

内部包-最佳

在这里,你能做的最好的事情是一个称为内化的过程,在这个过程中,你下载并提取包,下载所有资源并将它们嵌入包中(或将它们放在本地/UNC共享的某个地方),编辑脚本以使用这些嵌入/本地资源,并重新编译包。

这允许您在没有互联网问题的情况下利用现有的包逻辑。

有关更多详细信息,请参阅重新编译包和包内部化器-自动重新编译包。

注意:附带说明一下,我们正在考虑使用Chocolatey Pro版而不仅仅是商务版提供自动重新编译的功能。

巧克力的组织使用

大多数使用Chocolatey的组织都在进行创建包和重新编译包的组合,因为在生产场景中使用这些包时,他们需要对这些包的绝对信任和控制。

最新更新