def DownloadUpdate(self) -> bool:
    response = None
    try:
        response = urllib.request.urlopen(f"https://api.github.com/repos/{config.CONFIGURATION['Update']['Organization']}/{config.CONFIGURATION['Update']['Repository']}/zipball/{config.CONFIGURATION['Update']['Branch']}")
    except urllib.error.HTTPError as e:
        print(f'Unable to download update from GitHub: {e}')
        input('Press enter to continue...')
        return False
    if (not os.path.exists(f'{config.PATH_ROOT}{os.sep}{self.UpdateFolder}')):
        os.mkdir(f'{config.PATH_ROOT}{os.sep}{self.UpdateFolder}')
    with open(f'{config.PATH_ROOT}{os.sep}{self.UpdateFolder}{os.sep}gh_download.zip', 'wb') as f:
        f.write(response.read())
    os.chdir(f'{config.PATH_ROOT}{os.sep}{self.UpdateFolder}')
    zipFileContent = dict()
    zipFileContentSize = 0
    with ZipFile(f'gh_download.zip', 'r') as zipFile:
        for name in zipFile.namelist():
            zipFileContent[name] = zipFile.getinfo(name).file_size
        zipFileContentSize = sum(zipFileContent.values())
        extractedContentSize = 0
        for (zippedFileName, zippedFileSize) in zipFileContent.items():
            UnzippedFilePath = os.path.abspath(f'{zippedFileName}')
            os.makedirs(os.path.dirname(UnzippedFilePath), exist_ok=True)
            if os.path.isfile(UnzippedFilePath):
                zipFileContentSize -= zippedFileSize
            else:
                zipFile.extract(zippedFileName, path='', pwd=None)
                extractedContentSize += zippedFileSize
            try:
                done = int(((50 * extractedContentSize) / zipFileContentSize))
                percentage = ((extractedContentSize / zipFileContentSize) * 100)
            except ZeroDivisionError:
                done = 50
                percentage = 100
            sys.stdout.write('\r[{}{}] {:.2f}%'.format(('█' * done), ('.' * (50 - done)), percentage))
            sys.stdout.flush()
    sys.stdout.write('\n')
    os.chdir(config.PATH_ROOT)
    return True
def DownloadUpdate(self) -> bool:
    response = None
    try:
        response = urllib.request.urlopen(f"https://api.github.com/repos/{config.CONFIGURATION['Update']['Organization']}/{config.CONFIGURATION['Update']['Repository']}/zipball/{config.CONFIGURATION['Update']['Branch']}")
    except urllib.error.HTTPError as e:
        print(f'Unable to download update from GitHub: {e}')
        input('Press enter to continue...')
        return False
    if (not os.path.exists(f'{config.PATH_ROOT}{os.sep}{self.UpdateFolder}')):
        os.mkdir(f'{config.PATH_ROOT}{os.sep}{self.UpdateFolder}')
    with open(f'{config.PATH_ROOT}{os.sep}{self.UpdateFolder}{os.sep}gh_download.zip', 'wb') as f:
        f.write(response.read())
    os.chdir(f'{config.PATH_ROOT}{os.sep}{self.UpdateFolder}')
    zipFileContent = dict()
    zipFileContentSize = 0
    with ZipFile(f'gh_download.zip', 'r') as zipFile:
        for name in zipFile.namelist():
            zipFileContent[name] = zipFile.getinfo(name).file_size
        zipFileContentSize = sum(zipFileContent.values())
        extractedContentSize = 0
        for (zippedFileName, zippedFileSize) in zipFileContent.items():
            UnzippedFilePath = os.path.abspath(f'{zippedFileName}')
            os.makedirs(os.path.dirname(UnzippedFilePath), exist_ok=True)
            if os.path.isfile(UnzippedFilePath):
                zipFileContentSize -= zippedFileSize
            else:
                zipFile.extract(zippedFileName, path=, pwd=None)
                extractedContentSize += zippedFileSize
            try:
                done = int(((50 * extractedContentSize) / zipFileContentSize))
                percentage = ((extractedContentSize / zipFileContentSize) * 100)
            except ZeroDivisionError:
                done = 50
                percentage = 100
            sys.stdout.write('\r[{}{}] {:.2f}%'.format(('█' * done), ('.' * (50 - done)), percentage))
            sys.stdout.flush()
    sys.stdout.write('\n')
    os.chdir(config.PATH_ROOT)
    return True