public static void validateGhidraInstallation(File ghidraInstallDir) throws IOException {
		ApplicationLayout layout;
		try {
			layout = new GhidraApplicationLayout(ghidraInstallDir);
		}
		catch (IOException e) {
			throw new IOException("Not a valid Ghidra installation.");			
		}
		if (new File(ghidraInstallDir, "certification.local.manifest").isFile()) {
			throw new IOException("Ghidra source repositories are not supported.");
		}
		ApplicationProperties applicationProperties = layout.getApplicationProperties();
		ApplicationVersion version;
		try {
			version = new ApplicationVersion(applicationProperties.getApplicationVersion());
		}
		catch (IllegalArgumentException e) {
			throw new IOException("Error parsing application version. " + e.getMessage() + ".");
		}
		if (version.compareTo(MIN_GHIDRA_VERSION) < 0) {
			throw new IOException(
				"Ghidra installation must be version " + MIN_GHIDRA_VERSION + " or later.");
		}
		String layoutVersion = applicationProperties.getProperty(
			ApplicationProperties.APPLICATION_LAYOUT_VERSION_PROPERTY);
		boolean layoutVersionError = false;
		try {
			int ver = Integer.parseInt(layoutVersion);
			if (ver < 1 || ver > 3) {
				layoutVersionError = true;
			}
		}
		catch (NumberFormatException e) {
			layoutVersionError = true;
		}
		if (layoutVersionError) {
			throw new IOException(
				"Ghidra application layout '%s' is not supported.  Please upgrade %s to use this version of Ghidra."
						.formatted(layoutVersion != null ? layoutVersion : "<null>",
							Activator.PLUGIN_ID));
		}
	}
Validates the given Ghidra installation directory.

@param ghidraInstallDir The Ghidra installation directory to validate.
@throws IOException If the given Ghidra installation directory is not valid.  The exception's
  message has more detailed information on why it was not valid.
GhidraBuild/EclipsePlugins/GhidraDev/GhidraDevPlugin/src/main/java/ghidradev/ghidraprojectcreator/preferences/GhidraProjectCreatorPreferencePage.java