Repository navigation
v1.1.1 — 修复开启 Oodle 压缩时闪退
UE4/UE5 .pak 工具链,Windows 桌面端与 Android 双端。基于 CUE4Parse,扩展自 kardswalker/Prism。
下载
| 平台 | 文件 | 说明 |
|---|---|---|
| Windows | Prism-Windows-x64.zip |
自包含单文件版,无需安装 .NET 运行时 |
| Android | Prism-Android.zip |
内含已签名 APK,arm64-v8a |
解压后请保持目录完整 —— UAssetCLI/ 与 tools/ 必须和主程序放在一起。
本版修复:开启「Oodle 压缩」会直接闪退
现象:设置里勾上「替换时使用 Oodle 压缩」后,执行 Pak 合并(或转换、构建补丁)时程序瞬间消失,没有任何报错。
原因:打包用的是 Rust 写的 repak_bind,它在做 Oodle 压缩时会去加载 oo2core_9_win64.dll。发行包按授权约定不包含这个库,于是加载失败 → Rust panic → abort 整个进程。Windows 上表现为 0xC0000409,进程直接消失。
关键在于:这种 abort 在 .NET 侧完全拦不住 —— try/catch、AppDomain.UnhandledException、TaskScheduler.UnobservedTaskException 都无效,因为进程是被原生代码终止的。所以不能靠"捕获异常再提示",只能在调用前判断。
修复:打包前先探测 Oodle 原生库是否可加载(NativeLibrary.TryLoad)。
- 可用 → 照常按 Oodle 压缩;
- 不可用 → 自动退回不压缩,打包继续完成,并在日志与页面上说明原因;
- 设置页「信息」新增一行 Oodle 状态,一眼能看出为什么没有压缩。
这样即使勾着 Oodle 压缩,也不会再闪退 —— 只是输出包大一些(不压缩)。
想真正用上 Oodle 压缩:把 oo2core_9_win64.dll 放到 Prism.Desktop.Desktop.exe 旁边即可(可从虚幻引擎安装目录取得,例如 Engine\Binaries\DotNET\UnrealBuildTool\)。发行包不含它是因为其再分发受 RAD/Epic 授权约束。
顺带说明:解包不需要 Oodle
有用户问"没有 Oodle 怎么解包" —— 实测(在一份不含 oo2core 的包里)读取 Pak 完全正常:98 个文件、搜索、贴图预览全部成功。Oodle 只在需要解压 Oodle 压缩的条目时才用到,而多数 mod / 补丁 Pak 并不是 Oodle 压缩的。只有写入时勾选 Oodle 压缩才会触发上面这个崩溃。
上一版(v1.1.0)的内容
- 主题切换:跟随系统 / 浅色 / 深色。浅色主题在大屏上是一整片亮面,深色主题正文为纯白(15.1:1)
- 只放大文字,不再整体缩放控件与间距
- 宽屏两列布局 —— 设置页从"比窗口还高"变成"一屏看全"
- 对比度修复 —— 卡片标题 2.5:1 → 5.4:1(原先 142 处
Opacity压暗把对比度乘没了) - 说明文字收进各页共用的「使用说明」浮层
app.manifest补上 DPI 感知声明(高分屏不再位图拉伸)
安装
Windows:解压后运行 Prism.Desktop.Desktop.exe。
Android:安装 android/Prism-Android-Signed.apk。
签名说明:Android 包由 .NET Android 用调试证书签名(
CN=Android Debug,SHA-176:DB:3A:E3:E2:5A:CB:6D:76:7B:22:34:E4:EA:98:53:B0:7D:E6:A3),与上一版一致,可直接覆盖安装并保留数据。调试证书仅适合自用与内部分发。
已知限制
- 只支持
.pak;未实现.utoc/.ucas。 - 不内置映射文件,需从游戏中自行导入。
- 需要 AES 密钥的 pak,请在设置页填入。
- 跨格式转换需要映射文件(
.usmap/.jmap);缺映射的贴图会被跳过并在明细里说明。 - 本地化三路合并只在提供基准文件时生效。
- 浏览页左侧列表宽度固定,还不能拖动调整。
校验
见 SHA256SUMS.txt。
许可
GPL-3.0,继承自上游。见仓库内 LICENSE 与 NOTICE。