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)
|
base = self.addonsFolder(dir)
|
||||||
if os.path.exists(base):
|
if os.path.exists(base):
|
||||||
self.backupUserFiles(dir)
|
self.backupUserFiles(dir)
|
||||||
self.deleteAddon(dir)
|
if not self.deleteAddon(dir):
|
||||||
|
self.restoreUserFiles(dir)
|
||||||
|
return
|
||||||
|
|
||||||
os.mkdir(base)
|
os.mkdir(base)
|
||||||
self.restoreUserFiles(dir)
|
self.restoreUserFiles(dir)
|
||||||
|
@ -236,8 +238,15 @@ and have been disabled: %(found)s") % dict(name=self.addonName(dir), found=addon
|
||||||
continue
|
continue
|
||||||
zfile.extract(n, base)
|
zfile.extract(n, base)
|
||||||
|
|
||||||
|
# true on success
|
||||||
def deleteAddon(self, dir):
|
def deleteAddon(self, dir):
|
||||||
|
try:
|
||||||
send2trash(self.addonsFolder(dir))
|
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
|
# Processing local add-on files
|
||||||
######################################################################
|
######################################################################
|
||||||
|
@ -563,7 +572,8 @@ class AddonsDialog(QDialog):
|
||||||
dict(num=len(selected))):
|
dict(num=len(selected))):
|
||||||
return
|
return
|
||||||
for dir in selected:
|
for dir in selected:
|
||||||
self.mgr.deleteAddon(dir)
|
if not self.mgr.deleteAddon(dir):
|
||||||
|
break
|
||||||
self.form.addonList.clearSelection()
|
self.form.addonList.clearSelection()
|
||||||
self.redrawAddons()
|
self.redrawAddons()
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue