Wednesday, May 20, 2015

Windows 10 Includes a Linux-Style Package Manager Named “OneGet”

Forget the Windows Store. Microsoft is working on a Linux-style package management framework for Windows, and it’s included with Windows 10. It’s being tested with Chocolatey’s existing packages, and allows you to easily install desktop applications and other software.
This is huge news. If you’ve ever used Linux, you’ve probably wanted a package management system for the Windows desktop ever since. Now it’s finally arriving!

OneGet, a Package Management Framework for Windows

This package manager is called OneGet, and is shipping as part of PowerShell. In a blog post titled “My little secret : Windows PowerShell OneGet” over at Technet, Microsoft’s Garret Serack explains:
“OneGet is a unified interface to package management systems and aims to make Software Discovery, Installation and Inventory (SDII) work via a common set of cmdlets (and eventually a set of APIs). Regardless of the installation technology underneath, users can use these common cmdlets to install/uninstall packages, add/remove/query package repositories, and query a system for the software installed. Included in this CTP is a prototype implementation of a Chocolatey-compatible package manager that can install existing Chocolatey packages.”
As OneGet is part of the latest version of PowerShell, it’s included by default in the Windwos 10 Technical Preview. It’s also available as part of the Windows Management Framework 5.0 Preview for Windows 8.1.
Just look at the image at the top of this article to see how it will all work. Yes, you can install VLC or another piece of Windows software that easily! After you run the command, OneGet will locate the package in your configured package sources, download it to your computer, and install it — all automatically. And there should be graphical user interfaces for this, too, so it’ll just take a few clicks.

How OneGet Works

Let’s dig in a bit deeper. Here’s how Microsoft describes OneGet:
“OneGet is a new way to discover and install software packages from around the web. With OneGet, you can:
  • Manage a list of software repositories in which packages can be searched, acquired, and installed
  • Search and filter your repositories to find the packages you need
  • Seamlessly install and uninstall packages from one or more repositories with a single PowerShell command”
The Get-PackageSource cmdlet lets you view a list of installed package sources, or repositories. OneGet now includes two Microsoft-provided sources. Chocolatey was previously the default package source during development and can easily be added.
Anyone can create and operate a repository of packages. Microsoft could potentially create their own one-stop-shop for Windows desktop programs. A company could manage its own repository with the programs they use so they can be easily installed and managed. A software developer could set up a repository containing only the software they create so their users can easily install and update it. You can add more repositories with the Add-PackageSource cmdlet or remove them with Remove-PackageSource.
The Find-Package cmdlet lets you search the package sources you’ve configured for available packages. Find software to install without searching the web!
The Install-Package cmdlet then lets you install a package of your choice, just by specifying its name. The package is automatically downloaded and installed from the software repository of your choice without any searching for .exe files, downloading them, and clicking through wizards that try to install junk on your computer. Better yet, you can specify multiple package names here — imagine installing the fifty Windows programs you use with a single command and leaving your computer to get a coffee while doing so.
The Get-Package cmdlet then lets you see what packages you have installed. Packages can later be uninstalled with Uninstall-Package. There’s currently no Update-Package command that will automatically install the latest versions of these software package from the available repositories, something that will be sorely needed — hopefully it’s on its way.

What’s a Package Manager? And What’s Chocolatey?

If you’ve gotten this far, you should understand the basics of what a package manager is. Basically, it’s a software tool that makes installation, updating, and locating of software to install much easier. Package managers are used on Linux, and they let you install packages from trusted software repositories in just a few clicks or keystrokes. The package manager can automatically update your packages whenever updated versions are added to the repositories, so every program doesn’t need its own built-in updater. It’s easy to use, and also very easy to automate.
Chocolatey is a package manager that brings this style of easy software installation to Windows. Currently, it primarily uses text commands so it hasn’t found much of a home beyond geeks — but geeks love it! Chocolatey allows you to install Windows software like Firefox, VLC, and 7-Zip with just a few keystrokes instead of the usual downloading and clicking process, just like you’d install software on Linux. Chocolatey is currently running a Kickstarter, seeking money to “take Chocolatey to the next level.” They’re also working on a graphical user interface for their package manager so average Windows users can more easily use it. With the package manager framework in Windows 10, Chocolatey can easily piggy-back off whatever work Microsoft is doing — work that seems originally inspired by Chocolatey. Rather than being a bolted-on package management system, Chocolatey will work hand-in-hand with the package management framework included with Windows.

It’s impossible to say exactly how far Microsoft will go here. One thing’s for sure: For Windows system administrators and geeks, installing software and automating software deployments is about to get a lot easier. This is currently a geek tool, as it’s only available via PowerShell commands. But, as Microsoft says, this will eventually be exposed as a set of APIs.