Repository navigation
Releases: CN6/zipnest
Releases · CN6/zipnest
Release list
ZipNest v0.4.15
修复
- 压缩包里名字奇怪的文件不再被丢掉:以前遇到
CON、nul.tar.gz、aux.txt这类 Windows 不允许的文件名,或者名字里有<>:"|?*、超长(超过 255 字节)、带..或盘符的条目,ZipNest 会把它们跳过——解压出来的文件比压缩包里少,却只显示一句「完成」。现在这些名字会被自动改成 Windows 能用的名字(CON→CON_、C:\x.txt→x.txt、超长名截短但保留扩展名),文件一个都不会少,改过的名字会在完成窗口里一条条列出来(原始名 → 新名字)。 - 同名条目不再互相覆盖:压缩包里同时有
report.txt和Report.TXT(Windows 分不清大小写)这类情况时,现在两个文件都会解压出来(第二个自动加序号),以前会只剩一个。 - 解压失败不再显示成「完成」:真的有文件写不出来时(被占用、没有权限、磁盘满、路径被符号链接挡住等),现在会弹出窗口,逐条列出是哪个文件、为什么失败,并且明确告诉你哪些文件已经解压成功。以前这种半成功的结果会显示「完成(N 个条目已跳过)」,看起来像一切正常。
- 修掉「超长路径解压失败」:文件名和目录层级很深、总路径超过 Windows 260 字符上限时,以前会写入失败,现在能正常解压出来。
- 「跳过已存在文件」的提示改成
完成(N 个已存在的文件按你的设置跳过)——这是你自己在解压对话框里的选择,和「文件写不出来」区分开。
ZipNest v0.4.14
变更
- 点「设置」不再弹出新窗口:现在整个窗口直接切换到设置页,左上角「← 返回」就回到压缩包界面,全程只有 ZipNest 一个窗口。
- 上一版把设置做成了独立窗口,用起来像是又开了一个程序;换成页面之后,设置能完整铺满窗口,长列表也能滚到最后一行。
- 保存、取消、回车保存、Esc 返回这些习惯操作都不变。
ZipNest v0.4.13
新增
- 「设为默认解压软件」现在点一下就直接生效:以前它只是把你送到系统的「默认应用」页面,很多人到了那儿不知道该怎么点。现在点一下,ZIP / 7Z / RAR / TAR / GZ / TGZ / BZ2 / XZ / ISO 这 9 个格式会立刻改成用 ZipNest 打开 —— 不用重启,不用再确认,也不用离开 ZipNest。
- 已经被别的解压软件(Bandizip、WinRAR、系统自带等)抢走的格式同样能改回来。
- 装完就是默认:安装版装好、便携版第一次打开,都会自动完成这一步。
- 系统仍然保留你的后悔权:以后你在「打开方式」里选了别的程序,ZipNest 不会偷偷改回去;想再拿回来,点一下这个按钮就行。
- 设置窗口变成独立的窗口了:可以单独移动、缩放、最小化和关闭,也能盖在别的窗口上面。以前它被关在主窗口里面,内容会被文件列表挡住、或者底部露不出去。
变更
- 去掉了「按格式逐个设置」和「打开系统『默认应用』设置」:这两个功能把选择丢回给用户,用起来反而不知道该怎么办;现在默认关联这件事由上面那个按钮一次做完。
修复
- 装满之后
.zip终于真的用 ZipNest 打开了:以前安装只登记了「推荐用 ZipNest」,而 Windows 真正依据的那条记录没动,所以装完.zip还是被系统自带或别的解压软件接走 —— 这就是压缩包默认程序「设了不生效」的根因。
ZipNest v0.4.12
新增
- 「按格式逐个设置」(设置 → 系统集成):9 个压缩包格式列成一张表,每个格式都能单独勾选要不要归 ZipNest 打开 —— 比如
.zip、.7z用 ZipNest,.tar留给你的开发工具,互不影响。取消勾选会真的把那个格式还回去(只清我们写的那个值,不动你后来选的别的程序)。表格右边还会显示每个格式现在的真实状态:ZipNest ✓/未认领/已勾选,点保存生效/被系统记住给了 xxx。 - 「在系统弹窗里选…」按钮:某个格式已经被系统记住给了别的程序时(
.zip给了 Bandizip、WinRAR 或系统自带最常见),Windows 不允许任何程序自己改回来。这个按钮会为那个格式打开系统自带的「你要如何打开此文件?」对话框,你在里面选 ZipNest 并勾上「始终」——这一步是系统自己记录你的选择,所以立刻生效,不用重启、不用去翻设置。做法和 Bandizip 的关联设置一样。 - 「全选 / 全不选」两个按钮,一次勾完或全部取消。
修复
- 一键设为默认现在真的能到位:点「一键设为默认解压软件」会打开系统的默认程序页面(Windows 11 上直接定位到 ZipNest 那一页),确认一次即可;被占用的格式再配合上面的系统弹窗,逐个也能解决。
- 解压「自动重命名」不会再变成覆盖:极端情况下(
名字 (2)到名字 (9999)都被占用)以前会回落到原名直接覆盖,现在会跳过这个文件并在结果里提示。 - 解压失败不再改动原文件的只读属性:以前为了让替换成功会先去掉目标文件的只读位,如果替换随后失败(文件被占用、目标是目录、磁盘满),那个只读位就永久丢了;现在失败会原样恢复。
- 静默安装(
/S)不再「成功」地失败,也会创建桌面快捷方式:以前静默安装无论失败与否都返回成功、而且桌面上什么都不建。现在失败会返回非零退出码,桌面上照常创建快捷方式。 - 安装完成后不再谎报「已登记为默认」:如果某个格式其实已被别的程序占住,安装详情会明确写出来并告诉你去哪里改,而不是让你以为已经生效。
- Windows 11 右键菜单升级时不再先消失再重装:以前升级过程中菜单会先被卸掉,中间任何一步失败就得重新装一次才有;现在优先原地升级。
- 文件选择框的「所有文件 / 压缩包」和压缩格式说明会跟着界面语言走了(以前固定英文)。
ZipNest v0.4.11
新增
- 「一键设为默认解压软件」(设置 → 系统集成):如果某个压缩包格式已经被系统记住给了别的程序(最常见是
.zip给了 Bandizip / WinRAR / 系统自带),Windows 会锁住这个选择,程序自己改不了。现在点一下按钮就会打开系统的默认程序页面(Windows 11 上定位到 ZipNest 那一页),确认一次,这台电脑上的压缩包格式就一次性归 ZipNest —— 和 Bandizip 的做法一样。 - 设置里直接显示当前状态:「ZipNest 是压缩包的默认打开程序」「未启用默认关联」「这几个格式被系统记住给了别的程序(列出格式)」—— 一眼就能看出到底生效没有,不用靠双击试探。
修复
- 解压「自动重命名」不会再变成覆盖:极端情况下(同名
名字 (2)…名字 (9999)都被占用)以前会回落到原名直接覆盖,现在会跳过该条目并计入提示。 - 解压失败不再清掉原文件的只读属性:以前为了让替换成功会先去掉目标文件的只读位,如果替换随后失败(文件被占用、目标是目录、磁盘满),那个只读位就永久丢了。现在失败会原样恢复。
- 静默安装不再「成功」地失败:
/S静默安装以前一条提示都不显示、并且无论失败与否都返回成功,用脚本批量部署会把「一个文件都没复制」记成安装成功。现在失败会返回非零退出码。 /S静默安装也会创建桌面快捷方式:v0.4.10 把桌面快捷方式挪到了向导最后一页的勾选框,而静默安装根本没有那一页,于是无人值守装完桌面上什么都没有。- 安装完成后不再谎报「已登记为默认」:回读注册表时会一并读系统真正的「记住的选择」,被别的程序占住就明确写出来并提示怎么改。
- Windows 11 右键菜单升级时不再先消失再重装:以前每次升级都是「先卸载再安装」,中间任何一步失败右键菜单就没了;现在优先原地升级。
ZipNest v0.4.10
新增
- 安装时可以自己决定要不要桌面快捷方式:安装向导最后一步(和「运行 ZipNest」并排)多了一个勾选框「创建桌面快捷方式」,默认勾上;取消勾选就不会在桌面放图标。开始菜单里的快捷方式不受影响(升级安装也不会删掉你已有的桌面图标)。
修复
- 不再每次打开程序都闪一下「正在检查更新」:自动检查改为后台静默进行 —— 检查过程中不弹窗,没有新版本时什么都不显示,只有确实发现新版本才会提示。(以前只要有网络往返,启动时都会先闪出一个检查窗口。)
- 断网时不再弹出更新失败对话框:启动时的自动检查如果请求失败(没网、GitHub 接口异常),现在静默跳过,不打扰你;手动点「检查更新」仍旧会显示进度和失败原因,因为那是你主动要的。
说明
- 界面依然是纯原生绘制(egui),不依赖 WebView2,安装包体积基本没变
ZipNest v0.4.9
新增:设置 → 帮助与反馈
- 复制诊断信息:一键带走排查需要的东西 —— 版本号、Windows 版本与位数、程序所在路径(自动把你的用户名替换成
%USERPROFILE%)、文件关联开关状态、7z 引擎是否可用、最近一次错误的代号。不含任何文件名、压缩包内容或你在做什么。 - 用邮件发送反馈:会先把诊断信息复制到剪贴板,再打开你的邮件客户端并预填收件人、主题和正文。这台机器没配邮件客户端(点了没反应)也没关系 —— 信息已经在剪贴板里,粘到网页邮箱发即可。
- 程序永远不会自己联网发送任何东西:只有你点按钮、由你的邮件客户端发出。
修复:更新时安装包一直停在「创建快捷方式」
v0.4.8 的安装包在复制完文件后会调用 zipnest.exe --register-integration,用的是 nsExec::ExecToLog —— 它会等到子进程退出并且关掉输出管道。而在更新场景里,如果 zipnest.exe 当时被占用(杀软扫描、资源管理器加载着 shell 扩展等),上面的复制会因为 SetOverwrite try 被静默跳过,于是安装包调用到的是旧版 exe:旧版不认识这个参数,当成「没有参数」直接打开主窗口,永不退出,安装程序就一直等下去(进度条满、按钮灰着)。
现在:
- 改成
Exec(只启动、不等待),无论对方是什么版本都卡不住安装; - 调用前用
GetDLLVersion检查zipnest.exe的文件版本,旧文件没替换成功就跳过,并在安装详情里写明「仍是旧版本,跳过自动注册;下次启动会补上」; - 注册后回读注册表,把真实结果写进安装详情(「已登记…」/「没有生效…」),不再靠退出码猜;
- 命令行模式(
--register-integration/--unregister-shell)加了 20 秒硬上限,卸载器也不会被卡住; - 安装详情每一步都有自己的文字(「注册压缩包默认打开方式…」「注册 Windows 11 右键菜单…」),以后万一还卡,点「显示详情」截一张图就能指出卡在哪一步。
版本判断的分支顺序是实测校准过的(0.3.x / 0.4.8 / 0.4.9 / 0.4.10 / 0.5.0 / 1.0.0):
IntCmpU的参数顺序是[相等] [小于] [大于]。写反的话 0.3.x 会被当成「够新」(多弹一个窗口),而 0.5.0 以后会被当成「太旧」—— 那正好又变成「装完不是默认」的老毛病。
说明
- 界面依然是纯原生绘制(egui),不依赖 WebView2,安装包体积基本没变
- 关联注册全部在 HKCU(按用户),不需要管理员权限
- 反馈邮箱不写在这里:软件里点「复制邮箱」拿到的就是最新那个地址
ZipNest v0.4.8
修复
- 装到别人的电脑上不再是「不是默认打开方式」:以前只有手动打开「设置 → 集成」勾选并保存才会写关联注册表,安装包和首次启动都不写,而旧版默认值还是「不注册」。所以换一台电脑装完,双击压缩包打开的还是系统自带那套。现在三道保险:
- 安装包复制完文件后立刻注册(
zipnest.exe --register-integration),装完不用打开程序就是默认; - 首次启动也会注册一次(便携版没有安装包,走的正是这条路);
- 之后不再自动改动:你在设置里取消勾选,就长期生效,不会下次启动又被打开。
- 安装包复制完文件后立刻注册(
- ZipNest 终于出现在系统「默认应用」列表里:补上了
RegisteredApplications+Capabilities和Applications\zipnest.exe注册。「打开方式」里显示的是 ZipNest,不再是一条裸路径。 - 系统已经「记住」的格式不再假装注册成功:如果某个扩展名(最常见的是
.zip)已被你在「打开方式」里指定给别的程序,Windows 会锁住这个选择——程序既不能改写也不能删除(实测:写 ProgId 报「不允许所请求的注册表访问权」,reg delete /f报「拒绝访问」)。以前勾了也没用且毫无提示;现在设置页会明确列出这些扩展名,并给一个按钮直接打开系统「默认应用」页面去改。 - 被记事本存成带 BOM 的
settings.json不再清空全部设置:BOM 会让整个文件解析失败,程序退回默认值并在下次保存时把默认值覆盖回去,语言、覆盖策略、窗口大小位置等偏好全丢。现在读取时忽略开头的 BOM。
说明
- 关联注册全部在 HKCU(按用户),不需要管理员权限;卸载时照旧由
--unregister-shell清理,并且只清除指向 ZipNest 的值,不会动你后来选的其它程序 - 界面依然是纯原生绘制(egui),不依赖 WebView2,安装包体积基本没变
验证(真机实测)
| 场景 | 结果 |
|---|---|
无注册状态(模拟新装机器)双击 .7z |
不启动 ZipNest(复现旧版问题) |
--register-integration 后双击同一个 .7z |
启动 zipnest.exe |
| 无注册状态下启动程序一次 | 9 个扩展名 + Capabilities + 右键菜单全部注册,integration_applied 置真 |
| 取消勾选后重启程序 | 不再重新注册(opt-out 生效) |
cargo test --workspace / cargo clippy / pnpm test |
全绿 |
校验(SHA256)
| 文件 | 校验值 |
|---|---|
ZipNest_0.4.8_x64-setup.exe |
1EA168175193C0E20FDD3E04014513F45CACD4F5F35249B59709A4D1084631A1 |
ZipNest_0.4.8_x64_portable.zip |
E450B72F3BAEADC17622C73959777D14DE5E2E1769D5FFFBDC6A4DA1CF854808 |
ZipNest v0.4.7
修复
- 取消「记住最大化」(按你的方案):以前最大化状态也被记下来,重开时要"先按普通尺寸建窗口、再最大化",所以必然闪一下。现在只记窗口的大小和位置,不记最大化:每次打开都是你上次那个正常尺寸的普通窗口,你自己按
Win+↑最大化即可。实测:可见状态里不再出现"小窗口 → 全屏"的跳变。 - 另外试过把窗口"创建成隐藏、首帧再显示"来消掉启动瞬间那个 16×16 小方块;实测在这台机器上 Windows 应用尺寸比显示晚约 0.3 秒,这个小方块仍然存在,但已经没有"先小后大"的跳变了。
下载
| 版本 | 文件 |
|---|---|
| 安装版(推荐) | ZipNest_0.4.7_x64-setup.exe |
| 便携版 | ZipNest_0.4.7_x64_portable.zip |
ZipNest v0.4.6
修复
- 打开时先闪一个小窗口、再放大:上一版恢复最大化是「先按普通尺寸建窗口、第一帧再请求最大化」,所以能看见一瞬的小窗口。现在最大化时把窗口创建成「隐藏 + 已经是最大化」,第一帧再显示,并且「请求最大化」和「显示」在同一帧发出——从构造上就不存在那个小窗口。实测时间线:窗口第一次可见时就是最大化(2576×1408、zoomed=True),没有中间的小尺寸状态。
下载
| 版本 | 文件 |
|---|---|
| 安装版(推荐) | ZipNest_0.4.6_x64-setup.exe |
| 便携版 | ZipNest_0.4.6_x64_portable.zip |