Use the form below to add an application. It will be published once it has been verified.\n<html>\n<iframe height="1032px" width="100%" name="zohoform1" frameborder="0" scrolling="no" src=" Added Successfully!&privatelink=9H5nPnOqgn4dkfjpUX8U4aXUarp6tK6sVfRUsDkvyYYH5T428XV5RybkQ2xexASx26vCnvU4HNEC3An5Ve6BbF4BW49wfMQ7tnxf"></iframe>\n</html>
~AppSnap is an application that simplifies installation of software. It automatically figures out the latest version, downloads the installer and then installs the software in one seamless step. ~AppSnap is primarily designed for Windows which does not have any decent package manager such as APT and RPM as in the Linux world.\n\n~AppSnap is written in Python and uses wxPython, ~PyCurl and ~PyYAML. It is packaged using ~Py2Exe, compressed with UPX and installed using NSIS.\n\nThe latest news and updates can always be found on the [[official blog|]]. Drop by to see what's going on.\n\n<html><a style="" href="">\n<div style="background-color: #88CCFF; padding: 10px; border: solid thin #0044BB; width: 200px; margin-left: 25px;">\n<img src="" align="left" style="padding-right: 5px;"/>\n<font style="color: #0044BB; font-size: 16px;">\n<u><b>Download AppSnap</b></u>\n</font><br/>\n<font style="color: #0044BB; font-size: 12px;">\nVersion 1.3.3 for Windows\n</font>\n</div></a></blockquote></html>\n!!!Features\n* Detect latest and installed version of supported applications\n* Download, install, upgrade and uninstall supported applications\n* Uninstall applications registered with Add/Remove Programs facility\n* Fully functional GUI and CLI supporting localization\n* Manage installed and upgradeable applications\n* Manage ~AppSnap updates from within itself\n* Update growing application database from central repository\n* Create single application repository to be used by ~AppSnap on an intranet\n* Support proxy configurations\n* Parallel downloads with progress information\n* Filter applications by category and keywords\n* Free and Open Source\n\n!!!License\nAppSnap is Copyright © 2006-2007 Ganesh Viswanathan. It has been released under the [[GPL|]]. The source code is included in the installer. Other ways of obtaining the source are described [[here|Source Code]].\n\n!!!Feedback\nI’ll be happy to hear about your experiences with AppSnap. If you have any ideas or recommendations, please feel free to send them my way. I also welcome patches. You can contact me at the AppSnap [[discussion group|]] or at: ganeshjgd AT gmail DOT com.
!!!The Problem\nOne of the main issues solved by AppSnap is figuring out the latest version of an application.\n\nIn the Windows world, there is no central body that maintains a database containing the latest versions of various applications, such as APT and RPM in the Linux world. Even if some efforts exist, more time might end up getting spent in keeping the database current than in enhancing the application itself.\n\nAppSnap solves this problem by providing an API that automates figuring out such versioning information rather than depending on a mechanical process. While this method also suffers from potential breaks (an application may change its website or versioning scheme), it is less likely to break as often (websites don't change so often and versioning schemes seldom waver after a certain point of project maturity) and, most importantly, it does not need the effort to add every new release of every single application to a central database.\n\nFor many large and consistent applications, you would add it once to the AppSnap database and be set for life.\n\n!!!The Database\nThe AppSnap application database is stored in db.ini. This is a simple INI file that contains all the information that AppSnap needs in order to download, install and uninstall the applications that are supported.\n\nAdding an application is as simple as adding a new section to db.ini with all the required sections populated as needed. The bottom of db.ini provides a dummy section and information that helps setup popular installer packages such as [[NSIS|]] and [[InnoSetup|]].\n\nSeveral applications are already added and serve as examples of how the database works. Popular websites such as [[SourceForge|]] also have many examples which will make it very easy to add other applications that are developed there.\n\n!!!User Database\nAfter loading the main database from db.ini, AppSnap loads a second database from userdb.ini. This optional database overrides any duplicate entries in the main database. It allows users to add additional applications or modify existing applications without having to modify the main database. This way, changes made by the user are not lost through database updates.\n\nThe user database follows the same syntax as the main database.\n\n!!!Database Details\n* [[Text Replacements]] - syntax to represent certain application information\n* [[Configuration Options]] - all the options required in order to configure an application
AppSnap supports the following list of applications. You can also [[add an application|Add Application]] to the AppSnap database.\n<html>\n<iframe name="zohoview1" width="100%" height="1400px" scrolling="no" frameborder="0" src=""></iframe>\n</html>
* [[Version 1.3.4 Changelog]]\n* [[Version 1.3.3 Changelog]]\n* [[Version 1.3.3-pre2 Changelog]]\n* [[Version 1.3.3-pre1 Changelog]]\n* [[Version 1.3.2 Changelog]]\n* [[Version 1.3.1 Changelog]]\n* [[Version 1.3.0 Changelog]]\n* [[Version 1.3.0-pre2 Changelog]]\n* [[Version 1.3.0-pre1 Changelog]]\n* [[Version 1.2.1 Changelog]]\n* [[Version 1.2 Changelog]]\n* [[Version 1.1 Changelog]]\n
There are several competitors in the Windows package manager arena. The ones I'm aware of are:-\n* [[AppGet|]]\n* [[Appupdater|]]\n* [[FileHippo Update Checker|]]\n* [[GetIt|]]\n* [[InstallPad|]]\n* [[RadarSync|]]\n* [[Secunia Software Inspector|]]\n* [[SUMo|]]\n* [[The Great Unattended Project|]]\n* [[UpdateStar|]]\n* [[VersionTracker|]]\n* [[Win-Get|]]\n* [[Windows Package Manager|]]\n* [[Wpkg|]]
All the options required in order to configure an application are as below:\n\n!!!The section name\nThe section name is essentially the name of the application. This has to be a unique name and has to start with a letter. The section name is used as part of the installation directory text replacement (''#~INSTALL_DIR#'').\n\nSection names are case sensitive.\n\n{{{\nE.g.\n [Firefox]\n}}}\n\n!!!The category\nThe category option specifies which category of applications this particular application belongs to. This helps classify applications into relevant groups and simplifies finding an application within AppSnap. At this time, only a single category per application is supported.\n\nA set of categories are already in use in the version of db.ini shipped along with AppSnap.\n\nSeveral special categories are created by AppSnap automatically:\n* ''All'' : Selects all the applications in db.ini\n* ''Installed'' : Selects all applications currently installed by AppSnap\n* ''Not Installed'' : Selects all applications not installed by AppSnap\n* ''Processing'' : Selects all applications with active tasks in progress.\n* ''Upgradeable'' : Selects all applications currently installed by AppSnap that have an updated version available\n\n{{{\nE.g.\n category = Internet\n}}}\n\n!!!Application description\n\nThis option provides a short description of the application.\n\n{{{\nE.g.\n describe = Web Browser\n}}}\n\n!!!Application website\nThis option provides a direct link to the application website.\n\n{{{\nE.g.\n website =\n}}}\n\n!!!The scrape URL\nThis is a URL that lists the latest version of the application. This could be any kind of HTML page with the version information listed in plain text. In many cases, this is the download page of the application, a change log, a directory listing or an FTP directory.\n\nFor applications that do not disclose their versions, this option can be omitted. In that case, the version will show up as ‘Not Available’. If this option is omitted, the download URL becomes a required field.\n\n{{{\nE.g.\n scrape =\n}}}\n\n!!!The version string\nThis is a regular expression that matches the format of the application’s version on the scrape URL page defined above. Knowledge of regular expressions in Python will prove very helpful but here’s some tips:\n* Just the version portion should be enclosed in () in order to be picked up\n{{{\n clumpsetup-v([0-9]\s.[0-9]*).exe\n}}}\n* Dots outside [] should be escaped using a \s\n{{{\n [0-9]\s.[0-9]+ matches 2.44, 1.1, 8.888\n}}}\n* It should be as specific as possible so as not to pick up irrelevant strings\n{{{\n 7z([0-9][0-9][0-9]).exe instead of ([0-9][0-9][0-9])\n}}}\nFor applications that split out their versions into multiple parts, the following syntax needs to be followed:\n* Enclose each part in ()\n* At the end of the version string, specify how the different parts should be combined using a regular expression comment: (?#xxx) where each x is a delimiter. Typically, for N parts, there will be N-1 delimiters.\n* For example, the ~VMWare Server scrape url displays the version as //Latest Version: 1.0.4 | 9/18/07 | Build: 56528//. The version string below results in the version being captured as 1.0.4-56528.\n{{{\n version = Version: ([0-9]\s.[0-9]\s.[0-9]).*Build: ([0-9]+)(?#-)\n}}}\n* Another example, if version is displayed as //Version 1.0.4 Release 9 Build 21//, use the following version string to get\n{{{\n version = Version ([0-9]\s.[0-9]\s.[0-9]) Release ([0-9]) Build ([0-9]+)(?#.-)\n}}}\nFor more details on regular expressions, refer to the Python Regular Expressions [[syntax page|]]. Also, refer to the list of applications already in db.ini to see how the version string is leveraged.\n\nFor applications that do not disclose their versions, this option can be omitted along with the scrape URL above.\n\n{{{\nE.g.\n version = ([0-9]\s.[0-9]+[.0-9]*)/\n}}}\n\n!!!The download URL\nThis is the URL from where the application installer can be downloaded. This option can be ignored if the download URL is the same as the scrape URL.\n\nFor applications that do not disclose their versions, this option becomes a required field.\n\nThis option allows the usage of versioning text replacements.\n\n{{{\nE.g.\n download =\n}}}\n\n!!!Application download file name\nThis is the filename of the application package which can be found at the above download URL.\n\nIn most cases, this is the installer executable as well. If the rename option below is specified, this the actual filename downloaded but is saved as the rename filename below. In the case of zipped installers, this is the ZIP file name and the installer filename below is the actual installer executable.\n\nThis option allows the usage of versioning text replacements.\n\n{{{\nE.g.\n filename = Firefox Setup #VERSION#.exe\n}}}\n\n!!!Rename application file name\nThis is the actual filename of the application package instead of the filename specified above as part of the download URL. AppSnap will download the filename above and save it as this renamed filename.\n\nThis is useful in cases where the download URL contains a generic filename like //downloadbinslim// whereas the actual filename is //ccsetup202_slim.exe//. This can also be used to prevent AppSnap from redownloading application installers by embedding the version information in the filename in cases where the downloaded filename has no version information in it. For example, //setup_~CodecInstaller_full.exe// can be renamed to //setup_~CodecInstaller_full#VERSION#.exe//.\n\nThis option allows the usage of versioning text replacements.\n\n{{{\nE.g.\n rename = ccsetup#DOTLESS_VERSION#_slim.exe\n}}}\n\n!!!The referer URL\nThis is the URL to be set as the referer for the download URL. It is mainly available for applications that only allow you to download the installer when referred from a specific page.\n\nWhen not specified, it defaults to the scrape URL. If the scrape URL is not specified either (for applications that do not disclose their versions), the referer is set to the download URL.\n\nThis option allows the usage of versioning text replacements.\n\n{{{\nE.g.\n referer =\n}}}\n\n!!!Installer Filename\nThis is the name of the installer executable that AppSnap should execute instead of the downloaded application file name. It is useful when the application is shipped as a zipped installer. AppSnap first extracts the ZIP archive and then executes this file to kick off the install.\n\nThis option allows the usage of versioning text replacements.\n\n{{{\nE.g.\n installer = Setup.exe\n}}}\n\n!!!Installer parameters\nThese are the flags to append to the installer when executed. Primarily, this allows you to run the installer in silent mode.\n\n{{{\nE.g.\n instparam = -ms\n}}}\n\n!!!Application upgradeable flag\nSet this to true if the application is capable of upgrading itself when a newer installer is executed, false otherwise. When set to false, AppSnap uninstalls the existing install and then installers the newer version.\n\n{{{\nE.g.\n upgrades = false\n}}}\n\n!!!Install directory parameter\nThis flag is appended to the installer when executed so as to change the default installation directory. You will need the ''#~INSTALL_DIR#'' text replacement here. Leave this blank if the installer does not support such an option.\n\n{{{\nE.g.\n chinstdir = /D=#INSTALL_DIR#\n}}}\n\n!!!Uninstall information\nThis is the name of the folder in the registry containing uninstall information. The folder should be a sub-folder of:\n\n{{{HKEY_LOCAL_MACHINE\sSoftware\sMicrosoft\sWindows\sCurrentVersion\sUninstall\s}}}\n OR\n{{{HKEY_CURRENT_USER\sSoftware\sMicrosoft\sWindows\sCurrentVersion\sUninstall\s}}}\n\nThe folder should contain an ‘~UninstallString’ key containing the uninstall command to execute. If an application is listed in Add/Remove Programs, this should be easy to find.\n\nThis option allows the usage of versioning text replacements.\n\n{{{\nE.g.\n uninstall = Mozilla Firefox (#MAJORMINOR_VERSION#)\n}}}\n\nIf the folder name tends to vary, a registry search can be employed to find the folder name. This can be done with the ''~REGISTRY_SEARCH'' keyword followed by the key name and value to look for. This is especially useful for applications using the ~MsiExec installer which changes the folder name based on the GUID of the release. This search can also return version information if available. See the installed version section below for details.\n\n{{{\nE.g.\n uninstall = REGISTRY_SEARCH:DisplayName=Google Talk*\n uninstall = REGISTRY_SEARCH:DisplayName=Paint.NET v([0-9]\s.[0-9]+)\n}}}\n\n!!!Uninstaller parameters\nThese are the flags to append to the uninstaller when executed. Primarily, this allows you to run the uninstall in silent mode.\n\nThe ''#~INSTALL_DIR#'' text replacement is available here.\n\n{{{\nE.g.\n uninstparam = -ms\n}}}\n\n!!!Installed version detection\nThis allows AppSnap to detect the installed version of the application. This can either be a registry search or refer to the uninstaller section's registry search (if so declared). Refer to the version string section to see how regular expressions can be used to obtain the installed application version. This also supports multipart versions as described in the version string section.\n\n{{{\nE.g.\n instversion = USE_UNINSTALL\n instversion = REGISTRY_SEARCH:DisplayVersion=([0-9]\s.[0-9]+\s.[0-9])\n}}}\n\n!!!Install directory detection\nThis allows AppSnap to detect the install directory of the application. This searches the registry under the uninstall section. Refer to the version string section to see how regular expressions can be used to obtain the installed application version. This value is used to replace the ''#~INSTALL_DIR#'' text replacement if available.\n\n{{{\nE.g.\n instdir = REGISTRY_SEARCH:InstallLocation=(.*)\n instdir = REGISTRY_SEARCH:UninstallString=(.*)\s\suninst.exe\n}}}\n\n!!!~Pre-Install commands\nThis comma separated list of commands is executed by AppSnap prior to launching the application installer.\n \nThis option allows the usage of versioning text replacements as well as the ''#~INSTALL_DIR#'' text replacement.\n \n{{{\nE.g.\n preinstall = command1,command2\n}}}\n\n!!!~Post-Install commands\nThis comma separated list of commands is executed by AppSnap just after the application installer returns successfully.\n\nThis option allows the usage of versioning text replacements as well as the ''#~INSTALL_DIR#'' text replacement.\n\n{{{\nE.g.\n postinstall = command1,command2\n}}}\n\n!!!~Pre-Uninstall commands\nThis comma separated list of commands is executed by AppSnap prior to launching the application uninstaller.\n \nThis option allows the usage of versioning text replacements as well as the ''#~INSTALL_DIR#'' text replacement.\n\n{{{ \nE.g.\n preuninstall = command1,command2\n}}}\n\n!!!~Post-Uninstall commands\nThis comma separated list of commands is executed by AppSnap just after the application uninstaller returns successfully.\n \nThis option allows the usage of versioning text replacements as well as the ''#~INSTALL_DIR#'' text replacement.\n \n{{{\nE.g.\n postuninstall = command1,command2\n}}}\n\n
!!!Dependencies\n* [[Python|]]\n** [[wxPython|]]\n** [[PyCurl|]]\n** [[PyYAML|]]\n** [[Py2Exe|]]\n* [[NSIS|]]\n* [[7-Zip|]]\n* [[UPX|]]\n\n!!!Contributors (chronological)\n* ''Ganesh Viswanathan'' - Development\n* ''Søren 'Pengman' Pedersen'' - Danish Translation, Beta Testing\n* ''Ed Ewing'' - Beta Testing\n* ''Gonzague Dambricourt'' - French Translation, Beta Testing\n* ''Gabriel Cosette'' - Beta Testing, Applications\n* ''Gray'' - Beta Testing\n* ''Momchil Bojinov'' - Bulgarian Translation\n* ''Willy Dumaz'' - German Translation, Applications\n* ''Didenko EV'' - Russian Translation\n* ''Gianluigi Zanettini'' - Applications\n* ''Thien Rong'' - Applications\n* ''Jürgen Baute'' - Dutch Translation
!!!Download Release Versions\n|!~AppSnap Version|!Windows Installer|!Source Code|!Release Date|!Changelog|\n|~AppSnap 1.3.3|[[appsnapsetup-1.3.3.exe|]]|[[|]]|Feb 06, 2008|[[changelog|Version 1.3.3 Changelog]]|\n|~AppSnap 1.3.2|[[appsnapsetup-1.3.2.exe|]]|[[|]]|Sep 04, 2007|[[changelog|Version 1.3.2 Changelog]]|\n|~AppSnap 1.3.1|[[appsnapsetup-1.3.1.exe|]]|[[|]]|Aug 28, 2007|[[changelog|Version 1.3.1 Changelog]]|\n|~AppSnap 1.3.0|[[appsnapsetup-1.3.0.exe|]]|[[|]]|Jun 19, 2007|[[changelog|Version 1.3.0 Changelog]]|\n|~AppSnap 1.2.1|[[appsnapsetup-1.2.1.exe|]]|[[|]]|Dec 27, 2006|[[changelog|Version 1.2.1 Changelog]]|\n|~AppSnap 1.2|[[appsnapsetup-1.2.exe|]]|[[|]]|Nov 14, 2006|[[changelog|Version 1.2 Changelog]]|\n|~AppSnap 1.1|[[appsnapsetup-1.1.exe|]]|[[|]]|Nov 06, 2006|[[changelog|Version 1.1 Changelog]]|\n|~AppSnap 1.0|[[appsnapsetup-1.0.exe|]]|[[|]]|Oct 19, 2006||\n\n!!!Download Beta Versions\n|!~AppSnap Version|!Windows Installer|!Source Code|!Release Date|!Changelog|\n|~AppSnap 1.3.3-pre2|[[appsnapsetup-1.3.3-pre2.exe|]]|[[|]]|Dec 27, 2007|[[changelog|Version 1.3.3-pre2 Changelog]]|\n|~AppSnap 1.3.3-pre1|[[appsnapsetup-1.3.3-pre1.exe|]]|[[|]]|Nov 15, 2007|[[changelog|Version 1.3.3-pre1 Changelog]]|\n|~AppSnap 1.3.0-pre2|[[appsnapsetup-1.3.0-pre2.exe|]]|[[|]]|Apr 25, 2007|[[changelog|Version 1.3.0-pre2 Changelog]]|\n|~AppSnap 1.3.0-pre1|[[appsnapsetup-1.3.0-pre1.exe|]]|[[|]]|Feb 26, 2007|[[changelog|Version 1.3.0-pre1 Changelog]]|\n\n
!!!General Questions\n''__Does ~AppSnap support proxies?__''\nAppSnap supports all proxy authentication schemes supported by [[libcurl|]]. AppSnap automatically picks up proxy information from Internet Explorer. You will need to specify the login and password for the proxy server in config.ini which is in the same directory as AppSnap.\n\n''__Does ~AppSnap support NTLM authentication?__''\nYes, AppSnap works through an NTLM proxy.\n\n''__Is there a portable or a ZIP version of ~AppSnap not requiring installation?__''\nJust [[download|Download]] the latest installer and extract it using any ZIP extractor. Then, rename ''$[31]'' to ''locale'' and delete ''$PLUGINSDIR''. Copy the files to a USB key or any other folder. AppSnap will function as usual.\n\nIf you'd like, you can change the ''cache_location'' in config.ini to ''cache''. AppSnap will then download all installers into a sub-directory called ''cache'' thus ensuring that all downloaded installers are stored with AppSnap and not on the system AppSnap is executed on. This is useful if AppSnap is run from a USB key and you want the installers to be portable as well.\n\n!!!Troubleshooting\n''__~AppSnap is unable to connect__''\nFirst verify that you can access the web using your browser. If you are able to access the web using your browser but not using AppSnap, check if you have a proxy configured in Internet Explorer. You can check your proxy configuration by doing the following:\n* Start Internet Explorer\n* Click on Tools -> Internet Options -> Connections -> LAN Settings\n* If you have Proxy server enabled and an address and port specified, you have a proxy server configured.\nIf you have a proxy server configured then you need to specify the login and password for the proxy server in config.ini which is in the same directory as AppSnap.\n\nIf you still can not connect, retry using the command line version of AppSnap which may provide some additional details.\n\n''__~AppSnap does not detect some of my applications__''\nSome applications don't allow version detection given the current feature set of AppSnap. As of now, AppSnap only searches the uninstall section of the registry for version information. Some products do not populate this information so AppSnap will have to look in other locations in order to accomplish detection. Version 1.3.3 has been enhanced to display ''Not Available'' for the installed version if an application is installed but version information can not be found as of yet.\n\nTo see whether an application currently support version detection, open db.ini and look for the ''instversion'' key under that application's section. If the key is missing, the application can not be detected as of yet.\n\nFollowing is a list of issues as a result of workarounds in AppSnap due to bugs in external dependencies:-\n\n''__~AppSnap is missing the icons on the toolbar__''\nIf your DPI settings are set to Large //(in Control Panel -> Display -> Settings -> Advanced)// then the wxWidgets library is unable to load the icons on the toolbar. This [[issue|]] has been fixed such that the icons are no longer displayed but all toolbar functionality remains. To get the icons functional, set the DPI settings to Normal.\n\n''__~AppSnap complains that gdiplus.dll is missing__''\nAppSnap requires gdiplus.dll which comes standard on recent Windows systems. In some instances, it may not be available and can be downloaded [[here|]], directly from Microsoft. It is also widely available on the [[web|]]. Download and extract it to the System32 directory and AppSnap will start working.
AppSnap can prove useful in deploying applications across multiple machines in an intranet. In such a configuration, a central server with AppSnap installed will download all the required version information and installers to the AppSnap cache folder. This cache folder can then be shared across the network for remote instances of AppSnap to connect to and download from.\n\n!!!AppSnap Repository\nAppSnap should be installed on a primary server with access to the internet as well as the intranet. An application repository can be created on the command line as follows:-\n{{{\nappsnap -n * -d\n}}}\n\nThis will query and cache the latest version and installer of every application supported by AppSnap. If every single application does not need to be cached then the list of applications can be specified comma separated instead of *. For example:-\n{{{\nappsnap -n AppSnap,FileZilla,Firefox,Thunderbird -d\n}}}\n\nThe above actions can also be performed on the GUI by selecting every application of interest and clicking on download. Once the repository has been created, the AppSnap cache folder should be setup as a Windows shared folder that every intranet client can access.\n\n!!!AppSnap Clients\nIn order for the AppSnap clients to access this application repository, the following needs to be changed in the config.ini file for each client under the ''[cache]'' section:-\n{{{\ncache_location = file:\s\sprimary_server\sappsnap_shared_cache_folder\ncache_timeout = 1000\n}}}\n\nWhat this does is instructs AppSnap on the client machines to use the remote cache folder as their own cache folder. This way, each client has access to the latest version information and installers as maintained by the primary server. The cache timeout essentially tells the client to respect the cached information for a long time (1000 days).\n\nWe also need to ensure that the AppSnap clients can keep their application databases up to date without access to the internet. This can be achieved by the following change to config.ini under the ''[database]'' section:\n{{{\nlocation = file:\s\sprimary_server\sappsnap_shared_cache_folder\sdb.ini\n}}}\n\nAs the primary server updates its own database, the clients will also be able to keep up with the changes. \n\n
As of version 1.3.0, AppSnap supports localization. If you are interested yourself or know somebody who can and is willing to translate AppSnap into any other language, please get in touch. The latest English strings are available from the [[SVN repository|]].\n\nAppSnap utilizes the [[gettext|]] approach to support localization. A recommended editor for the .po files is [[poEdit|]].\n\nAppSnap currently supports the following languages:-\n* [[Bulgarian|]]\n* [[Danish|]]\n* [[Dutch|]]\n* [[English|]]\n* [[French|]]\n* [[German|]]\n* [[Russian|]]\nFeel free to send updates to the above language files if you find any problems.
[[Home|AppSnap]]\n[[Download]]\n[[Screenshots]]\n[[Applications]]\n----\n''Documentation''\n[[Why|Why another Application Installer]]\n[[Setup]]\n[[Usage]]\n[[Intranet Setup]]\n[[FAQ|Frequently Asked Questions]]\n[[Credits]]\n[[Competition]]\n----\n''Development''\n[[AppSnap Database]]\n[[Source Code]]\n[[Localization]]\n[[Testing AppSnap]]\n[[Changelog]]\n----\n''Links''\n[[Official Blog|]]\n[[Discussion Group|]]\n[[Beta Testing Group|]]\n[[Issue Tracker|]]\n[[SVN Repository|]]\n[[Project Page|]]\n----\n<html>\n<a href=""><img src="" width="125" border="0" alt="Google Code Logo" /></a>\n<a href=""><img src=";type=4" width="125" height="37" border="0" alt=" Logo" /></a><a href=""><img src="" width="155" border="0" alt=""/>\n</html>\n----\n''~TiddlyWiki''\nGettingStarted\nMainMenu\n
!!!~AppSnap 1.3.0-pre1\n[img[AppSnap 1.3.0-pre1|]]\n----\n[img[AppSnap 1.3.0-pre1 Downloading|]]\n!!!~AppSnap 1.1\n[img[AppSnap 1.1|]]\n----\n[img[AppSnap 1.1 Categories|]]\n!!!~AppSnap 1.0\n[img[AppSnap 1.0|]]\n----\n[img[AppSnap 1.0 Categories|]]\n----\n[img[AppSnap 1.0 Installing|]]
!!!Installation\nThe installer copies the executable files, source code, localization files and the documentation to a directory of your choice. It then creates a shortcut in the Start Menu.\n\n!!!Configuration\nAppSnap has a few configurable options that are stored in config.ini in the installation directory and can be modified as needed. The options are:-\n* Default directory to install applications (if possible)\n* Login for the proxy user\n* Password for the proxy user\n* Enable/disable silent installation of applications\n* Location where downloaded installation files should be cached\n* Time in days before cached application versions are updated or installer filenames without version information are redownloaded\n* Location where system specific information should be stored\n* Location to download latest DB's from\n* Location to download the latest version of AppSnap from\n* Enable/disable checking for updates on startup\n* Maximum downloads to perform in parallel\n\n!!!Proxy Support\nAppSnap will automatically use the proxy settings configured for Internet Explorer. If you are behind a proxy, configure the proxy user and password in the AppSnap configuration file.\n\n!!!Protocol Support\nAppSnap uses libcurl to perform the actual downloads. As a result, it inherits libcurl’s long list of supported protocols:\n* FILE\n* FTP, FTPS\n* HTTP, HTTPS\n* SCP, SFTP\n* TFTP, TELNET\n* DICT\n* LDAP\n\nAppSnap has been tested with the FTP, HTTP and FILE protocols. These protocols can be used anywhere in the database as well as in the configuration file.\n\nExamples:\n* FTP -\n* HTTP -\n* FILE\n** Local - file:\s\slocalhost\sd$\spath\sto\sfile\n** Remote - file:\s\sservername\ssharename\spath\sto\sfile\n\n!!!Uninstallation\nAppSnap can be uninstalled from “Add or Remove Programs” in the Control Panel or from within AppSnap itself.\n\n
get your apps in a snap
!!!Source Package\nAppSnap is available in a source only package which can be executed directly using an existing installation of Python. The following extra Python packages will need to be installed prior to running AppSnap:\n* [[wxPython|]]\n* [[PyCurl|]]\n* [[PyYAML|]]\n\nJust [[download|Download]] the source ZIP file, extract to a directory of your choice and run for the command line or for the GUI.\n\n!!!Source from SVN\nThe AppSnap source can be downloaded directly from SVN using an [[SVN client|]]. The latest code can be obtained from the following URL:-\n*\n\nSource of previously released versions of AppSnap are also tagged and can be downloaded from the following URL:-\n*\n \nFor example, version 1.2.1 can be downloaded from:-\n*\n\nFor more information, check [[here|]].\n\n!!!Building AppSnap\nThe AppSnap executable and installer can be built from the source package using The build script requires the following applications and Python modules installed prior to execution:\n* [[Python|]]\n** [[wxPython|]]\n** [[PyCurl|]]\n** [[PyYAML|]]\n** [[Py2Exe|]]\n* [[NSIS|]]\n* [[7-Zip|]]\n* [[UPX|]] (upx.exe present in the Windows directory)\n\n
To ensure that all supported applications are working as expected, you can perform the following two tests on the command line:\n{{{\n 1. appsnap -n *\n All applications should be listed and version numbers should load correctly\n\n 2. appsnap -n * -d -t\n All the application installer should be downloadable\n}}}\n\nTo ensure that a newly added application works as expected, you can perform the following tests on the command line:\n{{{\n 1. appsnap -c\n Application’s category should be displayed\n\n 2. appsnap -l\n Application details should be displayed\n\n 3. appsnap -l -f Category\n Application details should be displayed\n\n 4. appsnap -n Application\n Application details and the latest available version should be displayed\n\n 5. appsnap -n Application -d\n The latest installer should be downloaded to the cache directory\n\n 6. appsnap -n Application -i\n The application should get silently installed\n\n 7. appsnap -l -f Installed\n Application details should be displayed\n\n 8. appsnap -n Application\n Application details, the latest available version and the installed version should be displayed\n\n 9. appsnap -n Application -u\n If the application is upgradeable: the application should get silently installed\n Else: it should get silently uninstalled and then silently installed\n\n 10. appsnap -n Application -x\n Application should get silently uninstalled\n\n 11. appsnap -l -f Installed\n Application should not be listed\n\n 12. appsnap -n Application\n Application details and the latest available version should be displayed\n}}}\n\nNOTE: Application details include - the name, description and website.\n\nIf you are interested in testing beta versions of AppSnap as they come out, please join the [[AppSnap Beta|]] Google group.
AppSnap provides a simple syntax to represent various pieces of information in the database. The following are a list of supported text replacements.\n\n!!!Versioning\nAppSnap gets the latest version of an application from the web. After this point, the version information can be utilized in various ways as follows:\n\n{{{#VERSION#}}}\nThe version information as collected from the web\n\n{{{#VERSION[x]#}}}\nThe version information sliced just like any Python list. E.g. #VERSION[3]# pulls out the 4th item in the list, #VERSION[:2]# pulls out the first two chunks of the version.\n\n{{{#REPLACE(x,y,z)#}}}\nReplace all instances of regular expression x with string y in string z. E.g. #REPLACE([.],-,#VERSION#)# replaces all . with -.\n\nThe following version replacements have been deprecated and will be removed from a future version of AppSnap. Use the more generic #VERSION[x]# replacement as indicated below.\n\n{{{#MAJOR_VERSION#}}}\nThe first chunk of the version. Use #VERSION[0]# instead. E.g. 3.4.2 becomes 3\n\n{{{#MINOR_VERSION#}}}\nThe second chunk of the version. Use #VERSION[1]# instead. E.g. 4.1.0 becomes 1\n\n{{{#SUB_VERSION#}}}\nThe third chunk of the version. Use #VERSION[2]# instead. E.g. 8.4.3 becomes 3\n\n{{{#MAJORMINOR_VERSION#}}}\nThe first two chunks of the version. Use #VERSION[:2]# instead. E.g. 3-1-1 becomes 3-1\n\n{{{#MAJORMINORSUB_VERSION#}}}\nThe first three chunks of the version. Use #VERSION[:3]# instead. E.g. 3.1.0-1 becomes 3.1.0\n\nThe following version replacements have been deprecated and will be removed from a future version of AppSnap. Use the more generic #REPLACE(x,y,z)# replacement as indicated below.\n\n{{{#DOTLESS_VERSION#}}}\nThe version information stripped of any delimiters. Use #REPLACE([.],,#VERSION#)# instead. E.g. 4.2.2 becomes 422\n\n{{{#DASHTODOT_VERSION#}}}\nAll dashes replaced by dots. Use #REPLACE(-,.,#VERSION#)# instead. E.g. 2-32-2 becomes 2.32.2\n\n{{{#DOTTOUNDERSCORE_VERSION#}}}\nAll dots replaced by underscores. Use #REPLACE([.],_,#VERSION#)# instead. E.g. 2.72 becomes 2_72\n\n{{{#DOTTODASH_VERSION#}}}\nAll dots replaced by dashes. Use #REPLACE([.],-,#VERSION#)# instead. E.g. becomes 6-9-0-28\n\n!!!Installation Directory\nThe base installation directory can be forwarded to the install and uninstall commands if the application’s installer supports installing to an alternate directory. This directory string is created either using install directory detection or by appending the installation directory configured in config.ini with the application name (section name).\n\n{{{#INSTALL_DIR#}}}\nIf the install directory (using the ''instdir'' configuration value) is detected, ''#~INSTALL_DIR#'' is replaced with that value. Otherwise, the ''install_dir'' as configured in config.ini plus the application name is used.\n\n
AppSnap has a simple GUI which simplifies the install process. It can also be used on the command line and in scripts.\n\nThe command line usage is as follows:-\n\n<html>\n<pre>\nGlobal functions\n-h This help screen\n-c List all application categories\n-l List supported applications\n -f &lt;Category&gt; Filter list by category\n -s &lt;String&gt; Filter list by string\n-U Update AppSnap and database\n -t Only check for updates\n\nApplication specific functions\n-n <Name> Application names, comma separated or * to filter\n -f &lt;Category&gt; Filter applications by category\n -s &lt;String&gt; Filter applications by string\n\n -d Download selected applications\n -v Display download status\n -t Test download only\n -g Get latest version (Default)\n -i Download and install selected applications (implies -d)\n -u Upgrade selected applications (implies -i, -x if not upgradeable)\n -x Uninstall selected applications\n</pre>\n</html>
!!!New Applications\n* ''Internet'' : [[Azureus|]], [[Gaim|]], [[Miranda|]], [[Thunderbird|]], [[WinSCP|]]\n* ''Entertainment'' : [[CDex|]], [[Songbird|]], [[VideoLAN|]]\n* ''Productivity'': [[Audacity|]], [[BurnAtOnce|]], [[Nvu|]], [[Vim|]]\n* ''Utilities'' : [[AutoHotKey|]], [[CCleaner|]], [[ClamWin|]]\n\n!!!GUI Enhancements\n* Replaced install/uninstall buttons with a nice toolbar.\n* Added buttons to download and upgrade applications.\n* Added an update database button that gets latest version of db.ini from SVN.\n* AppSnap can now reload the configuration by clicking the reload button.\n* All installed applications can be filtered by selecting the 'Installed' category in the dropdown menu.\n* Increased default width and height of GUI to fit toolbar and more applications.\n\n!!!CLI Enhancements\n* Update database with the latest version of db.ini from SVN using -U.\n* Filter all installed applications using filter -f Installed.\n\n!!!Internal Improvements\n* AppSnap now remembers the application versions that it installs.\n* Older versions of an application's installer are now deleted when a newer version is downloaded.\n* Details about adding new entries to the database can now be found in DB.txt.\n* Added referer when downloading applications. If not explicitly specified in db.ini, the scrape URL is used as the referer.\n* Download URL is now optional and defaults to the scrape URL.\n* Added ~DASHTODOT_VERSION to convert 1-1-1 versions to 1.1.1.\n* Added ~MAJOR_VERSION to convert 3.8 to 3.\n* Simplified process.get_width().\n\n!!!Bug Fixes\n* Fixed bug where file version filtering algorithm was failing if the latest version had fewer digits than a previous version. E.g. For Firefox, 2.0 had two digits compared to version with four digits.\n* Fixed bug where HTTP response codes other than 200 were being treated as failed. This has been changed to codes >= 300.\n* Fixed bug in uninstall code where spurious \s was being introduced into the uninstall command string causing uninstalls to fail.\n* Added a Yield() during installs to update the progress bar after a download.\n* Fixed GUI resize code to fit list and outline in window.\n* Updated scrape URL for Firefox.\n\n
!!!New Applications\n* ''Entertainment'' : [[iTunes|]]\n* ''Internet'' : [[uTorrent|]], [[Google WebAccelerator|]], [[Xming|]]\n* ''Productivity'' : [[AbiWord|]], [[Google Desktop|]], [[Paint.NET|]], [[PDFCreator|]], [[Picasa|]]\n* ''Utilities'' : [[Command Prompt Here|]], [[Stickies|]]\n* ''Development'' : [[ActivePerl|]], [[InnoSetup|]], [[NSIS|]], [[Python|]], [[PyCurl|]], [[PyYAML|]], [[wxPython|]], [[XAMPP|]]\n\n!!!GUI Enhancements\n* Checked applications are now unchecked as they are successfully installed or uninstalled. If the install/uninstall fails for any reason, the application will remain checked.\n\n!!!Internal Improvements\n* As recommended by R. Francis Smith, new applications can be added or existing applications modified by making an entry in userdb.ini. This way, changes made by the user are not lost through database updates.\n* Added support for MSI packages.\n* Added support for applications which do not disclose their versions such as Google ~WebAccelerator and Desktop.\n* Category and section sorts are now done case insensitively so that iTunes and uTorrent can show up in the right order.\n* Added ~DOTTOUNDERSCORE_VERSION to convert 2.72 versions to 2_72.\n* Changed default install directory in config.ini to environment variable %~ProgramFiles% which points to the Windows "Program Files" directory.\n* When run with -d, the GUI now logs debugging information to debug.log.\n\n!!!Bug Fixes\n* If install/uninstall failed for whatever reason, AppSnap still assumed that everything worked fine. We now check the return codes of the installer and fail if non-zero.\n* Reload function was not deleting all process objects which were retaining the configuration loaded previously.\n* Uninstallation was using the latest version of an application instead of the installed version during version text replacements. If installed version is not available, the latest version is used.\n\n
!!!New Applications\n* ''Internet'' : [[TightVNC|]]\n* ''Fun and Games'' : [[BZFlag|]], [[Celestia|]], [[Stellarium|]], [[TuxPaint|]], [[TuxPaint Stamps|]]\n* ''Development'' : [[MySQL|]]\n* ''Productivity'' : [[Blender3D|]], [[DeepBurner Free|]], [[Dia|]], [[Gimp|]]\n* ''Utilities'' : [[Ant Renamer|]], [[KeePass|]]\n* ''Libraries'' : [[GTK+|]]\n* ''Entertainment'' : [[Juice Receiver|]]\n\n!!!Internal Improvements\n* Added support for zipped installers. AppSnap now extracts the ZIP and then executes the installer.\n* All background actions are now performed in a separate thread to prevent the AppSnap GUI from locking up.\n\n!!!Bug Fixes\n* ~SourceForge just rolled out new changes which broke all applications hosted with them. All impacted application scrape and download ~URLs updated.\n* Fixed bug where AppSnap GUI was crashing in Windows 2000 since the install icon was not available in shell32.dll. Issue was not seen on XP and 2003 which had added a whole bunch of new icons.\n* Fixed a bug where ~URLs with ?, & or = were returning 404 errors by ~PyCURL.\n* Fixed bug of failed downloads being returned as successful in the GUI.\n* Fixed Paint.NET and Picasa version scraping.\n\n
!!!New Applications\n* ''Entertainment'' : [[foobar2000|]], [[KMPlayer|]]\n* ''Productivity'' : [[EverNote|]], [[Foxit Reader|]]\n* ''Utilities'' : [[ObjectDock|]], [[ShellEnhancer|]], [[Unlocker|]]\n\n!!!GUI Enhancements\n* Bulgarian translation has been added thanks to Momchil Bojinov.\n\n!!!Internal Improvements\n* The latest AppSnap database is now procured from which will soon host a web-based application that will simplify managing the application list. AppSnap will provide it's version number to ensure it only receives applications supported by that version.\n\n!!!Bug Fixes\n* Fixed a bug ([[issue 28|]]) where ZIP directory structure was not being extracted correctly.\n* Fixed pre and post uninstall which were being ignored for ZIP files without an embedded installer.\n* Uninstalling a zipped application was not removing it from the installed applications list.\n\n!!!Scrape Fixes\n* Fixed Paint.NET download filename, installer and uninstall.\n* Renamed Gaim to Pidgin and adjusted all scrape details accordingly.\n* Fixed ImageMagick version regex.\n* Fixed scrape and download URLs for Adobe Reader.\n* Fixed Yahoo Messenger version regex.\n* Fixes from Pengman\n** Fixed Gimp installer filename, moved from .zip to .exe.\n** Fixed K-Lite Mega Codec Pack scrape URL.\n** Fixed Tortoise SVN regex and download filename.
!!!New Applications\n* ''Development'' : [[Py2Exe|]], [[wxPython Documentation|]]\n* ''Fun and Games'' : [[Battle for Wesnoth|]], [[Tremulous|]]\n* ''Internet'' : [[Google Talk|]], [[Maxthon|]], [[Opera|]], [[Skype|]], [[X-Chat|]], [[Yahoo Messenger|]]\n* ''Libraries'' : [[K-Lite Mega Codec Pack|]], [[OpenSSL|]]\n* ''Productivity'' : [[DVD-Flick|]], [[ImgBurn|]], [[Inkscape|]]\n* ''Utilities'' : [[ImageMagick|]], [[Launchy|]], [[RocketDock|]], [[Synergy|]]\n\n!!!GUI Enhancements\n* Brand new look and feel sporting a vertical layout and colors.\n* Added the Upgradeable category that lists all installed applications with available upgrades.\n* AppSnap now displays download progress information.\n* Applications can now be filtered by name based on a user specified string.\n* The CLI can now filter applications by category as well as user specified strings, both for listing as well as to perform application specific actions.\n* Added a bug report button to simplify reporting problems.\n\n!!!Internal Improvements\n* Support for parallel downloading in order to make best use of the available connection.\n* AppSnap now caches the version information obtained by scraping for a user configurable time limit (default 2 days) after which the information needs to be downloaded again.\n* Intelligent Python based build system to simplify packaging AppSnap.\n* Installer is now capable of detecting and uninstalling older versions. AppSnap can now be added to its own database.\n* Installer now deletes only installed files thus preserving installed.ini, userdb.ini and the cache directory.\n* Installer now supports silent uninstallation.\n* AppSnap source is now distributed in a ZIP archive by the installer.\n* Added ~MAJORMINORSUB_VERSION in order to support ~ImageMagick uninstallation.\n* Added a test flag to the CLI to verify that an application is downloadable without having to download the entire installer.\n\n!!!Bug Fixes\n* Fixed bug in "Update DB" where a failed DB download was wiping out the current DB and killing AppSnap.\n* Installer filenames which do not contain any version information are now redownloaded if cache timeout has expired (configured in config.ini) since we have no way to know if the file has changed.\n* Obsolete sections in installed.ini are now filtered out.\n* Added some more error checking to update DB.\n* AppSnap no longer displays a console window during installs/uninstalls.\n* Fixed bug in CLI that was causing crash if latest version detection failed.\n* Fixed bug in uninstallation where quotes were being lost when uninstaller had upper case characters.\n\n!!!Scrape Fixes\n* Fixed Adobe Reader scraping and download link.\n* Fixed Firefox and Thunderbird download links, ftp was not working.\n* ~WinSCP version scraping now done on Sourceforge.\n* Dia's version search now includes pre-releases - e.g. 0.96-pre4\n* uTorrent now has sub-version numbering - e.g. 1.6.1\n* Fixed ~InnoSetup and Azureus version regex.\n\n
!!!New Applications\n* ''Development'' : [[poEdit|]], [[Tortoise CVS|]], [[Tortoise SVN|]]\n* ''Entertainment'' : [[Democracy Player|]]\n* ''Libraries'' : [[Ghostscript|]]\n* ''Productivity'' : [[Scribus|]], [[Sodipodi|]], [[VirtualDub|]], [[wikiDPad|]], [[ZuluPad|]]\n* ''Utilities'' : [[Ditto|]], [[TaskSwitchXP|]], [[Universal Extractor|]], [[VirtuaWin|]]\n\n!!!GUI Enhancements\n* AppSnap is now localizable.\n* A French translation has been added courtesy Gonzague Dambricourt.\n* A Danish translation has been added courtesy Søren Pedersen.\n* Moved text "Filter" into the filter box to save space on the GUI.\n* Added a "Help" icon to the GUI which opens the HTML documentation.\n\n!!!Internal Improvements\n* Zipped applications with no installer can now be deployed.\n* AppSnap maintains a copy of the database in the cache directory since it is an essential part of the application repository.\n* Added preinstall, postinstall, preuninstall and postuninstall directives to allow executing custom commands to assist the install/uninstall process.\n* In db.ini, the following are now optional: instparam, chinstdir, uninstall and uninstparam.\n* AppSnap now limits the number of threads spawned in parallel depending upon the number of network connections configured in config.ini.\n* Internal code cleanup : move numeric limits to, return unique return values depending on error\n* Moved entire AppSnap documentation into a ~TiddlyWiki based appsnap.html. Deleted entire "docs" folder and updated and appsnapsetup.nsi to package this HTML file instead of the text files.\n\n!!!Bug Fixes\n* Fixed a bug where latest.ini creation was failing on a fresh install since the cache directory did not exist. (Reported by gabmatrix). Also added error checking for all file writes.\n* Fixed a bug where update DB on the GUI was not reloading correctly.\n* Fixed font bug reported by gabmatrix ([[issue 25|]]) where AppSnap was loading the wrong font for the application name if Office 2007 was installed.\n* Fixed a drawing bug reported by gabmatrix ([[issue 22|]]) where application details were disappearing on choosing a different category.\n* Fixed a regex bug in uninstall where msiexec calls were getting garbled.\n* Fixed a bug where writes to latest.ini were not being serialized.\n* ~PyCurl is now instructed to try all proxy authentication schemes instead of NTLM only.\n* Fixed a bug where the proxy server information was not being parsed correctly if the port was skipped or protocol information was specified.\n* Fixed a bug with hyperlinks ([[issue 21|]]) not working correctly on some configurations.\n* Fixed bug in unzip where creating a new directory was failing if the directory was in use or already existed.\n\n!!!Scrape Fixes\n* Fixed ~DVD-Flick to install to defined directory.\n* Fixed Songbird scrape and filename.\n* Fixed ~K-Lite scrape.\n* Fixed ~Blender3D version search to exclude release candidates.\n* Fixed Paint.NET scrape since it is now a zipped installer.\n
!!!New Applications\n* ''Development'' : [[Lxml|]]\n* ''Entertainment'' : [[DVDx|]]\n* ''Internet'' : [[Copernic Agent Basic|]], [[Feedreader|]], [[Google Earth|]], [[K-Meleon|]], [[RSSOwl|]]\n* ''Productivity'' : [[Copernic Desktop Search|]], [[KompoZer|]]\n* ''Utilities'' : [[WinDirStat|]]\n\n!!!GUI Enhancements\n* AppSnap now lists all applications being processed in the ''Processing'' category. This shows only those applications that have active tasks in progress and filters out the rest thus providing a clearer view of what's going on without having to scroll over unselected applications.\n* Added category ''Not Installed'' to list applications that aren't installed.\n* Downloads in progress can now be canceled per application.\n* AppSnap now allows uninstalling all applications that register with the ''Add/Remove Programs'' facility. All uninstallable applications are visible under the new ''Removable'' meta category.\n* All supported applications are now loaded after the GUI has loaded, thus providing faster user feedback on execution.\n\n!!!Internal Improvements\n* AppSnap now detects the installed version of applications if available in the registry.\n* For applications that do not provide installed version information in the registry, AppSnap continues to maintain a record in installed.ini. However, if the application is no longer detected in the registry as installed, it is removed from installed.ini.\n* AppSnap can now search for uninstall information in the registry. This is especially useful for applications that use ~MsiExec based installers since they tend to change their ~GUIDs through releases causing uninstall issues.\n* AppSnap now looks in ~HKEY_CURRENT_USER if ~HKEY_LOCAL_MACHINE does not contain uninstall information.\n* ~MsiExec now uninstalls with the /x flag if the application has ~MsiExec /i as the uninstall command.\n* AppSnap now ships with msvcp71.dll to support Vista systems.\n* Added ~DOTTODASH_VERSION text replacement to support Xming version string.\n* Default cache location is now in the %ALLUSERSPROFILE% directory and resolves to ''\sDocument and Settings\sAll Users\sApplication Data\s~AppSnap\scache''. This way, all users have access to the AppSnap cache.\n* The installed.ini file is now maintained in the %ALLUSERSPROFILE% directory under ''\sDocument and Settings\sAll Users\sApplication Data\s~AppSnap''. This way, system specific information (installed applications) are stored on the system and not within AppSnap, which could be running on a USB key.\n* The installer now migrates the older cache and installed.ini file to the new location described above.\n\n!!!Bug Fixes\n* Fixed [[issue 31|]]. The CLI was crashing in the threading module.\n* Fixed a bug where an empty uninstparam was appending bad data to the uninstall string.\n* Uninstall no longer lowercases the command. This was breaking the Stickies uninstaller.\n* Fixed a hang that was occurring when an application was quickly clicked multiple times.\n* The cached db.ini was not being updated through AppSnap upgrades.\n\n!!!Scrape Fixes\n* Updates to support installed version detection\n** ''Development'' : ~ActivePerl, ~InnoSetup, NSIS, poEdit, Python, ~Py2Exe, ~PyCurl, ~PyYAML, Tortoise CVS, Tortoise SVN, wxPython, wxPython Documentation, XAMPP\n** ''Entertainment'' : Foobar2000, Juice Receiver, Miro, Songbird, ~VideoLAN\n** ''Fun and Games'' : ~BZFlag\n** ''Internet'' : Azureus, Firefox, Miranda IM, Opera, Pidgin, Putty, Skype, Thunderbird, Tight VNC, uTorrent, ~WinSCP, ~X-Chat, Xming\n** ''Libraries'' : Ghostscript, GTK+, ~K-Lite Mega Codec Pack, ~OpenSSL\n** ''Productivity'' : Abiword, Adobe Reader, Audacity, ~DeepBurner Free, Dia, ~DVD-Flick, ~EverNote, ~FreeMind, Gimp, Inkscape, Paint.NET, ~PDFCreator, Picasa, Scribus, Sodipodi, Vim, ~WikiDPad\n** ''Utilities'' : Ant Renamer, ~AutoHotKey, ~ClamWin, Clump, Ditto, ~ImageMagick, ~KeePass, Launchy, Rocket Dock, ~SevenZip, Stickies, ~TaskSwitchXP, Universal Extractor, Unlocker, ~VirtuaWin\n* Updates to support registry searched uninstalling\n** ''Development'' : ~ActivePerl, ~InnoSetup, Python, Tortoise SVN, wxPython, wxPython Documentation\n** ''Entertainment'' : iTunes\n** ''Fun and Games'' : ~BZFlag\n** ''Internet'' : Firefox, Google Talk, Google ~WebAccelerator, Maxthon, Opera, Skype, Thunderbird, ~WinSCP, ~X-Chat\n** ''Libraries'' : Ghostscript, GTK+\n** ''Productivity'' : Abiword, Adobe Reader, Audacity, ~DeepBurner Free, ~EverNote, ~FreeMind, Gimp, Paint.NET, Picasa, ~PDFCreator, Scribus, Sodipodi, Vim, ~WikiDPad\n** ''Utilities'' : Ant Renamer, Command Prompt Here, ~ImageMagick, Launchy, Stickies\n* Fixed ~AutoHotKey scrape and download.\n* Fixed Blender3d scrape and download.\n* Fixed Dia filename from .zip to .exe.\n* Fixed Maxthon scrape and download.\n* Renamed Democracy Player to Miro.\n* Fixed ~SevenZip version.\n* Fixed uTorrent scrape and filename.\n* Fixed ~KMPlayer download.\n* Fixed GTK+ filename from .zip to .exe.\n* Fixed Xming version.\n* Fixed ~PDFCreator version.\n* Fixed ~FreeMind version and filename.\n* Fixed Inkscape version.\n* Fixed Ditto scrape and version.\n* Fixed Launchy version and filename.\n* Fixed Notepad++ version.\n* Fixed Vim version.\n* Removed ~ShellEnhancer since website is down.\n* Replaced package Nvu with ~KompoZer.
!!!New Applications\n* From Gabriel Cossette\n** ''Development'' : [[WinMerge|]]\n** ''Entertainment'' : [[Exact Audio Copy|]], [[Media Player Classic|]], [[Winamp|]]\n** ''Libraries'' : [[AC3Filter|]], [[FFDShow|]], [[QuickTime Lite|]], [[Real Alternative|]]\n** ''Productivity'' : [[InfraRecorder|]], [[PDF-XChange Viewer|]], [[VirtualBox|]], [[XnView|]]\n** ''Utilities'' : [[AutoIT|]], [[FlashGet|]], [[IDrive|]], [[Process Explorer|]], [[Process Monitor|]], [[TeraCopy|]], [[Undelete Plus|]]\n\n!!!Bug Fixes\n* AppSnap was crashing if ''\s\s~HKEY_CURRENT_USER\sSoftware\sMicrosoft\sWindows\s~CurrentVersion\sUninstall'' didn't exist. This has been fixed.\n* Translated strings for French were not loading correctly and crashing AppSnap.\n* Fixed an exception that occurred if userdb.ini had an application with no uninstall information.\n* The toolbar was not getting disabled while processing applications.
!!!GUI Improvements\n* Changed application font to Verdana.\n* GUI has been widened and can be expanded further.\n\n!!!CLI Improvements\n* The CLI now displays cumulative download status with the -v flag.\n* The CLI can now dump the AppSnap database in CSV format using the undocumented -V flag. This was required to export db.ini to Zoho Creator where the database is now being maintained.\n* The undocumented -D flag was added to the CLI to allow updating the database without having to update the code itself. This is only useful during development where an update would overwrite required code changes.\n* The undocumented -t flag now executes a long list of tests to verify AppSnap internal functionality. These tests are maintained in and utilize the [[PyUnit|]] module.\n\n!!!Internal Improvements\n* AppSnap now supports the installation of Firefox and Thunderbird add-ons. All add-ons are installed as global extensions so that all users can inherit them.\n* The AppSnap database is now being maintained in Zoho Creator. The [[Applications]] page now lists supported applications directly from Zoho. New applications can also be [[added|Add Application]] to the database for inclusion. This also means that any scrape fixes or new applications will no longer be tracked in these changelogs.\n* AppSnap can now detect the install directory of an application using the ''instdir'' flag in the configuration. As of now, this searches the uninstall location in the registry, just like ''instversion''.\n* Version replacement has been greatly enhanced with ''#VERSION[x]#''. This allows AppSnap to pull out any chunk of the version string, similar to Python list slicing.\n* Another version replacement enhancement, ''#REPLACE(x,y,z)#'' has been added. This allows for more generic replacements and supersedes #~DOTLESS_VERSION#, #~DOTTODASH_VERSION#, etc.\n* The self-update mechanism has been improved to utilize etags to speed up the comparison process.\n* AppSnap now retries three times before giving up for latest version checking and downloads.\n* Enabled Curl support for gzip/deflate on web connections. This should speed up downloads from servers that support either of these compression methods.\n* Enhanced Curl wrapper to get timestamps and etags and for files on the web.\n* Cleaned up string concatenation across the board.\n* Enhanced the CLI to display applications that have broken database entries clearly. This is only displayed in test mode.\n* Test mode checks online for latest version even if this information is cached.\n\n!!!Bug Fixes\n* Fixed a bug where AppSnap was crashing due to an unresolved exception in Thanks to Søren for the patch.\n* Fixed a crash in download testing when a file could not be removed since it was in use.\n* Another bug fix from Søren, AppSnap was crashing when trying to save installed version information to installed.ini when the version information was "Not available". This wasn't working for Danish since it translates to a unicode string that ~ConfigParser was unable to write and read.\n* Fixed a bug where SSL connections were failing since no CA certificate was available to verify the host's certificate.\n* Fixed a bug in test mode where application installers were not being downloaded if they were already cached.
!!!New Applications\n* ''Fun and Games'' : [[Battle Tanks|]], [[ComicRack|]]\n* ''Internet'' : [[Flock|]], [[Gizmo Project|]], [[SmartFTP|]]\n* ''Productivity'' : [[CDBurnerXP|]], [[GnuCash|]], [[IrfanView|]], [[IrfanView Plugins|]], [[OpenProj|]], [[Pictomio|]]\n* ''Utilities'' : [[CodecInstaller|]], [[CubicExplorer|]], [[ExplorerXP|]], [[FreeCommander|]], [[iWonder Stick|]], [[Jungle Disk|]], [[MyUninstaller|]], [[SMOz|]], [[Taskbar Shuffle|]]\n* From Gianluigi Zanettini\n** ''Internet'' : [[eMule|]]\n** ''Productivity'' : [[Sunbird|]]\n** ''Utilities'' : [[Avira AntiVir|]]\n\n!!!GUI Enhancements\n* The GUI now displays a dialog with exception details if it crashes. This provides the user with relevant feedback instead of not starting up at all, or dying suddenly. Debug.log is also automatically saved if AppSnap crashes.\n* German translation has been added thanks to Willy Dumaz.\n* Russian translation has been added thanks to Didenko EV.\n* The toolbar now widens to fill the allocated space.\n* Widened category dropdown to fit Russian strings.\n\n!!!Internal Improvements\n* The backend has been enhanced to display ''Not Available'' for the installed version if an application is installed but version information can not be detected.\n* DB.ini now supports renaming downloaded files ([[issue 42|]]) if the download file is not very descriptive.\n* AppSnap now allows disabling silent installation of all applications by setting //silent_install = False// in config.ini. This allows for fine grained control over the install and uninstall process. Silent installation is enabled by default.\n* AppSnap can now detect versions split into multiple parts ([[issue 51|]]). For example, 1.0.4 Build 56528 can be detected as 1.0.4-56528. Details are in the [[Configuration Options]] page under the version string section.\n* Added undocumented -w flag to CLI to generate [[application list|Applications]] in ~TiddlyWiki format.\n\n!!!Bug Fixes\n* [[Issue 19|]] has been fixed somewhat. If the icons cannot be loaded (due to the wxWidgets bug described in the issue) then the toolbar is rendered without the icons. Everything is functional except for the missing icons.\n* Fixed a crash caused by opening invalid nodes in the registry.\n* Fixed a bug where older versions of files were not being deleted in all cases.\n* Fixed a bug where application download was failing if latest version was not loaded yet.\n* Fixed a crash that occurred when the help button was pressed.\n\n!!!Scrape Fixes\n* Added //rename// for the following applications to identify downloaded versions and preventing redownloads\n** ''Entertainment'' : ~KMPlayer\n** ''Internet'' : Copernic Agent, Skype, uTorrent\n** ''Productivity'' : Foxit Reader, ~PDF-XChange Viewer, ~XnView, ~ZuluPad\n** ''Utilities'' : ~CodecInstaller, ~IDrive, ~MyUninstaller, Process Explorer, Process Monitor, Stickies, ~TeraCopy, Undelete Plus\n* Fixed Azureus version and filename\n* Fixed ~FileZilla version, filename and uninstall, added instversion\n* Fixed Songbird scrape, version, download and filename\n* Fixed ~Blender3D scrape\n* Fixed ~KompoZer version and filename\n* Fixed Paint.NET filename and installer\n* Fixed wikiDPad version and filename\n* Fixed Process Explorer version\n* Fixed Lxml version and instversion\n* Fixed Python scrape, version and uninstall\n* Enabled ~ShellEnhancer\n* Fixed Firefox upgrade\n* ~CCleaner now downloads the slim version which does not contain the Yahoo Toolbar\n* Fixed ~EverNote scrape url\n* Fixed ~QuickTime Lite scrape and download url\n* Fixed Feedreader download url\n* Fixed ~ComicRack website, scrape and download url\n* Fixed Songbird scrape, version and filename\n* Fixed ~CodecInstaller download url\n* Fixed iTunes scrape and download url
!!!New Applications\n* ''Entertainment'' : [[CD Art Display|]], [[Floola|]], [[iPodifier|]], [[Joost|]], [[MediaPortal|]], [[Screamer Radio|]], [[TVersity|]]\n* ''Internet'' : [[Flash Player|]], [[Flash Player Plugin|]], [[Shockwave Player|]]\n* ''Libraries'' : [[Java JRE|]]\n* From Thien Rong\n** ''Development'' : [[ActiveGrid Studio|]], [[Bouml UML|]], [[Cavaj|]], [[NetBeans|]], [[RubyStack|]]\n** ''Entertainment'' : [[MediaCoder|]], [[MediaCoder Audio Edition|]], [[MediaCoder iPhone Edition|]]\n** ''Internet'' : [[ChartNexus|]], [[FreeCharts|]], [[Gigaget|]], [[OpenKapow RoboMaker|]], [[POP Peeper|]]\n** ''Libraries'' : [[MediaCoder Codecs Pack|]], [[Microsoft .NET Framework 1.1|]], [[Microsoft .NET Framework 2.0|]], [[Microsoft .NET Framework 3.0|]], [[Microsoft .NET Framework 3.5|]]\n** ''Productivity'' : [[Boxmaker|]], [[PhotoShape|]], [[PhotoWipe|]], [[Wink|]]\n** ''Utilities'' : [[AutoVer|]], [[Cobian Backup|]], [[DriveImage XML|]], [[MagicDisc|]], [[XNeat|]], [[ZSoft Uninstaller|]]\n* From Willy Dumaz\n** ''Fun and Games'' : [[Armagetron Advanced|]], [[Armagetron Server|]], [[Cannon Smash|]], [[FooBillard|]], [[Freeciv|]], [[Frets on Fire|]], [[ManiaDrive|]], [[PlaneShift|]], [[Sauerbraten|]], [[Scorched3D|]], [[Spring|]], [[Wormux|]]\n\n!!!GUI Improvements\n* The GUI now checks for updates on startup and notifies the user accordingly. This can be disabled in config.ini.\n\n!!!Internal Improvements\n* AppSnap can now update itself by downloading the latest source. This will make it much easier and faster for existing users of AppSnap to update their installation.\n* AppSnap now supports synchronizing with multiple application database sources.\n* The CLI can now just check for updates if the -U flag is specified with -t.\n* Added ~MINOR_VERSION and ~SUB_VERSION [[text replacements|Text Replacements]].\n* AppSnap can now handle multipart version strings when detecting installed versions of applications.\n* Cleaned up and reorganized AppSnap source to facilitate updating AppSnap from within itself.\n* Enhanced AppSnap build process to allow building from any directory.\n* Installer no longer includes the source .ZIP since the appsnaplib directory contains most of the relevant code.\n* Undocumented -w now displays [[Application list|Applications]] output with statistics.\n\n!!!Bug Fixes\n* Fixed [[issue 34|]] where AppSnap was reporting the first installed instance of an application instead of the latest installed version.\n* AppSnap no longer displays applications with unavailable latest or installed version information as //Upgradeable// as described in [[issue 55|]].\n* Fixed [[issue 56|]] where AppSnap was crashing if the installed version information was missing.\n* Fixed a minor bug in the version processing code that handled version strings with letters.\n* Fixed a bug in the build process that was preventing command line options from working.\n* A missing or corrupt db.ini no longer crashes AppSnap. In such a situation, an update will retrieve the latest db.ini restoring AppSnap functionality.\n* A corrupt userdb.ini no longer crashes AppSnap either.\n* Fixed a bug in the GUI that was crashing AppSnap if an uncaught exception was encountered.\n\n!!!Scrape Fixes\n* Fixed Paint.NET download URL.\n* Fixed ~AutoIT version.\n* Fixed ~K-Lite Mega Codec Pack scrape url.\n* Fixed ~PDF-XChange Viewer scrape url.\n* Fixed Skype scrape url.\n* Fixed Songbird scrape url and version.\n* Fixed ~QuickTime Lite scrape url and version.\n* Fixed ~VMWare Server scrape url.\n* Fixed ~PyCurl version.
!!!GUI Improvements\n* The application filter now includes the description field in searches as recommended in [[issue 74|]].\n* Adjusted dropdown for new application categories.\n\n!!!CLI Improvements\n* Cleaned up CLI code to be more organized.\n* Undocumented -V flag can now export specific applications using the -n flag. This is helpful when adding new tested applications to the AppSnap database.\n* Undocumented -a flag provides a wizard to add applications and addons, greatly speeding up and simplifying the application adding process.\n* Undocumented -F flag simplifies process to fix broken applications.\n\n!!!Internal Improvements\n* Re-categorized all applications in a new hierarchical structure.\n* Added Dutch translation thanks to Jürgen Baute.\n* The system path location, used to store system specific information such as installed.ini, can now be customized in config.ini.\n* Setting cache_timeout to 0 in config.ini now deletes installers after a successful installation (effectively disabling installer caching).\n\n!!!Bug Fixes\n* Fixed a bug where MSI installed applications were not being uninstalled.\n* Fixed an [[issue|]] that was causing AppSnap to crash when parsing the registry on startup.\n* Fixed a crash when os.popen() was throwing an ~IOError.\n* Fixed a bug in version replacement where letters in the version string were being treated as delimiters.\n* Fixed an [[issue|]] where AppSnap was crashing due to spurious characters in the proxy port.\n* Fixed poor GUI performance when Upgradeable category is selected.\n* Fixed an [[issue|]] where AppSnap was not detecting the correct installed version after an application was upgraded.\n* AppSnap was crashing when an application name had a - in it. For example: 7-Zip.\n* Fixed a [[bug|]] that was crashing AppSnap if the userdb.ini was corrupt.\n* Uninstaller was not deleting cacert.pem and appsnap.html. This has been fixed.\n* GUI upgrade had a bug where an application that supported upgrading without uninstalling was still being uninstalled. This was causing [[issue 88|]] and has been fixed.\n* Fixed a bug in version replacement where ''#VERSION[x]#'' could not be used more than once in the same string.\n* Fixed symptoms of an [[issue|]] that was causing AppSnap to crash when an application was clicked.\n* Fixed a bug where NSIS based installers were leaving behind the uninstaller executable when uninstalled. This was causing the Inkscape upgrade to fail. AppSnap now cleans up these files.\n* Fixed a bug where install version information was being lost for applications extracted from a ZIP file.\n* Fixed an [[issue|]] by downloading latest version before uninstalling the installed version in an upgrade.\n* Fixed an [[issue|]], an error case was not being caught.
There are two strategies to manage application version and download information:-\n\n1. The application developer publishes the information in some common format that can be picked up by management systems like AppSnap. The [[PAD system|]] already exists as an example of this case and many popular websites use this format or some other format to collect application information. Eclipse components follow this method by publishing an XML file that Eclipse can parse. The pro is that it is easy to collect this information since each application developer publishes this information. The con is that many developers don't use any such mechanism. I'm also unsure if there is any standardization in this area.\n\n2. The management system has to manually collect information for each application. This approach is widespread in the Linux world, where each distribution maintains its own database of supported applications. This approach is very resource intensive in terms of adding to and maintaining the database which can quickly grow beyond the capacity of a few part time contributors. Linux does this well but the amount of time devoted to package management could be better spent elsewhere, assuming there were another way to achieve the same great user experience.\n\nThe Windows world does not have any central authority for applications. Several websites like [[|]], [[FileHippo|]], [[Version Tracker|]], etc. have attempted to solve this problem. Some have gone a step further and created a desktop application that talks to their database and recommends updates. Their databases are already large and being actively maintained by their paid staff so the application automatically inherits a very strong backend. Some like ~FileHippo only provide links to the applications and leave it to the user to manually download and install each. Others like Version Tracker have published paid software to do this. These websites have the clout to squash applications like AppSnap since they are established and well known but for whatever reason, their desktop applications are not as feature rich or available for free.\n\nAppSnap approaches this problem in a different way. Instead of expecting application developers to publish information in a particular format, we can parse their websites, which they inevitably keep up to date, and figure out the latest release. This way, developers don't have to do anything different from what they already do. Secondly, I don't think it makes sense to update the database every time an application releases a new version. It is too much effort that takes away from improving the application itself. Hence, the AppSnap database stores *how* to find out the version information and not the actual information itself. Agreed, the database breaks from time to time. The developer may change his website layout, URL or even the version format requiring a change in AppSnap's database. Normally, these things don't happen as often as application updates so quite a bit of effort is saved in database maintenance.\n\nThe AppSnap approach is not without its problems though. Some applications deliberately make the download URL or version information difficult to access programmatically. Try finding MSN Messenger's download URL or Google Talk's version information. Perhaps they want to avoid direct linking that circumvents their website and potential ad revenue. Whatever their reasoning, this makes it hard to add some applications. For the most part, AppSnap is successful and the database is growing and so is the user base.\n\nThe whole idea behind creating AppSnap was to see if it was possible to leverage what application developers post on their websites, regardless of the inconsistency. I didn't have the enthusiasm to keep a database up to date, especially since there already exist other solutions that employ that approach, so I made an application that is as smart as possible to do things on its own. And it works well. I've not had to update the database too often and that's a good sign. Over time, AppSnap will get smarter and make the database maintenance chore even less of an issue.\n\nWhat I do plan on adding to AppSnap is the ability to synchronize with multiple database sources. Today, it can only work with one, but eventually, anybody can publish their own database and the end user has the choice to decide which ones he wants to use. Also, the AppSnap [[.INI file format|AppSnap Database]] is well documented and can be published by developers if they choose to.\n\nFeel free to comment on this issue. I've elaborated on the philosophy of AppSnap but it will inevitably move towards what is most effective and useful to users.