I see only one ethical aspect here: when you (or your company) abuse the silent auto-update feature to change a "harmless" application into a malicious one, which first establishes a large crowd of happy users, and then causes some harm. For example, it could start spying on them (I did not invent this, this has happened in the past). However, this could also happen when your users have to install updates manually and you just "forget" to mention the new "spying feature", so the unethical aspect here is not the "silent auto-update feature", but the content of the specific update (or th fact it was not mentioned in the change log).
Hence I think the question for a silent auto-updater is not primarily a question of ethics. It is a question of necessary constraints to make sense and to make it work well. This involves aspects like
- security
- user perceiption
- backwards compatibility
- responsibility for trouble shooting (and I mean this in both directions, for bugs which are fixed by an auto-update, or issues which are introduced by one)
- communicating changes in the app
- and sometimes even legal aspects
which have to be balanced. Hence it depends a lot on the specific kind of application, the specific kind of updates, the kind of data managed by the application and also the organizational environment where the application runs.
Note that almost any web app does silently autoupdates. Companies like Facebook, Google, Microsoft or Amazon do regulary updates in the background or their major web apps, and you don't even notice (but this is also true for every smaller vendor's web app - users don't get a choice which version runs on the vendors server, and vendors rarely do different updates for different users). Also, most mobile apps do updates in the background (not completely silent, but almost unintrusive).
IMHO silent auto-updates make most sense when they restrict themselves to unintrusive changes like bug fixes. This makes sure that users are not stumbling about astonishing changes to the user interfaces. It also minimizes the risk of getting new bugs automatically, since new bugs are way more likely to occur in new features than in old ones. Updates which make changes to the UI which are not fully self-explanatory should be clearly advertised, telling the user what they get before they install the new version.
Be aware that any update does not only fix bugs, it can also introduce new ones (up to the point where the auto-updating does not work any more). Hence It also a good idea to provide a the option of manually installing an earlier version as a fallback in case that helps. That, however, works best when your application behaves backwards compatible. The update to a newer version shall not forbid to go back again to an earlier one because some data schema was changed in a way the older app cannot process the persistent data any more.