You can quite easily create database interfaces in Python and there are a number of GUI libraries available. It is also quite simple to add into the code a pull mechanism that during start-up of the program checks for updates from a specific location such as a URL or Shared Drive, (hopefully with a timeout), and to pull those updates before continuing to load the program - this is generally considered more polite than pushing changes especially if the user is given the option to opt out of updates.
To push changes you will need a client process running all the time that lets you know that the user is online & connected and allows you to send or the remote process to pull the changes behind the users back as it were - this is refered to as push technology, and many consider it less polite and a possible security risk. There are a number of python libraries &/or programs that let you construct, or use, such processes such as RPyC, Pyro and XML-RPC, GRR is worth a look as well but fundimentally they will not be directly linked to an icon on the users desktop that does something - that will be a seperate item that you push out. The nice thing is that all of the above is a) Free and b) cross platform.
I personally am a fan of python because it makes this sort of functionality simple but just about any programming language can support such things & languages that rely on remote objects such as C#/Mono, Java & JavaScript will normally always stay updated to the latest as they fetch their code from the designated URLs but may result in code that cannot be run offline or when a specific server is down.
Microsoft provide a number of Windows tools in the distribution tools that allow you to push new software to machines, usually used primarily in the corperate environment and of course they all may introduce some security vunerabilities.
Of course the simplest answer is to make the icon a shortcut to a primarily server side application, possibly with some Java or JavaScript components, and just use the client as a GUI terminal for that code. In that case the language of choice is what does your server support.