Windows Package Manager Preview

Demitrius Nelon

Demitrius

We are thrilled to announce the Windows Package Manager preview!

If you’re already familiar with what a package manager is, feel free to skip this paragraph. If you’re still reading, you’re going to love this! A package manager is designed to help you save time and frustration. Essentially, it is a set of software tools that help you automate the process of getting software on your machine. You specify which apps you want installed, and it does the work of finding the latest version (or the exact one you specified) and installing it on your machine.

Just about every developer has wanted a native package manager in Windows. That day is finally here. You are going to be able to winget install your way to bliss. One of the best parts is that it is open source. I had to pinch myself when I was able to winget install terminal, and then winget install powershell, and then winget install powertoys. You get the idea, and If you do not see an app you use, just create a new manifest, and submit a pull request.

Execute winget in Windows Terminal

When can I try it?

As of today, the Windows Package Manager preview has been made open source. You can clone, build, run and test the code from the GitHub repository (https://github.com/microsoft/winget-cli). There are other possibly easier ways to get your hands on it if that doesn’t sound appealing. Please continue reading.

What functionality is included?

You can install any app with a valid manifest (even local ones -- manifest). The command line client “winget.exe” is already pre-configured to point to the Microsoft community repository. That means you can install any package with a manifest that has been published.

Have you ever had to completely re-install all your apps and tools on your PC? How long did it take? How did you remember where to go to find, download, and install all your editors & IDEs, languages & runtimes, source control tools, etc.?

 

Did you enjoy it? Yeah, neither did we … which is why we created Windows Package Manager.

 

Now you can install all your favorite apps & tools simply by typing winget install <foo> into your command-line. Or better still, you can create a script file that installs ALL your tools while you sit back enjoy a well-earned coffee break!”

You can search for available packages and display information using the show command. There are also commands to help with manifest creation and validation (hash and validate). Once the first third-party repository is published, you will be able to add that repository as a source as well. We’re providing documentation at https://docs.microsoft.com/windows/package-manager and both of the GitHub repositories.

Executing the winget install vscode command in Windows Terminal

How do I get it?

We have provided three different ways for you to get your hands on the Windows Package Manager. If you are a Windows Insider, you may already have it. First, you can head over to the open source GitHub repository for the client. Second, you can join any of the Windows Insider rings. Third, you can join the Windows Package Manager Insider program by providing your Microsoft Account (MSA) to Windows Package Manager Insider Program and request to be included in the preview. Either of the Insider programs will ensure you automatically receive updates as we progress from preview to general availability. After you have joined either Insider program, head over to the Microsoft Store and get the App Installer. The Windows Package manager will be available after you get the update.

The App Installer in the Microsoft Store

Why not contribute to another open source package manager?

We looked at several other package managers. There were several reasons leading us to create a new solution. One critical concern we had was how to build a repository of trusted applications. We are automatically checking each manifest. We leverage SmartScreen, static analysis, SHA256 hash validation and a few other processes to reduce the likelihood of malicious software making its way into the repository and onto your machine. Another key challenge was all the changes required to be able to deliver the client program as a native Windows application.

Which versions of Windows will be supported?

Windows Package Manager will support every Windows 10 version since the Fall Creators Update (1709)! The Windows Package Manager will be delivered with the Desktop App Installer when we ship version 1.0. If you are building software to run on Windows 10 you will have a simple way for your customers to install your software on billions of machines.

But what about…

We are expecting you have plenty of questions. What does this mean for the Windows store? It doesn’t mean anything for the Windows store. The Windows Package Manager is a command line interface, no marketing, no images, no commerce. Although we do plan on making those apps installable too.

What about insert any other package manager here? We think they are great. If they want to leverage our repository of validated packages, they can. If they want to see how we are doing it, it is open source. We’re open to feedback and suggestions.

We have already talked with a few of the well-known package manager teams. Chocolatey has a vibrant community with a massive collection of applications, and a rich history supporting both open source and enterprise customers. Scoop provides a convenient way to allow software to be installed without the UAC popups. Ninite keeps an eye on updates for all the apps it installed. There are many others like AppGet, Npackd and the PowerShell based OneGet package manager-manager.

If you are happy with your current package manager, keep using it. Our goal is to make installing software on Windows better for everyone.

What’s next?

We have a long list of features we think you will like. Take a look at the list of issues we have already created on GitHub. Be sure to +1 any issues you feel strongly about. If you do not see something, and you would like us to consider it, just create a new issue.

50 comments

Leave a comment

  • Avatar
    David Gardiner

    To be honest I’m really disappointed with this. I would have hoped Microsoft would have finally learned to stop duplicating existing projects/applications that already exist. How much better it would have been to work with the other communities and add the extra screening enhancements to them rather than duplicate/compete.

    • Avatar
      Justin King

      I have to agree. Excitement for a package manager is clear and everyone wants this, but what’s delivered isn’t even a package manager. It doesn’t support dependencies. It doesn’t uninstall. They started over (assuming for tighter OS integration) yet it doesn’t even list existing installs.

      Reasons listed are either already solved problems (just host your own MS packages in your repo and allow the user to add trusted repositories on their own, no need to scan everything like a gatekeeper), or issues with the underlying OS that would be a much much smarter focus (get the msix standard in a place where it can be an common interface for installs and support everything from random package managers to the Microsoft store). Instead they are just starting from scratch. This looks like its years away from being a package manager I could rely on.

    • Avatar
      Graham Bunce

      Agreed… This point:

      “Have you ever had to completely re-install all your apps and tools on your PC? How long did it take? How did you remember where to go to find, download, and install all your editors & IDEs, languages & runtimes, source control tools, etc.?”

      Yes, a few times. Took me about 15 minutes…. with chocolately. Problem solved.

    • Avatar
      Daniel Steck

      There’s just no pleasing some people. This is an early preview and it’s a project to develop a package manager that (I assume) will be fully integrated into Windows at some point. How you can have any complaint about that is beyond me.

  • Avatar
    Adam Roach

    Glad to see this kind of functionality under development! The thing that appears to be most profoundly missing right now is dependency management, which is really the most important part of any package manager. For example, “winget install powertoys” works beautifully… until you try to use it. Then it pops up a dialog that says that .NET Core is missing, and the obvious path to fix this takes you to a webpage. Since .NET Core is an absolute prerequisite for powertoys to work, I would have expected winget to install .NET Core automatically when I asked for powertoys to be installed. It does appear that ‘winget install “.NET Core”‘ works fine; it’s just that the package manager isn’t apparently handling dependencies yet.

    (I see this is already an open issue on github; I’ve commented there as well)

  • Avatar
    noah curoe

    Too little too late, don’t you think? I already have to manage installs for independent win32 apps, Microsoft Store apps, WSL, chocolatey, and now I can throw winget into the mix. If the goal of this was to unify any of these distribution methods that would be great, but all this does is fracture and complicate the ecosystem even further. I frankly fail to see the point of making something like this so late into the game when it provides near zero tangible benefits over any of the other solutions and makes managing applications more complicated.

  • Avatar
    Ehsan Hosseinkhani

    Havent used any package managers for Windows, but I’m guessing this is basically Nuget but for the OS.
    Haven’t checked it out but I hear it is currently missing update and dependency features, correct?
    Just make it exactly like Nuget (update and dependency included) and it will be awesome.

  • Ives Stoddard
    Ives Stoddard

    Package management + Visual Code + iTerm2 for Windows + zsh would be amazing.

    Still a ways to go when compared with the rich ecosystem of interoperability between linux and macOS via homebrew, but definitely a step in the right direction.

    Hoping the May release brings better stability to Services for Linux on Win 10 (like opening files from Linux filesystem in Windows native, without completely corrupting them). Full login & user shell support in WSL would also resolve a lot of the problems with alternate shells (fully supporting umasks, etc.).

    • Avatar
      Daniel Steck

      I’m really glad they didn’t use something like C# (although I wouldn’t have minded Rust). Using C# leads to issues like powershell which is embarrassingly slow for a shell.

      System utilities like this should be snappy and performant, and a package manager — while nontrivial — is a relatively manageable piece of software where C++ shouldn’t incur any drawbacks.

  • Avatar
    Mindaugas Jasiulis

    I hope that support for Windows store apps is not that far on the horizon, it’s quite a big pain point to reinstall stuff while navigating through the store on new machines, so far I am enjoying what you guys delivered.

    • Avatar
      Justin King

      Just use Choco.

      It already has dependencies, uninstall, can support private repos, works natively with CM tools like Chef/Puppet/Ansible, and basically all the basics you’d expect out of a package manager.

      I’m honestly struggling to see why they just didn’t announce chocolatey getting bundled into the OS with a formal MS repo.

  • Avatar
    William White

    I absolutely don’t get this. No support for server os? Why are you calling this “package manager” instead of app installer? Package manager implies you can use it in a variety of ways and point to other sources – the way that we are using choco with our artifactory instance. Can choco install apps? Sure. Can it install scripts, binaries, etc your app needs? Sure. Can this? Doesn’t seem like it, seems like it’s just an app installer. Why not acquire chocolatey? They’d benefit from pairing with nuget team. The community would benefit.

  • Avatar
    Fleet Command

    Hello! This is exciting news, given that a package manager is what Windows always lacked. I always felt it would have been great to manage software updating from one central point of administration.

    But first, why is it a traditional command-line app? Why is it not a PowerShell module, especially one that supports remoting? In fact, the PowerShell team is creating a new package manager. Why these two efforts are divergent in the first place? Let me remind you what happened the last time Microsoft’s efforts became divergent and unfocused: Windows 8 happened!

  • Avatar
    Tim Gaywood

    I am very excited about this change.

    Hoping in the long term it will help both users and developers. in the user space it will be great to have a central place to update all applications and avoid every application needing separate application /scheduled tasks to update. This will also help ensure all applications are up to date.

    In the developer space it will free up resources not having to create a separate updater application.

    It will need the ability to update applications as well as installing initially for it to be a proper package management tool.

    Dependency management is a major part of package management. it is rare for applications to remove any dependencies during uninstall and package management can solve that issue.

    Personally I am happy with commandline and potential powershell scripting and so will businesses however home users and smaller businesses will want a GUI.

    Being able to create a script to install all my favourite applications at the push on a button after a fresh install of windows will be fantastic.

    Being able to rollback to an earlier version of an application if a bug occurs would also be a nice feature.

  • Avatar
    Daniel Fenn

    So I am looking at Windows Package Manager, and I think it greats that windows is getting this. Does anyone knows if after downloading and installing the request software if it keeps the downloaded file or removes it?

  • Jonathan Langevin
    Jonathan Langevin

    @denelon, so happy to see something like this getting picked up at Microsoft. Very stoked about all the open-source efforts coming out of MS right now, hopefully winget picks up a lot of traction.

    Do you guys have a roadmap published, so we can see what’s at least planned in the next couple of releases, and what’s backlogged? I see you have “specification tracker” project created in Github, but as everything is in the first lane still, I’m not quite sure how relevant it is.

    Features I’d like to see:
    – updating
    – alternative repos
    – dependency management
    – uninstall
    – snapshot/rollback
    – custom URL support to click in browser to quickly launch terminal process

  • Conrad Akunga
    Conrad Akunga

    I don’t understand the reason for Winget to exist given that Chocolatey
    1. Already exists
    2. Is already fully featured
    3. Works on desktop and server
    4. Handles dependencies
    5. Has a large and vibrant community

    With regards to the reasons given for not adopting one of the existing efforts

    There were several reasons leading us to create a new solution. One critical concern we had was how to build a repository of trusted applications. We are automatically checking each manifest. We leverage SmartScreen, static analysis, SHA256 hash validation and a few other processes to reduce the likelihood of malicious software making its way into the repository and onto your machine. Another key challenge was all the changes required to be able to deliver the client program as a native Windows application.

    This is unconvincing. The solution to this cannot be to write another package manager. Why not collaborate and add these things to Chocolatey?

  • Jozef Izso
    Jozef Izso

    https://www.theverge.com/2020/5/28/21272964/microsoft-winget-windows-package-manager-appget-copied

    Beigi interviewed in December, and then never heard anything back from the company for nearly six months until he received a 24-hour heads up that Microsoft was launching winget last week. “When I finally saw the announcement and the GitHub repositories, I was shocked? Upset? I wasn’t even sure what I was looking at,” says Beigi.

    Beigi claims the “core mechanics, terminology, the manifest format and structure, even the package repository’s folder structure” of Microsoft’s winget are all heavily inspired by AppGet. Microsoft only briefly mentions AppGet once in its announcement, in a throwaway line that lists other Windows package managers.

    “What was copied with no credit is the foundation of the project. How it actually works,” explains Beigi in a separate Reddit post. “And I don’t mean the general concept of package / app managers… WinGet works pretty much identical to the way AppGet works.”