Merge remote-tracking branch 'origin/Ghidra_12.1'

This commit is contained in:
Ryan Kurtz
2026-03-24 13:32:37 -04:00
@@ -28,8 +28,7 @@ import org.apache.logging.log4j.Logger;
import docking.framework.SplashScreen; import docking.framework.SplashScreen;
import generic.jar.ResourceFile; import generic.jar.ResourceFile;
import ghidra.base.help.GhidraHelpService; import ghidra.base.help.GhidraHelpService;
import ghidra.framework.Application; import ghidra.framework.*;
import ghidra.framework.GhidraApplicationConfiguration;
import ghidra.framework.client.RepositoryAdapter; import ghidra.framework.client.RepositoryAdapter;
import ghidra.framework.main.FrontEndTool; import ghidra.framework.main.FrontEndTool;
import ghidra.framework.model.*; import ghidra.framework.model.*;
@@ -110,6 +109,8 @@ public class GhidraRun implements GhidraLaunchable {
log.info("Ghidra startup complete (" + GhidraLauncher.getMillisecondsFromLaunch() + log.info("Ghidra startup complete (" + GhidraLauncher.getMillisecondsFromLaunch() +
" ms)"); " ms)");
checkForMissingNativeComponents();
}); });
}; };
@@ -321,6 +322,22 @@ public class GhidraRun implements GhidraLaunchable {
} }
} }
private void checkForMissingNativeComponents() {
boolean isWin = Platform.CURRENT_PLATFORM.getOperatingSystem() == OperatingSystem.WINDOWS;
try {
Application.getOSFile("Decompiler", isWin ? "decompile.exe" : "decompile");
}
catch (OSFileNotFoundException e) {
//@formatter:off
String msg =
"It appears that native components have not been built for this Ghidra installation.\n" +
"See the \"Building Native Components\" section of the Getting Started guide for build instructions.";
//@formatter:on
Msg.showWarn(GhidraRun.class, null, "Missing Native Components", msg);
}
}
private class GhidraProjectManager extends DefaultProjectManager { private class GhidraProjectManager extends DefaultProjectManager {
// this exists just to allow access to the constructor // this exists just to allow access to the constructor
} }