feat: 增加LZMA参数

This commit is contained in:
ASLant committed 2026-01-31 14:00:14 +08:00
1 parent bd10195fdb
commit 9e8cb8ba0e
3 files changed
+38 -4

No files matched your search

+8 -1
View File
@@ -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());
+21 -3
View File
@@ -312,7 +312,7 @@
极限压缩
</span>
<p class="text-xs text-muted-foreground mt-0.5">
尝试所有压缩方法,速度较慢但压缩率最高
尝试所有压缩方法,速度慢但压缩率最高
</p>
</div>
</label>
@@ -336,7 +336,7 @@
</label>
<label
class="flex items-start gap-3 cursor-pointer p-3 border border-border hover:border-primary hover:bg-accent transition-all rounded-md col-span-2"
class="flex items-start gap-3 cursor-pointer p-3 border border-border hover:border-primary hover:bg-accent transition-all rounded-md"
>
<input
type="checkbox"
@@ -348,7 +348,25 @@
强制压缩
</span>
<p class="text-xs text-muted-foreground mt-0.5">
强制处理受保护的文件(如 GUARD_CF),可能移除安全特性
强制处理受保护的文件
</p>
</div>
</label>
<label
class="flex items-start gap-3 cursor-pointer p-3 border border-border hover:border-primary hover:bg-accent transition-all rounded-md"
>
<input
type="checkbox"
id="lzma"
class="w-4 h-4 mt-0.5 rounded border-input cursor-pointer flex-shrink-0"
/>
<div class="flex-1 min-w-0">
<span class="text-sm font-medium text-foreground block">
LZMA 压缩
</span>
<p class="text-xs text-muted-foreground mt-0.5">
压缩率更高但速度稍慢
</p>
</div>
</label>
+9
View File
@@ -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