As said in a previous article, I am convinced that part of the motivation for making package sub-systems like the Python one, which includes distutils, setuptools, etc, is that Windows users and Mac users never had the chance to use a tool that properly manages the configuration of their computer system. They just do not know what it would be like if they had at least a good package management system and do not miss it in their daily work.
I looked for Windows package managers that claim to provide features similar to Debian's dpkg+apt-get and here is what I found in alphabetical order.
AppSnap
AppSnap is written in Python and uses wxPython, PyCurl and PyYAML. It is packaged using Py2Exe, compressed with UPX and installed using NSIS.
It has not seen activity in the svn or on its blog since the end of 2008.
Appupdater
Appupdater provides functionality similar to apt-get or yum. It automates the process of installing and maintaining up to date versions of programs. It claims to be fully customizable and is licensed under the GPL.
It seems under active development at SourceForge.
WinAptic
WinAptic is another Synaptic clone written this time in Pascal that has not evolved since the end of 2007.
Win-Get
Win-get is an automated install system and software repository for Microsoft Windows. It is similar to apt-get: it connects to a link repository, finds an application and downloads it before performing the installation routine (silent or standard) and deleting the install file.
It is written in pascal and is set up as a SourceForge project, but not much has been done lately.
WinLibre
WinLibre is a Windows free software distribution that provides a repository of packages and a tool to automate and simplify their installation.
WinLibre was selected for Google Summer of Code 2009.
ZeroInstall
ZeroInstall started as a "non-admin" package manager for Linux distributions and is now extending its reach to work on windows.
Conclusion
I have not used any of these tools, the above is just the result of some time spent searching the web.
A more limited approach is to notify the user of the newer versions:
- App-Get will show you a list of your installed Applications. When an update is available for one of them, it will highlighted and you will be able to update the specific applications in seconds.
- GetIt is not an application-getter/installer. When you want to install a program, you can look it up in GetIt to choose which program to install from a master list of all programs made available by the various apt-get clones.
The appupdater project also compares itself to the programs automating the installation of software on Windows.
Some columists expect the creation of application stores replicating the iPhone one.
I once read about a project to get the Windows kernel into the Debian distribution, but can not find any trace of it... Remember that Debian is not limited to the Linux kernel, so why not think about a very improbable apt-get install windows-vista ?
Comments
Hello,
Good article, but I think you are not totally right : I think Windows users don't need package managers because every Windows application comes with a automatic "Check for update" mecanism (commercial or free), and when you install a new application, you can be sure to be up-to-date, if connected to Internet, since it send you a recall at any launch (or every week!).
I think that a centralized package manager is a Linux philosophy. In definitive, what do you do with apt-get or Synaptic ? It allow you to search for a specific application but more important it allow you to get all the dependencies of you application.
On windows, this dependency mecanism doesn't exists, because 1. lots of applications are commercials (they doesn't need any dependencies..) and 2. for opensources applications, if your application needs, for example, Qt, it comes with a full distribution of the Qt library packaged inside your application !
Maybe this is the only one, but it's a pros of Windows on Linux : the cohabitation of different versions of the same library. For example, you can mix many applications that uses differents versions of Qt without any problem. On Linux, this is impossible or more tricky, for applications managed by a package manager like apt-get.
To finish my commentary, I think some projects like WPKG (http://www.wpkg.org) are interessing for Windows administrators : they offer an mean that manage centralized silent installations of many windows applications (free or commercial).
The cohabitation of different versions of the same library is also possible with several Linux distributions. Debian Lenny, for example, ships both Python 2.4 and Python 2.5 and both libtcl8.4 and libtcl8.5, etc.
The fact that most Windows application install their own version of the libraries they use is a disadvantage, since properly securing a Windows system is a nightmare. If YourLib3.4.1 has security issues fixed in version 3.4.2, but version 3.4.1 is installed and used by five different pieces of software without you even knowing about it, there is no way you will be able to secure that system.
A commercial package still has dependencies, just like any package on Windows or Linux. The difference is that on Windows, each app will generally maintain its own version of each library it needs, since Windows was too lazy to make a package manager for itself. THIS IS NOT A GOOD THING. It means that if there is an update with, say, security fixes, that will not get applied. It also means a lot of wasted space from duplicate libraries (part of the reason a windows installation is so much larger than a linux one). In addition, your assertion that each application will have an automatic updater is not a correct one. It might if you're lucky, but its hardly a sure thing.
This is the one thing that has been missing from windows for a very long time. With the right kind of support, it could become the end all "Killer App" for Windows machines. I would like to see a much larger number of applications included in the repository. Perhaps Strawberry Perl and Frozen Bubble. There are a wide variety of Linux apps with Windows ports that should be included.
Recently chocolatey was created. It's kind of like apt-get in that it gets close with windows. http://www.youtube.com/watch?v=N-hWOUL8roU
Chocolatey has a main feed at http://chocolatey.org. You can create your own packages and share them there or on custom (even private) feeds.
Thanks for the link. Looking at Chocolatey turns up yet another link: http://coapp.org/
Someone just told me about Npacked http://code.google.com/p/windows-package-manager/