夜雨聆风学习资料网

ARTICLE · 1255435

AICoding win桌面软件从100MB到0.5MB

AICoding win桌面软件从100MB到0.5MB
最近使用deepseek harness做了很多有趣的项目
其中一个是植物浇水提醒程序
之前用GLM-5(好像是这个)
做的喝水提醒程序,下来要上百MB
这次想用deepseek harness做一个植物浇水提醒程序
我已经有了一个网页版的,但不能自动提醒,只能记录浇水时间,需要手动打开网页才能看到是否到了浇水时间
这次希望deepseek harness做的程序,不要大于30MB,最后做出来,居然是0.5MB,被这大小惊艳到了,上次被软件惊艳到还是everthing搜索软件
我制作植物提醒软件给的提示词:
给我做个电脑软件
可以安装到win10或者win11上
就是个植物浇水提醒程序
可以添加植物名称、浇水周期、浇水时间
然后时间到了,自动弹窗,提醒该浇水了
就是弹出的弹窗,要美观,就是那种简约美
还有这个软件,也是那种简约美的风格
进入软件后,会显示,所有的植物,它们上次浇水时间是什么时候,下次浇水时间是什么时候,浇水周期是多久
还有,这个软件的安装包,不能大于30MB
我能想到的是用rust语言,当然,你有更好的方法,用你的也可以
下来说说,deepseek harness是如何让程序安装包这么小的
deepseek harness这次做的软件,给起了名字,叫青禾
安装程序各个部分的大小:
1.主程序 Qinghe.exe: 369 KB
2.安装器增加的部分:160 KB
主程序里,真正占体积的大件只有两个:
  1. 多尺寸应用图标:约 50 KB
  2. 两秒钟的提示音:约 176 KB
剩下的,是界面、逻辑、资源索引和安装信息
没有浏览器内核,没有随包携带的运行环境,没有数据库,没有字体包,也没有第三方 UI 框架
真正起作用的几个点

不把运行环境塞进安装包

程序运行,直接使用系统自带的 .NET 运行环境
传统做法有两种:
一种是把运行环境一起打包,叫“自带运行时”。好处是目标电脑没装.NET 也能跑,坏处是安装包会变成几十 MB 到上百 MB
另一种是只打包自己的程序,运行时直接使用 Windows 已经装好的 .NET。好处是安装包极小,坏处是目标电脑必须已经有 .NET
青禾选择了后者
Windows 10 和 Windows 11 通常已经自带 .NET Framework 4.x,所以安装包里不需要再带一份

界面不用背一个浏览器

很多桌面软件会用 Electron 做界面
Electron 的好处是前端技术通用,坏处是它会把一整个 Chromium 浏览器和Node.js 运行环境一起打包。一个简单的桌面工具,安装包也可能轻松达到80~150 MB
青禾不需要浏览器
它的窗口、卡片、按钮、圆角、阴影、提醒弹窗,全部由 Windows 原生绘制
这项技术叫 WPF
WPF 是 Windows 自带的界面工具箱。它不需要额外安装浏览器,也不需要网页运行时。程序启动时,直接调用系统已有的界面能力
所以安装包里没有:
Chromium
Node.js
WebView2
前端构建产物
一整套网页运行环境

整个安装包只有一个 exe

用户拿到青禾时,只需要一个文件:
青禾-植物浇水提醒-安装包.exe
不需要额外下载 DLL,不需要解压出一堆文件夹,也不需要先装某个安装框架
这是因为安装器本身也是用 C#+ WPF 写的
这项技术叫自写单文件安装器
它的做法是:把主程序 Qinghe.exe 作为资源,嵌进安装器内部。用户双击安装器后,安装器再把主程序释放到目标目录
卸载器也不是另写的一个大程序,而是安装器换一个参数运行。安装时把它复制一份,命名为 Uninstall.exe
一套代码,安装和卸载共用
这省掉的是外部 DLL 文件夹、运行库目录和大型打包框架

几十条数据,不需要数据库

植物数据有多少?
个人通常不超过几十条
如果引入 SQLite,当然也能做,但会多出数据库 DLL、建表、迁移、连接管理这些事情。对这个场景来说,成本和体积都不划算
青禾用的是 JSON 本地数据存储
植物名字、周期、提醒时间、上次浇水时间、稍后提醒状态,全部保存在一个文本文件里
它轻量、可读、容易备份,出问题也容易排查

没有 Visual Studio 也能编译

还有一个技术不直接决定安装包大小,但决定了这个项目能不能轻量地做出来
它解决的是:没有大型开发工具,也能把 C#源码变成 exe
这项技术叫 csc.exe
csc 是 Windows 自带的 C#编译器
这次没有安装 Visual Studio,也没有引入庞大的构建工具链,而是直接调用系统里的 csc,把源码编译成程序
这次deepseek harness写这个软件,确实被惊艳到了,许多曾经觉得AI不可能完成的事情,现在都可以交给AI去试试,毕竟,AI现在都能解决菲尔兹奖级别的问题,平时工作生活中的问题,绝大部分对于AI来说,都是小菜一碟。如果觉得AI做的不好,大概率是没有给AI提供好上下文,工作中许多事情,有了上下文,才有正确的答案,没有足够的上下文,AI只能猜猜猜。还有,就是没有给够AI充足的权限,只要给够权限,AI自主能做许多事情,不用事事请示,解放了自己,也解放了AI的能力。

相关学习资料