mirror of
https://github.com/ankitects/anki.git
synced 2025-09-24 00:36:38 -04:00
catch add-on deletion failure due to locked files in add-on folder
https://anki.tenderapp.com/discussions/add-ons/32676-2112
This commit is contained in:
parent
8a63b4712c
commit
9ce1f051cc
1 changed files with 13 additions and 3 deletions
|
@ -219,7 +219,9 @@ and have been disabled: %(found)s") % dict(name=self.addonName(dir), found=addon
|
|||
base = self.addonsFolder(dir)
|
||||
if os.path.exists(base):
|
||||
self.backupUserFiles(dir)
|
||||
self.deleteAddon(dir)
|
||||
if not self.deleteAddon(dir):
|
||||
self.restoreUserFiles(dir)
|
||||
return
|
||||
|
||||
os.mkdir(base)
|
||||
self.restoreUserFiles(dir)
|
||||
|
@ -236,8 +238,15 @@ and have been disabled: %(found)s") % dict(name=self.addonName(dir), found=addon
|
|||
continue
|
||||
zfile.extract(n, base)
|
||||
|
||||
# true on success
|
||||
def deleteAddon(self, dir):
|
||||
try:
|
||||
send2trash(self.addonsFolder(dir))
|
||||
return True
|
||||
except OSError as e:
|
||||
showWarning(_("Unable to update or delete add-on. Please start Anki while holding down the shift key to temporarily disable add-ons, then try again.\n\nDebug info: %s") % e,
|
||||
textFormat="plain")
|
||||
return False
|
||||
|
||||
# Processing local add-on files
|
||||
######################################################################
|
||||
|
@ -563,7 +572,8 @@ class AddonsDialog(QDialog):
|
|||
dict(num=len(selected))):
|
||||
return
|
||||
for dir in selected:
|
||||
self.mgr.deleteAddon(dir)
|
||||
if not self.mgr.deleteAddon(dir):
|
||||
break
|
||||
self.form.addonList.clearSelection()
|
||||
self.redrawAddons()
|
||||
|
||||
|
|
Loading…
Reference in a new issue