One of the things I love about Linux is the idea of package management. Most modern distributions use this approach of distributing packages to their users. Debian and Ubuntu have Apt, Red Hat and Fedora have Yum, Gentoo has Portage, SuSE has Yast and Mandriva has Urpmi. In all cases you can install most of the applications you will need for your day-to-day tasks by simply specifying their name. You don’t need to find their website, you don’t need to download an installer, and click Next 17 times. All you do is say _____ install firefox (where the blank can be replaced by apt-get, yum, emerge or urpmi) and a copy of the program is automatically fetched, downloaded and installed in the background as you work. This concept is IMHO the best thing since sliced bread. Hell, it might be the best idea since the invention of toilet paper.
Unfortunately Windows users are doomed to live in a world of tedious, micro-managed installations. Or are they? Some time ago I wrote about a nifty app called InstallPad. InstallPad is not a package manager though – it is an automated application deployment tool which will download and silently install packages in the background. It does not have other package management features such as dependency management (although in Windows environment most applications ship in self contained bundles, so this is not as important), package removal features and etc. It also depended on a local application list defined in an xml file and not a central repository. This means that you are responsible for obtaining the most up-to-date application list.
It also depended on .NET which meant that you still had to go through the lengthy and tedious installation process just to be able to use it. Needles to say my experiment in using InstallPad as a end user automated software deployment platform failed.
WinLibre seems to be a very similar project. Not necessarily a package manager but a deployment tool. The main difference between the two is that WinLibre does not depend on .NET, but also does not have an easily customizable application list. I haven’t tested it, but it seems like a reasonable alternative to InstallPad.
I was pleasantly surprised that there are at least three projects in active development that try to re-create the package manager experience on windows. All do it a little bit differently. Windows Package Manager and AppSnap seem to be inspired by Synaptic and Yast school of thinking – they offer you a nice GUI for managing your software, and dependencies. Windows Package Manager will actually attempt to detect what software you have installed on your computer, as well as fetch a list of applications from the server.
Unfortunately it is still a very buggy and immature piece of software. When I downloaded it and tried testing it on a Win 2k box, I could nod get it to work. The application list would not download, the installed software would not show up on the list and etc. Also, the graphics design seemed very amateurish – the icons looked like they were hand drawn in MS Paint, and the windows had dreadfully awful pastel backgrounds (blue, violet, green – ugh). Needless to say, while the concept behind the application is excellent, the execution is less than satisfactory. I’d keep an eye on this one though. Maybe in a year or two it will evolve into something more stable and usable.
AppSnap on the other hand seems to be somewhat more mature. It is essentially the same idea but in a much better package. Unfortunately AppSnap doesn’t really know what is currently installed on your system – it simply keeps track of what it installed already. Which is not a big problem I guess. The application selection is tad limited too. It has definitely more choices than InstallPad but fewer than win-get.
What is really nice about this manager is that it actually does the job right. It actually attempts to crawl around the download sites trying th detect the most up-to-date version. Also, almost every install and un-install I tried installing with it was done silently in the background. Is it perfect though? No. It’s still buggy.
I had major trouble running the latest 1.3 version on my Win2k box – it kept crashing at startup while looking for appsnap.dll which did not exist. I don’t know why this was happening, but if I wasn’t determined to review it here, I would have given up on it after the second try. Fortunately the previous version (1.2.1) worked just fine.
Since AppSnap does not check the registry for currently installed applications it will happily overwrite your existing software. It will also fail to detect that you have manually uninstalled one of it’s applications manually. So even though it is gone from the system, it will be listed as an installed app in the AppSnap menu.
Despite this I think it is probably the most rounded package manager on the market right now. All it needs is more control over the applications already installed on your system, and it will be a very useful tool. Still, I’m not a big GUI person.
The last project is essentially an imitation of my beloved apt command. Win-get is a command line tool written in Pascal. Pascal? Yes, Pacal. I didn’t think that anyone was still doing active development in that language other than maintenance of existing applications but it seems that people still do (feel free to shoot me down on this, and give examples of brand new Pascal project being launched right now). Anyway, the application uses a central community driven repository which lists direct links to installers, along with silent installation command line switches that should be passed to each of them. The list is built by community members, and everyone is free to contribute and help building the application database.
Win-get downloads the packages using wget and then triggers the installation. Up to that point, it works remarkably like apt-get. Unfortunately it is not aware of applications already installed on your computer. Thus apts remove functionality doesn’t work here. You can easily get that list from the registry key:
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall
It should be relatively trivial to implement this, and trigger an appropriate uninstallation program. Unfortunately win-get doesn’t do that. I’d love to contribute this functionality to the project, but hell I don’t feel like figuring out Pascall just to do this.
My other gripe here is not necessarily related to win-get – it is a general complaint. Very few applications offer unatended/silent installation option these days. So you can’t just queue up bunch of apps to be downloaded and installed and then go for lunch. For the most part Apt allows you to do exactly that. There are few exceptions (notably Sun’s Java packages which require explicit license agreements) but in general everything installs seamlessly in the background.
Of course there is not much a package manager author could do about this. Except perhaps ship the manager with AutoIt scripts tailored for each installation package. It could be done, and they could be compiled into self-contained executables, and easily fetched by win-get from the repository.
To summarize – there is no perfect solution here. AppSnap is probably the only package manager I could recommend to a novice user at the moment. But it is still a bit shaky in places. Personally, I like win-get. It is a little rough around the edges but I believe that with a little bit more work it might actually be a kick-ass package manager.
Reading the “doesn’t know what’s currently installed” part on AppSnap.. how could they not have put that in? It has to be one of the easiest bits of information to extract from a machine besides “what OS is this”
Possibly even easier if you want a really detailed answer to the OS question – version/build numbers and such
Anyway, they are crazy.
I just keep a folder full of the little installer files, I can run through pretty much everything pretty quickly since they’re all just a case of ok-ok-agree-yes-install-untick the “restart now” box-done, not really a good idea for mass-installing onto multiple machines though
I haven’t tested either of these as I’ve just recently come across them:
http://wpkg.org/
WPKG is an automated software deployment, upgrade and removal program for Windows.
https://psi.secunia.com/
The Secunia PSI detects installed software and categorises your software as either Insecure, End-of-Life, or Up-To-Date. Effectively enabling you to focus your attention on software installations where more secure versions are available from the vendors.
Chris, I saw wpkg but it is more of a rapid deployment tool rather than a package manager. From what I saw you install it, set it up to pull a list of applications from somewhere on the network, then reboot and wait for it to download and install everything.
The PSI also doesn’t look like package manager. But thanks for posting them.
I found this very interesting to read since I am looking for a usable deployment tool for times now.
Especially complicated is that my favourites Firefox and Thunderbird do not come with appropriate remote deployment capabilities (I am managing a few small networks in my spare time, but my professional job is doing Tivoli systems management, and it has a great configuration management tool). Currently my FF and TB installation simply drop down alle the files from a snapshot, then delivering customized config files for each user ;(. I abandoned the “silent install” approach with the original .exe completely.
If there’s not one definitive API for complete deployment and all software adheres to that the windows world will continue to suffer poor application management.
Same is still true for package management on linux: all of the tools out there deliver a software, but it’s not functional. You still need to crawl into places and edit all those files, be it in /etc, /opt/etc, /usr/local/samba/lib, /var/spool/hylafax/etc and so on. Every package has its own way of doing things. Terrible!
Hello,
I’m the author of AppSnap and would be happy to resolve the crash issue you saw with 1.3.0 on W2k. I’d greatly appreciate it if you could send me more details on the failure.
Also, I’m almost done with 1.3.1 which now detects installed applications, among several other improvements which you can read about here:-
http://appsnap.genotrance.com/#%5B%5BVersion%201.3.1%20Changelog%5D%5D
Thanks for your review and support.
Well AppSnap seems nice. I’ll try it.
Pingback: A list of things you may possibly need, but maybe not (2013 edition) | Terminally Incoherent