Upgrade private plugin without deleting files?

GitHub Plugins With Automatic Upgrades is a highly detailed article I’m referring to related to a project I have which will require automatic (one button) upgrades for both GitHub hosted + Website hosted plugins.

The idea is very simple. During the upgrade process, your code modifies the WordPress internal data structures to look enough like the WP repository to allow the automated upgrade to occur.

A good way to approach this is do download the GitHub code + get it working.

Then add your code into the working GitHub code skeleton.