diff --git a/electrum/gui/qt/plugins_dialog.py b/electrum/gui/qt/plugins_dialog.py index 7bda79cb4..83b88ae85 100644 --- a/electrum/gui/qt/plugins_dialog.py +++ b/electrum/gui/qt/plugins_dialog.py @@ -68,6 +68,10 @@ class PluginDialog(WindowModalDialog): install_button = QPushButton(_('Install...')) install_button.clicked.connect(self.accept) buttons.insert(0, install_button) + elif self.plugins.get_metadata(name).get('zip_hash_sha256') != zip_hash: + update_button = QPushButton(_('Update...')) + update_button.clicked.connect(self.accept) + buttons.insert(0, update_button) else: remove_button = QPushButton(_('Uninstall')) remove_button.clicked.connect(self.do_remove) diff --git a/electrum/plugin.py b/electrum/plugin.py index 068125f22..377b3fe93 100644 --- a/electrum/plugin.py +++ b/electrum/plugin.py @@ -403,6 +403,8 @@ class Plugins(DaemonThread): self.config.set_key(f'plugins.{name}.enabled', []) def install_external_plugin(self, name, path, privkey, manifest): + # uninstall old version first to get rid of old zip files when updating plugin + self.uninstall(name) self.external_plugin_metadata[name] = manifest self.authorize_plugin(name, path, privkey)