Since Notepad++ now hardcodes plugin list, it is not possible to push update to Plugin Admin without waiting for the next Notepad++ release.
Planned functionality:
Check a JSON file in repo for latest version information
If new version was detected, ask user if they want to attempt automatic update
Download latest zip update file to temp folder and verify its contents with RSA signature and public key (throw error if verification fails obviously)
Check if we can write to plugins directory, if not, start separate updater process as admin
Rename currently running plugin DLL to something else (that's Windows feature!) [if this fails, I guess it will have to ask user to close Notepad++)
Extract update zip to plugin directory (support both new and old plugin directory structures)
Notify user that update was successful, and new plugin version will be loaded on next Notepad++ launch
On next Notepad++ (and plugin) startup, plugin will delete old plugin versions waiting for deletion
Thoughts on this are welcome.
Basically it will be pretty similiar to WinGUP functionality, but differences are that it will rename running executable, and verify update using RSA signature and not just a checksum, so no forged updates will be accepted. (however Notepad++ is not really less secure here, since its list is in signed DLL that's verified before being loaded as well)
Over-engineering, idea abandoned. Plugins implementing independent update systems is not a good idea in the long run. In any case the unfinished updater code lays in the updater branch.
Since Notepad++ now hardcodes plugin list, it is not possible to push update to Plugin Admin without waiting for the next Notepad++ release.
Planned functionality:
Thoughts on this are welcome.
Basically it will be pretty similiar to WinGUP functionality, but differences are that it will rename running executable, and verify update using RSA signature and not just a checksum, so no forged updates will be accepted. (however Notepad++ is not really less secure here, since its list is in signed DLL that's verified before being loaded as well)