My mid-1990's employer had a solution for the installer dilema.
All of our VB programs, com objects and assets were loaded into a MS SQL database table. When our generic launcher program started it would query the database, figure out what app the customer had purchased and downloaded the necessary objects (if the cache was stale). If we accidentally uploaded a bad version, a rollback to a previous version only took a few administrative clicks.
A good part of my job was to make sure that the companies domain structure and network settings were sensible.
No disagreement about how the web is still easier/cheaper to administer from a centralized point.
I asked a friend about why their company could not keep their devices up to date for more than two or three years.
Basically, they did not have long-term maintenance agreements in place for the underlying subcomponents. The subcomponents were filled with vendor coded firmware blobs. There was some desire to fix this going forward for marketing purposes, but little desire to go back in time to fix old devices that were short on support.