diff --git a/js/ui/extensionDownloader.js b/js/ui/extensionDownloader.js index 94ba8fad5..b3cef41a6 100644 --- a/js/ui/extensionDownloader.js +++ b/js/ui/extensionDownloader.js @@ -113,6 +113,24 @@ async function extractExtensionArchive(bytes, dir) { ['unzip', '-uod', dir.get_path(), '--', file.get_path()], Gio.SubprocessFlags.NONE); await unzip.wait_check_async(null); + + const schemasPath = dir.get_child('schemas'); + const info = await schemasPath.query_info_async( + Gio.FILE_ATTRIBUTE_STANDARD_TYPE, + Gio.FileQueryInfoFlags.NONE, + GLib.PRIORITY_DEFAULT, + null); + + if (info.get_file_type() === Gio.FileType.DIRECTORY) { + const compileSchema = Gio.Subprocess.new( + ['glib-compile-schemas', '--strict', schemasPath.get_path()], + Gio.SubprocessFlags.NONE); + try { + await compileSchema.wait_check_async(null); + } catch (e) { + log(`Error while compiling schema for extension ${dir.get_basename()}: (${e.message})`); + } + } } /**