Skip to content

Releases: CN6/zipnest

ZipNest v0.4.15

Choose a tag to compare

@CN6 CN6 released this 11 Oct 04:22

修复

  • 压缩包里名字奇怪的文件不再被丢掉:以前遇到 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

Choose a tag to compare

@CN6 CN6 released this 10 Oct 19:18

变更

  • 点「设置」不再弹出新窗口:现在整个窗口直接切换到设置页,左上角「← 返回」就回到压缩包界面,全程只有 ZipNest 一个窗口。
    • 上一版把设置做成了独立窗口,用起来像是又开了一个程序;换成页面之后,设置能完整铺满窗口,长列表也能滚到最后一行。
    • 保存、取消、回车保存、Esc 返回这些习惯操作都不变。

ZipNest v0.4.13

Choose a tag to compare

@CN6 CN6 released this 10 Oct 18:27

新增

  • 「设为默认解压软件」现在点一下就直接生效:以前它只是把你送到系统的「默认应用」页面,很多人到了那儿不知道该怎么点。现在点一下,ZIP / 7Z / RAR / TAR / GZ / TGZ / BZ2 / XZ / ISO 这 9 个格式会立刻改成用 ZipNest 打开 —— 不用重启,不用再确认,也不用离开 ZipNest。
    • 已经被别的解压软件(Bandizip、WinRAR、系统自带等)抢走的格式同样能改回来。
    • 装完就是默认:安装版装好、便携版第一次打开,都会自动完成这一步。
    • 系统仍然保留你的后悔权:以后你在「打开方式」里选了别的程序,ZipNest 不会偷偷改回去;想再拿回来,点一下这个按钮就行。
  • 设置窗口变成独立的窗口了:可以单独移动、缩放、最小化和关闭,也能盖在别的窗口上面。以前它被关在主窗口里面,内容会被文件列表挡住、或者底部露不出去。

变更

  • 去掉了「按格式逐个设置」和「打开系统『默认应用』设置」:这两个功能把选择丢回给用户,用起来反而不知道该怎么办;现在默认关联这件事由上面那个按钮一次做完。

修复

  • 装满之后 .zip 终于真的用 ZipNest 打开了:以前安装只登记了「推荐用 ZipNest」,而 Windows 真正依据的那条记录没动,所以装完 .zip 还是被系统自带或别的解压软件接走 —— 这就是压缩包默认程序「设了不生效」的根因。

ZipNest v0.4.12

Choose a tag to compare

@CN6 CN6 released this 10 Oct 17:38

新增

  • 「按格式逐个设置」(设置 → 系统集成):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

Choose a tag to compare

@CN6 CN6 released this 10 Oct 17:15

新增

  • 「一键设为默认解压软件」(设置 → 系统集成):如果某个压缩包格式已经被系统记住给了别的程序(最常见是 .zip 给了 Bandizip / WinRAR / 系统自带),Windows 会锁住这个选择,程序自己改不了。现在点一下按钮就会打开系统的默认程序页面(Windows 11 上定位到 ZipNest 那一页),确认一次,这台电脑上的压缩包格式就一次性归 ZipNest —— 和 Bandizip 的做法一样。
  • 设置里直接显示当前状态:「ZipNest 是压缩包的默认打开程序」「未启用默认关联」「这几个格式被系统记住给了别的程序(列出格式)」—— 一眼就能看出到底生效没有,不用靠双击试探。

修复

  • 解压「自动重命名」不会再变成覆盖:极端情况下(同名 名字 (2)…名字 (9999) 都被占用)以前会回落到原名直接覆盖,现在会跳过该条目并计入提示。
  • 解压失败不再清掉原文件的只读属性:以前为了让替换成功会先去掉目标文件的只读位,如果替换随后失败(文件被占用、目标是目录、磁盘满),那个只读位就永久丢了。现在失败会原样恢复。
  • 静默安装不再「成功」地失败:/S 静默安装以前一条提示都不显示、并且无论失败与否都返回成功,用脚本批量部署会把「一个文件都没复制」记成安装成功。现在失败会返回非零退出码。
  • /S 静默安装也会创建桌面快捷方式:v0.4.10 把桌面快捷方式挪到了向导最后一页的勾选框,而静默安装根本没有那一页,于是无人值守装完桌面上什么都没有。
  • 安装完成后不再谎报「已登记为默认」:回读注册表时会一并读系统真正的「记住的选择」,被别的程序占住就明确写出来并提示怎么改。
  • Windows 11 右键菜单升级时不再先消失再重装:以前每次升级都是「先卸载再安装」,中间任何一步失败右键菜单就没了;现在优先原地升级。

ZipNest v0.4.10

Choose a tag to compare

@CN6 CN6 released this 08 Oct 21:34

新增

  • 安装时可以自己决定要不要桌面快捷方式:安装向导最后一步(和「运行 ZipNest」并排)多了一个勾选框「创建桌面快捷方式」,默认勾上;取消勾选就不会在桌面放图标。开始菜单里的快捷方式不受影响(升级安装也不会删掉你已有的桌面图标)。

修复

  • 不再每次打开程序都闪一下「正在检查更新」:自动检查改为后台静默进行 —— 检查过程中不弹窗,没有新版本时什么都不显示,只有确实发现新版本才会提示。(以前只要有网络往返,启动时都会先闪出一个检查窗口。)
  • 断网时不再弹出更新失败对话框:启动时的自动检查如果请求失败(没网、GitHub 接口异常),现在静默跳过,不打扰你;手动点「检查更新」仍旧会显示进度和失败原因,因为那是你主动要的。

说明

  • 界面依然是纯原生绘制(egui),不依赖 WebView2,安装包体积基本没变

ZipNest v0.4.9

Choose a tag to compare

@CN6 CN6 released this 08 Oct 14:39

新增:设置 → 帮助与反馈

  • 复制诊断信息:一键带走排查需要的东西 —— 版本号、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

Choose a tag to compare

@CN6 CN6 released this 07 Oct 13:26

修复

  • 装到别人的电脑上不再是「不是默认打开方式」:以前只有手动打开「设置 → 集成」勾选并保存才会写关联注册表,安装包和首次启动都不写,而旧版默认值还是「不注册」。所以换一台电脑装完,双击压缩包打开的还是系统自带那套。现在三道保险:
    • 安装包复制完文件后立刻注册(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

Choose a tag to compare

@CN6 CN6 released this 07 Oct 07:55

修复

  • 取消「记住最大化」(按你的方案):以前最大化状态也被记下来,重开时要"先按普通尺寸建窗口、再最大化",所以必然闪一下。现在只记窗口的大小和位置,不记最大化:每次打开都是你上次那个正常尺寸的普通窗口,你自己按 Win+↑ 最大化即可。实测:可见状态里不再出现"小窗口 → 全屏"的跳变。
  • 另外试过把窗口"创建成隐藏、首帧再显示"来消掉启动瞬间那个 16×16 小方块;实测在这台机器上 Windows 应用尺寸比显示晚约 0.3 秒,这个小方块仍然存在,但已经没有"先小后大"的跳变了。

下载

版本 文件
安装版(推荐) ZipNest_0.4.7_x64-setup.exe
便携版 ZipNest_0.4.7_x64_portable.zip

ZipNest v0.4.6

Choose a tag to compare

@CN6 CN6 released this 07 Oct 07:49

修复

  • 打开时先闪一个小窗口、再放大:上一版恢复最大化是「先按普通尺寸建窗口、第一帧再请求最大化」,所以能看见一瞬的小窗口。现在最大化时把窗口创建成「隐藏 + 已经是最大化」,第一帧再显示,并且「请求最大化」和「显示」在同一帧发出——从构造上就不存在那个小窗口。实测时间线:窗口第一次可见时就是最大化(2576×1408、zoomed=True),没有中间的小尺寸状态。

下载

版本 文件
安装版(推荐) ZipNest_0.4.6_x64-setup.exe
便携版 ZipNest_0.4.6_x64_portable.zip