windows - 如何完全离线安装 Chocolatey 包?

标签 windows powershell chocolatey

我需要在完全离线的 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 configchoco config -hchoco config set cacheLocation c:\some\location 来执行此操作。

创建您自己的包 - 更好

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

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

内部化包 - 最佳

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

这使您可以利用现有的包逻辑,而无需担心互联网问题。

有关详细信息,请参阅 Recompiling PackagesPackage Internalizer - Automatically Recompile Packages .

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

Chocolatey 的组织使用

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

关于windows - 如何完全离线安装 Chocolatey 包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38642563/

相关文章:

java - 我需要如何在powershell中运行maven文件?

powershell - If 语句在它应该的时候从不评估 false

chocolatey - 无法让 Chocolatey 工作 : choco keyword throws an error: cannot create directory

docker - 在 Windows Docker 构建中从 Chocolatey.org 诊断下载超时

c++ - 使用 CREATE_NEW_CONSOLE 创建进程并保持控制台窗口打开

c++ - ListView 列的宽度不受尊重

c++ - DirectShow:网络摄像头预览和图像捕获

asp.net - 无法连接到内置 Web 服务器的 Web Developers

regex - 捕获多行、多组到 Powershell 变量

hyper-v - Windows 和 HyperV 上的 Minikube : Stuck on prompt "minikube login"