Release v1.6.59
This commit is contained in:
parent
265e6a72be
commit
11da8b6e9a
@ -160,7 +160,7 @@ The app stores runtime files in Electron's `userData` directory, including:
|
|||||||
## Troubleshooting
|
## Troubleshooting
|
||||||
|
|
||||||
- Download does not start: verify token and selected provider in Settings.
|
- Download does not start: verify token and selected provider in Settings.
|
||||||
- Extraction fails: check archive passwords, JVM runtime (`resources/extractor-jvm`), or force legacy mode with `RD_EXTRACT_BACKEND=legacy`.
|
- Extraction fails: check archive passwords and native extractor installation (7-Zip/WinRAR). Optional JVM extractor can be forced with `RD_EXTRACT_BACKEND=jvm`.
|
||||||
- Very slow downloads: check active speed limit and bandwidth schedules.
|
- Very slow downloads: check active speed limit and bandwidth schedules.
|
||||||
- Unexpected interruptions: enable reconnect and fallback providers.
|
- Unexpected interruptions: enable reconnect and fallback providers.
|
||||||
- Stalled downloads: the app auto-detects stalls within 10 seconds and retries automatically.
|
- Stalled downloads: the app auto-detects stalls within 10 seconds and retries automatically.
|
||||||
@ -169,6 +169,12 @@ The app stores runtime files in Electron's `userData` directory, including:
|
|||||||
|
|
||||||
Release history is available on [git.24-music.de Releases](https://git.24-music.de/Administrator/real-debrid-downloader/releases).
|
Release history is available on [git.24-music.de Releases](https://git.24-music.de/Administrator/real-debrid-downloader/releases).
|
||||||
|
|
||||||
|
### v1.6.59 (2026-03-05)
|
||||||
|
|
||||||
|
- Switched default extraction backend to native tools (`legacy`) for more stable archive-to-archive flow.
|
||||||
|
- Prioritized 7-Zip as primary native extractor, with WinRAR/UnRAR as fallback.
|
||||||
|
- JVM extractor remains available as opt-in via `RD_EXTRACT_BACKEND=jvm`.
|
||||||
|
|
||||||
### v1.6.58 (2026-03-05)
|
### v1.6.58 (2026-03-05)
|
||||||
|
|
||||||
- Fixed extraction progress oscillation (`1% -> 100% -> 1%` loops) during password retries.
|
- Fixed extraction progress oscillation (`1% -> 100% -> 1%` loops) during password retries.
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "real-debrid-downloader",
|
"name": "real-debrid-downloader",
|
||||||
"version": "1.6.58",
|
"version": "1.6.59",
|
||||||
"description": "Desktop downloader",
|
"description": "Desktop downloader",
|
||||||
"main": "build/main/main/main.js",
|
"main": "build/main/main/main.js",
|
||||||
"author": "Sucukdeluxe",
|
"author": "Sucukdeluxe",
|
||||||
|
|||||||
@ -10,7 +10,7 @@ import { removeDownloadLinkArtifacts, removeSampleArtifacts } from "./cleanup";
|
|||||||
import crypto from "node:crypto";
|
import crypto from "node:crypto";
|
||||||
|
|
||||||
const DEFAULT_ARCHIVE_PASSWORDS = ["", "serienfans.org", "serienjunkies.org"];
|
const DEFAULT_ARCHIVE_PASSWORDS = ["", "serienfans.org", "serienjunkies.org"];
|
||||||
const NO_EXTRACTOR_MESSAGE = "WinRAR/UnRAR nicht gefunden. Bitte WinRAR installieren.";
|
const NO_EXTRACTOR_MESSAGE = "Kein nativer Entpacker gefunden (7-Zip/WinRAR). Bitte 7-Zip oder WinRAR installieren.";
|
||||||
const NO_JVM_EXTRACTOR_MESSAGE = "7-Zip-JBinding Runtime nicht gefunden. Bitte resources/extractor-jvm prüfen.";
|
const NO_JVM_EXTRACTOR_MESSAGE = "7-Zip-JBinding Runtime nicht gefunden. Bitte resources/extractor-jvm prüfen.";
|
||||||
const JVM_EXTRACTOR_MAIN_CLASS = "com.sucukdeluxe.extractor.JBindExtractorMain";
|
const JVM_EXTRACTOR_MAIN_CLASS = "com.sucukdeluxe.extractor.JBindExtractorMain";
|
||||||
const JVM_EXTRACTOR_CLASSES_SUBDIR = "classes";
|
const JVM_EXTRACTOR_CLASSES_SUBDIR = "classes";
|
||||||
@ -549,23 +549,51 @@ function prioritizePassword(passwords: string[], successful: string): string[] {
|
|||||||
return next;
|
return next;
|
||||||
}
|
}
|
||||||
|
|
||||||
function winRarCandidates(): string[] {
|
function nativeExtractorCandidates(): string[] {
|
||||||
const programFiles = process.env.ProgramFiles || "C:\\Program Files";
|
const programFiles = process.env.ProgramFiles || "C:\\Program Files";
|
||||||
const programFilesX86 = process.env["ProgramFiles(x86)"] || "C:\\Program Files (x86)";
|
const programFilesX86 = process.env["ProgramFiles(x86)"] || "C:\\Program Files (x86)";
|
||||||
const localAppData = process.env.LOCALAPPDATA || "";
|
const localAppData = process.env.LOCALAPPDATA || "";
|
||||||
|
|
||||||
const installed = [
|
const sevenZipInstalled = [
|
||||||
|
process.env.RD_7Z_BIN || "",
|
||||||
|
path.join(programFiles, "7-Zip", "7z.exe"),
|
||||||
|
path.join(programFilesX86, "7-Zip", "7z.exe")
|
||||||
|
];
|
||||||
|
if (localAppData) {
|
||||||
|
sevenZipInstalled.push(path.join(localAppData, "Programs", "7-Zip", "7z.exe"));
|
||||||
|
}
|
||||||
|
|
||||||
|
const winRarInstalled = [
|
||||||
path.join(programFiles, "WinRAR", "UnRAR.exe"),
|
path.join(programFiles, "WinRAR", "UnRAR.exe"),
|
||||||
path.join(programFilesX86, "WinRAR", "UnRAR.exe")
|
path.join(programFilesX86, "WinRAR", "UnRAR.exe")
|
||||||
];
|
];
|
||||||
|
|
||||||
if (localAppData) {
|
if (localAppData) {
|
||||||
installed.push(path.join(localAppData, "Programs", "WinRAR", "UnRAR.exe"));
|
winRarInstalled.push(path.join(localAppData, "Programs", "WinRAR", "UnRAR.exe"));
|
||||||
}
|
}
|
||||||
|
|
||||||
const ordered = resolvedExtractorCommand
|
const ordered = resolvedExtractorCommand
|
||||||
? [resolvedExtractorCommand, ...installed, "UnRAR.exe", "unrar"]
|
? [
|
||||||
: [...installed, "UnRAR.exe", "unrar"];
|
resolvedExtractorCommand,
|
||||||
|
...sevenZipInstalled,
|
||||||
|
"7z.exe",
|
||||||
|
"7z",
|
||||||
|
"7za.exe",
|
||||||
|
"7za",
|
||||||
|
...winRarInstalled,
|
||||||
|
"UnRAR.exe",
|
||||||
|
"unrar"
|
||||||
|
]
|
||||||
|
: [
|
||||||
|
...sevenZipInstalled,
|
||||||
|
"7z.exe",
|
||||||
|
"7z",
|
||||||
|
"7za.exe",
|
||||||
|
"7za",
|
||||||
|
...winRarInstalled,
|
||||||
|
"UnRAR.exe",
|
||||||
|
"unrar"
|
||||||
|
];
|
||||||
return Array.from(new Set(ordered.filter(Boolean)));
|
return Array.from(new Set(ordered.filter(Boolean)));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -860,7 +888,7 @@ type JvmExtractResult = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
function extractorBackendMode(): ExtractBackendMode {
|
function extractorBackendMode(): ExtractBackendMode {
|
||||||
const defaultMode = process.env.VITEST ? "legacy" : "jvm";
|
const defaultMode = "legacy";
|
||||||
const raw = String(process.env.RD_EXTRACT_BACKEND || defaultMode).trim().toLowerCase();
|
const raw = String(process.env.RD_EXTRACT_BACKEND || defaultMode).trim().toLowerCase();
|
||||||
if (raw === "legacy") {
|
if (raw === "legacy") {
|
||||||
return "legacy";
|
return "legacy";
|
||||||
@ -1574,7 +1602,7 @@ async function resolveExtractorCommandInternal(): Promise<string> {
|
|||||||
resolveFailureAt = 0;
|
resolveFailureAt = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
const candidates = winRarCandidates();
|
const candidates = nativeExtractorCandidates();
|
||||||
for (const command of candidates) {
|
for (const command of candidates) {
|
||||||
if (isAbsoluteCommand(command) && !fs.existsSync(command)) {
|
if (isAbsoluteCommand(command) && !fs.existsSync(command)) {
|
||||||
continue;
|
continue;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user