diff -r d23e9854aea4 -r 18a7312cfdb3 scripts/uninstall.py --- a/scripts/uninstall.py Sun Jul 03 18:09:29 2022 +0200 +++ b/scripts/uninstall.py Sun Jul 24 11:29:56 2022 +0200 @@ -31,25 +31,26 @@ def exit(rcode=0): """ Exit the uninstall script. - + @param rcode result code to report back (integer) """ global currDir - + # restore the local eric7config.py if os.path.exists("eric7config.py.orig"): if os.path.exists("eric7config.py"): os.remove("eric7config.py") os.rename("eric7config.py.orig", "eric7config.py") - + if sys.platform.startswith(("win", "cygwin")): with contextlib.suppress(): - input("Press enter to continue...") # secok - + input("Press enter to continue...") # secok + os.chdir(currDir) - + sys.exit(rcode) + # get a local eric7config.py out of the way if os.path.exists("eric7config.py"): os.rename("eric7config.py", "eric7config.py.orig") @@ -86,21 +87,21 @@ """ global pyModDir - pyModDir = sysconfig.get_path('platlib') + pyModDir = sysconfig.get_path("platlib") def wrapperNames(dname, wfile): """ Create the platform specific names for the wrapper script. - + @param dname name of the directory to place the wrapper into @param wfile basename (without extension) of the wrapper script @return the names of the wrapper scripts """ wnames = ( (dname + "\\" + wfile + ".cmd", dname + "\\" + wfile + ".bat") - if sys.platform.startswith(("win", "cygwin")) else - (dname + "/" + wfile, ) + if sys.platform.startswith(("win", "cygwin")) + else (dname + "/" + wfile,) ) return wnames @@ -111,35 +112,51 @@ Uninstall the eric files. """ global pyModDir - + # Remove the menu entry for Linux systems if sys.platform.startswith("linux"): uninstallLinuxSpecifics() # Remove the Desktop and Start Menu entries for Windows systems elif sys.platform.startswith(("win", "cygwin")): uninstallWindowsLinks() - + # Remove the wrapper scripts rem_wnames = [ - "eric7_api", "eric7_browser", "eric7_compare", "eric7_configure", - "eric7_diff", "eric7_doc", "eric7_editor", "eric7_hexeditor", - "eric7_iconeditor", "eric7_plugininstall", "eric7_pluginrepository", - "eric7_pluginuninstall", "eric7_qregularexpression", "eric7_re", - "eric7_shell", "eric7_snap", "eric7_sqlbrowser", "eric7_testing", - "eric7_tray", "eric7_trpreviewer", "eric7_uipreviewer", - "eric7_virtualenv", "eric7", + "eric7_api", + "eric7_browser", + "eric7_compare", + "eric7_configure", + "eric7_diff", + "eric7_doc", + "eric7_editor", + "eric7_hexeditor", + "eric7_iconeditor", + "eric7_plugininstall", + "eric7_pluginrepository", + "eric7_pluginuninstall", + "eric7_qregularexpression", + "eric7_re", + "eric7_shell", + "eric7_snap", + "eric7_sqlbrowser", + "eric7_testing", + "eric7_tray", + "eric7_trpreviewer", + "eric7_uipreviewer", + "eric7_virtualenv", + "eric7", # obsolete scripts below "eric7_unittest", ] - + try: for rem_wname in rem_wnames: - for rwname in wrapperNames(getConfig('bindir'), rem_wname): + for rwname in wrapperNames(getConfig("bindir"), rem_wname): if os.path.exists(rwname): os.remove(rwname) - + # Cleanup our config file(s) - for name in ['eric7config.py', 'eric7config.pyc', 'eric7.pth']: + for name in ["eric7config.py", "eric7config.pyc", "eric7.pth"]: e5cfile = os.path.join(pyModDir, name) if os.path.exists(e5cfile): os.remove(e5cfile) @@ -147,54 +164,64 @@ path, ext = os.path.splitext(e5cfile) for f in glob.glob("{0}.*{1}".format(path, ext)): os.remove(f) - + # Cleanup the install directories - for name in ['ericExamplesDir', 'ericDocDir', 'ericDTDDir', - 'ericCSSDir', 'ericIconDir', 'ericPixDir', - 'ericTemplatesDir', 'ericCodeTemplatesDir', - 'ericOthersDir', 'ericStylesDir', 'ericThemesDir', - 'ericDir']: + for name in [ + "ericExamplesDir", + "ericDocDir", + "ericDTDDir", + "ericCSSDir", + "ericIconDir", + "ericPixDir", + "ericTemplatesDir", + "ericCodeTemplatesDir", + "ericOthersDir", + "ericStylesDir", + "ericThemesDir", + "ericDir", + ]: with contextlib.suppress(AttributeError): dirpath = getConfig(name) if os.path.exists(dirpath): shutil.rmtree(dirpath, True) - + # Cleanup translations for name in glob.glob( - os.path.join(getConfig('ericTranslationsDir'), 'eric7_*.qm')): + os.path.join(getConfig("ericTranslationsDir"), "eric7_*.qm") + ): if os.path.exists(name): os.remove(name) - + # Cleanup API files - apidir = getConfig('apidir') + apidir = getConfig("apidir") if apidir: for progLanguage in progLanguages: - for name in getConfig('apis'): + for name in getConfig("apis"): apiname = os.path.join(apidir, progLanguage.lower(), name) if os.path.exists(apiname): os.remove(apiname) for apiname in glob.glob( - os.path.join(apidir, progLanguage.lower(), "*.bas")): + os.path.join(apidir, progLanguage.lower(), "*.bas") + ): if os.path.basename(apiname) != "eric7.bas": os.remove(apiname) - + if sys.platform == "darwin": # delete the Mac app bundle uninstallMacAppBundle() - + # remove plug-in directories removePluginDirectories() - + # remove the eric data directory removeDataDirectory() - + # remove the eric configuration directory removeConfigurationData() - + print("\nUninstallation completed") except OSError as msg: - sys.stderr.write( - 'Error: {0}\nTry uninstall with admin rights.\n'.format(msg)) + sys.stderr.write("Error: {0}\nTry uninstall with admin rights.\n".format(msg)) exit(7) @@ -203,16 +230,16 @@ Clean up the Desktop and Start Menu entries for Windows. """ try: - from pywintypes import com_error # __IGNORE_WARNING__ + from pywintypes import com_error # __IGNORE_WARNING__ except ImportError: # links were not created by install.py return - + regPath = ( - "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer" + - "\\User Shell Folders" + "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer" + + "\\User Shell Folders" ) - + # 1. cleanup desktop links regName = "Desktop" desktopEntry = getWinregEntry(regName, regPath) @@ -226,7 +253,7 @@ except OSError: # maybe restrictions prohibited link removal print("Could not remove '{0}'.".format(linkPath)) - + # 2. cleanup start menu entry regName = "Programs" programsEntry = getWinregEntry(regName, regPath) @@ -287,11 +314,10 @@ except AttributeError: macAppBundlePath = defaultMacAppBundlePath macAppBundleName = defaultMacAppBundleName - for bundlePath in [os.path.join(defaultMacAppBundlePath, - macAppBundleName), - os.path.join(macAppBundlePath, - macAppBundleName), - ]: + for bundlePath in [ + os.path.join(defaultMacAppBundlePath, macAppBundleName), + os.path.join(macAppBundlePath, macAppBundleName), + ]: if os.path.exists(bundlePath): shutil.rmtree(bundlePath) @@ -301,15 +327,15 @@ Remove the plug-in directories. """ pathsToRemove = [] - - globalPluginsDir = os.path.join(getConfig('mdir'), "eric7plugins") + + globalPluginsDir = os.path.join(getConfig("mdir"), "eric7plugins") if os.path.exists(globalPluginsDir): pathsToRemove.append(globalPluginsDir) - + localPluginsDir = os.path.join(getConfigDir(), "eric7plugins") if os.path.exists(localPluginsDir): pathsToRemove.append(localPluginsDir) - + if pathsToRemove: print("Found these plug-in directories") for path in pathsToRemove: @@ -349,9 +375,13 @@ print("No PyQt variant installed. The configuration directory") print("cannot be determined. You have to remove it manually.\n") return - - settings = QSettings(QSettings.Format.IniFormat, QSettings.Scope.UserScope, - settingsNameOrganization, settingsNameGlobal) + + settings = QSettings( + QSettings.Format.IniFormat, + QSettings.Scope.UserScope, + settingsNameOrganization, + settingsNameGlobal, + ) settingsDir = os.path.dirname(settings.fileName()) if os.path.exists(settingsDir): print("Found the eric configuration directory") @@ -367,7 +397,7 @@ def getConfigDir(): """ Module function to get the name of the directory storing the config data. - + @return directory name of the config dir (string) """ cdn = ".eric7" @@ -377,7 +407,7 @@ def getWinregEntry(name, path): """ Function to get an entry from the Windows Registry. - + @param name variable name @type str @param path registry path of the variable @@ -387,9 +417,9 @@ """ # From http://stackoverflow.com/a/35286642 import winreg + try: - registryKey = winreg.OpenKey(winreg.HKEY_CURRENT_USER, path, 0, - winreg.KEY_READ) + registryKey = winreg.OpenKey(winreg.HKEY_CURRENT_USER, path, 0, winreg.KEY_READ) value, _ = winreg.QueryValueEx(registryKey, name) winreg.CloseKey(registryKey) return value @@ -400,7 +430,7 @@ def windowsDesktopNames(): """ Function to generate the link names for the Windows Desktop. - + @return list of desktop link names @rtype list of str """ @@ -409,14 +439,14 @@ "eric7 (Python {0}.{1}).lnk", "eric7 Browser (Python {0}.{1}).lnk", ] - + return [ll.format(majorVersion, minorVersion) for ll in linkTemplates] def windowsProgramsEntry(): """ Function to generate the name of the Start Menu top entry. - + @return name of the Start Menu top entry @rtype str """ @@ -448,12 +478,12 @@ for opt, _arg in optlist: if opt == "-h": usage(0) - + print("\nUninstalling eric ...") uninstallEric() print("\nUninstallation complete.") print() - + exit(0) @@ -463,10 +493,12 @@ except SystemExit: raise except Exception: - print("""An internal error occured. Please report all the output of""" - """ the program,\n""" - """including the following traceback, to""" - """ eric-bugs@eric-ide.python-projects.org.\n""") + print( + """An internal error occured. Please report all the output of""" + """ the program,\n""" + """including the following traceback, to""" + """ eric-bugs@eric-ide.python-projects.org.\n""" + ) raise #