Build offline OpenPrestige release bundles
Rename the injector and package it with an embedded payload for Windows, Linux, and macOS x64/ARM64. Add a core-only ImGui native build, multi-platform CI and release packaging, and shared per-user storage with legacy config migration.
This commit is contained in:
1 parent
5152e6e0a6
commit
2d6b2a3cd1
37 files changed
+1284
-451
No files matched your search
@@ -29,6 +29,7 @@ pub fn run() {
|
||||
}
|
||||
|
||||
unsafe fn install() -> Result<(), String> {
|
||||
crate::paths::initialize().map_err(|error| format!("create OpenPrestige data directory: {error}"))?;
|
||||
let vm = find_vm()?;
|
||||
let env = attach_current_thread(vm)?;
|
||||
struct Detach(VmPtr);
|
||||
@@ -45,7 +46,7 @@ unsafe fn install() -> Result<(), String> {
|
||||
log!("JVMTI ready");
|
||||
|
||||
let jar = write_payload()?;
|
||||
log!("payload written to {}", jar.display());
|
||||
log!("using payload at {}", jar.display());
|
||||
|
||||
let loader = add_to_knot(&jni, &jar)?;
|
||||
log!("payload appended to the game class loader: {}", describe(&jni, loader));
|
||||
@@ -103,7 +104,8 @@ unsafe fn find_vm() -> Result<VmPtr, String> {
|
||||
}
|
||||
|
||||
fn write_payload() -> Result<PathBuf, String> {
|
||||
let dir = std::env::temp_dir().join("PrestigeLoader");
|
||||
let dir = crate::paths::initialize().map_err(|e| format!("create OpenPrestige data directory: {e}"))?
|
||||
.join("runtime").join("payloads");
|
||||
std::fs::create_dir_all(&dir).map_err(|e| format!("create {}: {e}", dir.display()))?;
|
||||
let path = dir.join(format!("prestige-payload-{}.jar", std::process::id()));
|
||||
std::fs::write(&path, PAYLOAD).map_err(|e| format!("write {}: {e}", path.display()))?;
|
||||
|
||||
Reference in new issue
Block a user