"Download and install extension" snippet thows exception

To simplify things, here is a script that works without any changes in both Slicer-4.11 and Slicer-4.13:

extensionName = 'SlicerIGT'
em = slicer.app.extensionsManagerModel()
if not em.isExtensionInstalled(extensionName):
    extensionMetaData = em.retrieveExtensionMetadataByName(extensionName)
    if slicer.app.majorVersion*100+slicer.app.minorVersion < 413:
        # Slicer-4.11
        itemId = extensionMetaData['item_id']
        url = f"{em.serverUrl().toString()}/download?items={itemId}"
    else:
        # Slicer-4.13
        itemId = extensionMetaData['_id']
        url = f"{em.serverUrl().toString()}/api/v1/item/{itemId}/download"
    extensionPackageFilename = slicer.app.temporaryPath+'/'+itemId
    slicer.util.downloadFile(url, extensionPackageFilename)
    em.installExtension(extensionPackageFilename)
    slicer.util.restart()
1 Like