2024 年我写过一个叫 ProjectEnc 的工具,C# WinForms 写的,作用就一件事:把 ILMerge 合并、ConfuserEx 加密、Inno Setup 打包这三步串起来,省得每次编译完在几个工具之间来回切。

用了一年多,能用,但越用越别扭。模板是外挂的,改配置得对着 ConfuserEx 和 Inno Setup 的文档手写 .crproj 和 .iss;加密那几十个参数全靠猜默认值;日志是弹窗一闪而过,出问题了都不知道卡在哪一步。再加上DevExpress那套东西越来越重,于是干脆重写了一个,叫 SealPack。

五步向导 · 合并步骤

SealPack 是什么

一句话:程序合并 / 加密 / 打包工作台。Windows 桌面应用,Rust + Tauri 2,前端是原生 TypeScript + TailwindCSS 4,没引任何 UI 框架。

它把三个成熟的命令行工具串成一条流水线:

阶段工具作用
① 程序合并ILMerge把多个程序集合并进主程序,减少分发文件
② 程序加密ConfuserEx混淆 + 压缩保护主程序,提升反编译成本
③ 安装包打包Inno Setup生成安装程序,支持口令、整包加密与代码签名

说白了还是个”套壳”,SealPack 本身不实现任何密码学算法——混淆是 ConfuserEx 干的,安装包加密是 Inno Setup 干的。它负责的是工程管理、参数编排、模板渲染和实时日志回传,也就是把「读三个工具的文档、手写两份配置」变成「点几下开关」。

五步向导

整个界面就是一条向导:主程序 → 合并 → 加密 → 打包 → 执行。

步骤条可以随便点、可以跳步(比如只打包不加密),也可以单独重跑某一步,每步下面有一行实时摘要告诉你当前状态。所有配置按工程保存,主程序、输出目录、安装口令、待合并程序集、加密开关、排除项,JSON 持久化在应用数据目录,下次打开接着用。

  • 合并:带搜索和类型筛选的文件树勾选程序集。执行前自动把主程序备份成 <名称>.bakup,不搞不可逆的原地覆盖。
  • 加密:5 组共 36 个配置项,覆盖对称(常量加密 / 资源加密 / 反篡改)、非对称(RSA 强名称签名)、哈希(校验和、口令派生)三个族。懒得逐项调的话,有「不加密 / 基础 / 标准 / 严格」四档预设。
  • 打包:压缩格式 9 档、三种打包模式(单文件 / 免安装 / 分卷)、XChaCha20 整包加密、Authenticode 签名、SHA-256 校验清单。

加密选项

关键是 .crproj 和 .iss 都由界面上的选项自动生成,不用手写了。模板编辑器还在,降级成了默认收起的”高级”区,需要微调的时候再展开。

打包排除项

几个觉得写得还行的地方

实时日志。 外部工具的 stdout/stderr 逐行推到界面上,而且自动识别 UTF-8 和 GBK——简体中文 Windows 的 ANSI 代码页就是 GBK,ConfuserEx 输出中文乱码这个坑踩过一次就够了。

执行

工具自举。 三个外部工具路径都可配置,缺失时可以直接下载(URL 和 SHA-256 固定校验),也能一键改用本机已装的那份。另外会探测 .NET Framework 4.x,缺了会横幅提示,并说明哪些功能受影响——ILMerge 和 ConfuserEx 是 .NET 程序,缺了跑不了,但打包不受影响,Inno Setup 是原生的。

两套界面。 「瑞士技术网格」和「终端」两套设计,共用同一份 DOM,差异 100% 由 CSS 表达,可以实时切换;明暗支持跟随系统 / 深色 / 浅色三态。Win11 上还启了 Mica Alt 材质,标题栏侧栏半透明,不支持就自动退回实色。

终端皮肤

为什么是 Rust

ProjectEnc 是 C# + DevExpress,安装包几十 MB 起步,界面库还闭源。这次换 Rust + Tauri 2,前端就是原生 TS + Tailwind,包体积掉到几 MB,窗口材质、无边框缩放这些系统级的东西也更顺手。

Rust 的学习曲线确实陡,但这个工具的逻辑并不复杂——无非是拼命令行、起进程、读输出、写配置文件,Rust 做这些很合适。何况上一个项目 PocketArk 已经把 Tauri 那套套路趟过一遍了。

系统要求

  • Windows 10 1809+ / Windows 11(窗口材质需要 Win11)
  • .NET Framework 4.8+(缺失时合并、加密两步不可用,打包不受影响)
  • WebView2 运行时(Win11 自带)

项目是 MIT 协议,文档写得比较全:使用指南、选项参考、架构设计、数据与安全,都在仓库的 docs/ 里。

GitHub:https://github.com/hmilyld/SealPack

有做 .NET 程序分发的朋友可以试试,也欢迎提 issue。