On Windows the solution for this is ClickOnce[1]. It's actually really well done, but I've only ever seen one program use it - Chrome[2].
[1] http://msdn.microsoft.com/en-us/library/t71a733d(v=VS.100).a... [2] https://www.google.com/chrome
[1] http://msdn.microsoft.com/en-us/library/t71a733d(v=VS.100).a... [2] https://www.google.com/chrome