Using Windows Package Manger (Winget) for SWI-Prolog installation

Note by EricGT after spltting.

This topic was split off and is based on this reply.

The reason for the split is that setting up Windows Package Manager for SWI-Prolog is a subset of the question posted by @JCR

Perhaps after SWI-Prolog is installable via Windows Package Manager other packages could be made based on that with one of those meeting the needs of JCR.

Someone willing to set this up? Seems it shouldn’t be too hard if it accepts NSIS installers. Changing the installer type requires some CMake hacking. If anyone is familiar with that and Windows installer practices, please contribute.


I don’t mind taking the time to see what winget can do for Windows. I don’t plan to explore modifying the build instructions for SWI-Prolog to possibly make an MSI file. I could see that taking me a week or more.

For Macs I can only be a bystander as I don’t have a Mac.

What about Linux systems? appget? (ref)

For everyone

As noted in the original post, the goal is to not only install SWI-Prolog but install SWI-Prolog with some packages and also install VSCode with the extensions and specifically VSC-Prolog.

Interesting side story about WinGet.

Windows 10: Microsoft now credits maker of package manager it ‘copied’ – but offers no apology

I do recall that Keivan Beigi publicly posted his own personal account of the whole ordeal but I can’t find it; this seems to be a news story based on that posting.

Do not take this to mean I am opposed to Microsoft, just passing the story along.


Found the personal account by Keivan Beigi.

The Day AppGet Died.

Personal notes


Windows Package Manager and the winget tool are in public preview and may be substantially modified before they are generally available. Microsoft makes no warranties, express or implied, with respect to the information provided here.

List of software package management systems (Wikipedia)
Windows Package Manager AKA Winget (Wikipedia)
Windows Package Manager (Documentation)
winget-cli (GitHub) - The source code for the Windows Package Manager Client (aka winget.exe).
winget-pkgs (GitHub) - Contains the manifest files for the Windows Package Manager
Join the Windows Package Manager Insiders Program (ref)

an automated process will validate your manifest file and check to make sure the package is not known to be malicious.

That could be a problem as the SWI-Prolog install file is considered malicious by some scanners. (ref)

How to install VSCode with Winget (ref)

Manifest are located at


  • Specific versions, e.g. Python (search) (directory)
  • Different types, e.g. OneDrive Insider, Fast ,Slow, Release
  • Multiple entries in a directory, e.g. GitHub
  • Personal contribution, e.g. James Larus
  • Same directory and application name, e.g. LLVM

TODO: Use CPack to create MSI output instead of NSIS. Then using WinGet Windows installation of SWI-Prolog should be easier.
Packaging With CPack — Mastering CMake
windows - How to generate .msi installer with cmake? - Stack Overflow
Use the winget tool to install and manage applications | Microsoft Learn


As said, for the Mac there is Macport, Homebrew and a position-independent binary bundle for each release. There is not yet binary support for the M1. It compiles fine from source though.

Linux distributions are supported fine IMO. Several distributions have it as part of their standard packages (be it often pretty outdated :frowning: ). For Ubuntu there are PPAs, for almost all distros there i a snap, (both for each release) there are Docker images and as all dependencies and build tools are readily available a source build is pretty easy.


Perhaps it is worth noting that at TerminusDB, we install SWI-Prolog through Chocolatey as part of our continuous integration. This seems to work pretty well.


Status update.

Windows Package Manager and the winget tool are in public preview and may be substantially modified before they are generally available. (ref)

So when I tried this the version of winget on my machines is out of date with the current version on GitHub and to install and build Winget on my machine would require me to reinstall Visual Studio (not Visual Studio Cocde) and other parts of the tool chain, etc. which is not something I care to do now or in the next few weeks. As such I am putting this on hold until I either have more time and the desire to install the tool chain, or winget is updated on my machine to a production version via the Windows update process. :confused:

Thanks to murray and ShadowDancer43 for keeping it updated.