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.
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.