public static boolean install(ExtensionDetails extension, File file, TaskMonitor monitor) {
		boolean success = false;
		try {
			if (file.isFile()) {
				success = unzipToInstallationFolder(extension, file, monitor);
			}

			success = copyToInstallationFolder(extension, file, monitor);
		}
		catch (CancelledException e) {
			log.info("Extension installation cancelled by user");
		}
		catch (IOException e) {
			Msg.showError(ExtensionUtils.class, null, "Error Installing Extension",
				"Unexpected error installing extension", e);
		}

		if (success) {
			extensions.add(extension);
		}

		return success;
	}
Returns true if the given file or directory is a valid ghidra extension.
<p>
Note: This means that the zip or directory contains an extension.properties file.

@param file the zip or directory to inspect
@return true if the given file represents a valid extension
Ghidra/Framework/Generic/src/main/java/ghidra/util/extensions/ExtensionUtils.java