我需要在完全离线的 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”。
我现在将这两个文件放在 U 盘上。然后我转到离线机器,插入 U 盘并想要安装包。
是否可以在不修改软件包的情况下安装软件?我知道在 nupkg 文件中有一个定义了 $url 变量的 tools/chocolateyInstall.ps1 文件。但是我想在不更改包内容或手动修改 URL 的情况下安装包。
我试过参数 --cache 和 --source 但几乎没有运气。
之前看到有人问过这种问题。但是(据我所知)从来没有打算从棒上运行安装程序文件(而且不仅仅是包文件)。所以我希望这不是重复的。
最佳答案
缓存下载 - 不确定
虽然有一些方法可以设置原始的 nupkg(上面有版本,而不是包目录中的版本 - 使用 Chocolatey community package repository 上包页面左侧的下载)和缓存到 U 盘某处,它并不总是确定它会起作用。您还可以覆盖缓存位置,以便该文件夹位于不在 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 的组织使用
大多数使用 Chocolatey 的组织都在结合创建包和重新编译包,因为在生产场景中使用这些包时,他们需要绝对信任和控制这些包。
关于windows - 如何完全离线安装 Chocolatey 包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38642563/