简体   繁体   中英

How to install a Chocolatey package completely offline?

I need to install software on Windows clients that are completely offline. That means they have no Internet access.

An example. Let's say I want to install Paint.Net. I go to a reference machine (with INet) and install Paint.Net with Chocolatey.

choco install paint.net -y

After the install is finished I have the software installed and two artifacts:

The package file "paint.net.nupkg" in %ChocolateyInstall%/lib/paint.net

and

the the installer file "paint.net.4.0.6.install.zip" in %Temp%\\chocolatey.

I now put these two files on a USB stick. Then I go to the offline machine, plug in the USB stick and want to install the package.

Is it possible to install the software without modifying the package? I am aware that inside the nupkg file there is a tools/chocolateyInstall.ps1 file with a $url variable defined. But I want to install the package without changing the package content or modifying the URL by hand.

I played around with the parameters --cache and --source but with little to no luck.

I have seen that this kind of question is asked before. But never (to my knowledge) with the intend to run the installer file from the stick too (and not only the package file). So I hope this is not a duplicate.

Caching Downloads - Not Deterministic

While there are ways to set the original nupkg (with the version on it, not the one in the packages directory - use download from left side of package's page on the Chocolatey community package repository ) and the cache onto a USB stick somewhere, it's not always deterministic that it will work. You can also override the cache location, so that the folder is somewhere not in TEMP. See choco config , choco config -h and choco config set cacheLocation c:\\some\\location to do this.

Create Your Own Packages - Better

For packages you need offline, you have the ability to manage your own packages and you can embed software right into the package. This is desired when you want to manage software offline as most things on the community repository are subject to copyright law and distribution rights (why they don't simply have the software they represent embedded).

Creating and working with your own packages is very secure, reliable, and repeatable (and can be completely offline), but it does tend to take up time. If you are doing this for yourself, then it could override any time-savings you get as a consumer using Chocolatey and the community repository.

Internalized Packages - Best

The best thing you can do here is a process called internalizing, where you download and extract the package, download all of the resources and embed them in the package (or put them somewhere local/UNC share), edit the scripts to use those embedded/local resources and recompile the package.

This allows you to take advantage of existing package logic without the issue of the internet.

For more details see Recompiling Packages and Package Internalizer - Automatically Recompile Packages .

NOTE : As a side note, we are thinking of offering the ability to auto recompile with Chocolatey Pro edition and not just the Business edition.

Organization Use of Chocolatey

Most organizations using Chocolatey are doing some combination of creating packages and recompiling packages, because they need absolute trust and control over those packages when being used in production scenarios.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM