GP-4176: GhidraDev can now handle both legacy user settings directories

as well as the new XDG layout
This commit is contained in:
Ryan Kurtz
2024-02-16 09:50:46 -05:00
parent fea1243894
commit 4fc9ccde28
7 changed files with 56 additions and 25 deletions

View File

@@ -2,7 +2,7 @@
<feature
id="ghidra.ghidradev"
label="GhidraDev"
version="3.0.2.qualifier"
version="3.1.0.qualifier"
provider-name="Ghidra">
<description>
@@ -45,9 +45,6 @@ limitations under the License.
<plugin
id="ghidra.ghidradev"
download-size="0"
install-size="0"
version="0.0.0"
unpack="false"/>
version="0.0.0"/>
</feature>

View File

@@ -19,7 +19,7 @@
<h1>GhidraDev README</h1>
<p>GhidraDev provides support for developing and debugging Ghidra scripts and modules in Eclipse.
</p>
<p>The information provided in this document is effective as of GhidraDev 3.0.2 and is subject to
<p>The information provided in this document is effective as of GhidraDev 3.1.0 and is subject to
change with future releases.</p>
<ul>
@@ -53,6 +53,13 @@ change with future releases.</p>
</ul>
<h2><a name="ChangeHistory"></a>Change History</h2>
<p><u><b>3.1.0</b>:</u>
<ul>
<li>
GhidraDev has been upgraded to be compatible with Ghidra 11.1 and later. Older versions of
GhidraDev will report an error when trying to link against Ghidra 11.1 or later.
</li>
</ul>
<p><u><b>3.0.2</b>:</u>
<ul>
<li>

View File

@@ -3,7 +3,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: GhidraDev
Bundle-SymbolicName: ghidra.ghidradev;singleton:=true
Bundle-Version: 3.0.2.qualifier
Bundle-Version: 3.1.0.qualifier
Bundle-Activator: ghidradev.Activator
Require-Bundle: org.eclipse.ant.core;bundle-version="3.6.200",
org.eclipse.buildship.core;bundle-version="3.1.5",

View File

@@ -229,12 +229,21 @@ implements IWorkbenchPreferencePage {
}
String layoutVersion = applicationProperties.getProperty(
ApplicationProperties.APPLICATION_LAYOUT_VERSION_PROPERTY);
if (layoutVersion == null || !layoutVersion.equals("1")) {
// We can be smarter about this check and what we support later, once the layout version
// actually changes.
boolean layoutVersionError = false;
try {
int ver = Integer.parseInt(layoutVersion);
if (ver < 1 || ver > 2) {
layoutVersionError = true;
}
}
catch (NumberFormatException e) {
layoutVersionError = true;
}
if (layoutVersionError) {
throw new IOException(
"Ghidra application layout is not supported. Please upgrade " +
Activator.PLUGIN_ID + " to use this version of Ghidra.");
"Ghidra application layout '%s' is not supported. Please upgrade %s to use this version of Ghidra."
.formatted(layoutVersion != null ? layoutVersion : "<null>",
Activator.PLUGIN_ID));
}
}
}