diff --git a/electrum/gui/qt/plugins_dialog.py b/electrum/gui/qt/plugins_dialog.py index 7b1e3a52f..ffaac4a19 100644 --- a/electrum/gui/qt/plugins_dialog.py +++ b/electrum/gui/qt/plugins_dialog.py @@ -67,6 +67,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 c2e5cd7dd..215e285c2 100644 --- a/electrum/plugin.py +++ b/electrum/plugin.py @@ -401,6 +401,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)