diff --git a/src-tauri/src/main.rs b/src-tauri/src/main.rs index 6fa4ab6..f49f1f8 100644 --- a/src-tauri/src/main.rs +++ b/src-tauri/src/main.rs @@ -32,6 +32,7 @@ struct UpxOptions { output_file: String, compression_level: String, backup: bool, + lzma: bool, ultra_brute: bool, force: bool, } @@ -47,6 +48,7 @@ struct AppConfig { compression_level: i32, overwrite: bool, backup: bool, + lzma: bool, ultra_brute: bool, include_subfolders: bool, force_compress: bool, @@ -58,6 +60,7 @@ impl Default for AppConfig { compression_level: 9, overwrite: true, backup: false, + lzma: false, ultra_brute: false, include_subfolders: false, force_compress: false, @@ -149,13 +152,17 @@ fn build_compress_args( // 压缩级别 if options.ultra_brute { args.push("--ultra-brute".to_string()); - args.push("--no-lzma".to_string()); } else if options.compression_level == "best" { args.push("--best".to_string()); } else { args.push(format!("-{}", options.compression_level)); } + // LZMA 压缩 + if options.lzma { + args.push("--lzma".to_string()); + } + // 强制压缩 if options.force { args.push("--force".to_string()); diff --git a/ui/index.html b/ui/index.html index fbed7e3..491d474 100644 --- a/ui/index.html +++ b/ui/index.html @@ -312,7 +312,7 @@ 极限压缩

- 尝试所有压缩方法,速度较慢但压缩率最高 + 尝试所有压缩方法,速度慢但压缩率最高

@@ -336,7 +336,7 @@ + + diff --git a/ui/js/main.js b/ui/js/main.js index c8c311f..8e5c1be 100644 --- a/ui/js/main.js +++ b/ui/js/main.js @@ -21,6 +21,7 @@ let compressBtn, levelDescription, overwriteCheckbox, backupCheckbox, + lzmaCheckbox, ultraBruteCheckbox, includeSubfoldersCheckbox, forceCompressCheckbox, @@ -45,6 +46,7 @@ function initDOMElements() { levelDescription = $('level-description') overwriteCheckbox = $('overwrite') backupCheckbox = $('backup') + lzmaCheckbox = $('lzma') ultraBruteCheckbox = $('ultra-brute') includeSubfoldersCheckbox = $('include-subfolders') forceCompressCheckbox = $('force-compress') @@ -505,10 +507,15 @@ async function processUpx(mode, inputFile, outputFile) { output_file: outputFile, compression_level: getCompressionLevel(), backup: backupCheckbox.checked, + lzma: lzmaCheckbox.checked, ultra_brute: ultraBruteCheckbox.checked, force: forceCompressCheckbox.checked, } + if (lzmaCheckbox.checked) { + addLog('已启用 LZMA 压缩', 'info') + } + if (ultraBruteCheckbox.checked) { addLog('已启用极限压缩模式', 'info') } @@ -849,6 +856,7 @@ async function saveCurrentConfig() { compression_level: parseInt(compressionLevel.value), overwrite: overwriteCheckbox.checked, backup: backupCheckbox.checked, + lzma: lzmaCheckbox.checked, ultra_brute: ultraBruteCheckbox.checked, include_subfolders: includeSubfoldersCheckbox.checked, force_compress: forceCompressCheckbox.checked, @@ -864,6 +872,7 @@ function applyConfigToUI(config) { compressionLevel.value = config.compression_level overwriteCheckbox.checked = config.overwrite backupCheckbox.checked = config.backup + lzmaCheckbox.checked = config.lzma || false ultraBruteCheckbox.checked = config.ultra_brute includeSubfoldersCheckbox.checked = config.include_subfolders forceCompressCheckbox.checked = config.force_compress