Windows 下开发小应用 GUI,真的很难选方案

125 天前
 feirisu
今天想做一个简单的小 exe ,需要调用不少原生 Windows API ,想要尺寸小一些,不要有依赖,最好单文件。
其次,UI 不想要 Win32 原生控件。

没想到在 2024 年的今天,这个看似简单的问题是如此难找到一个完美符合要求的。

1.c++ win32 原生,CreateWindow 后面要设 Font 、所有事件自己从处理循环里接。
2.c++ MFC ,想要 UI 好看,Pass 。
3.c#的 WPF ,是很方便,也有很多 UI 库,但是目前不能 AOT (正式版本),独立打包直接去到 100+M ,Pass 。
4.c#的 Form ,UI 不好看,打包也很大,可以 AOT 但是基本是空程序才行,稍微复杂点因为 AOT 隐式启用裁剪,复杂点的代码就会启动不了。
5.c#的 Avalonia ,UI 还行,和 Form 一样 AOT 后有可能启动不了,独立打包 60-80M 也有点大,独立的也还另外带 3 个 DLL ,最难受的是启动很慢,需要 2-3 秒左右的时间才出窗口。
6.QT ,不熟 Pass 。
7.MAUI(WINUI),都不想提。
8.electron ,一堆文件,太重了。
9.flutter ,需要很多原生代码,还是得自己写 c++,两头折腾,尺寸倒是比 c#的那几个小不少。
10.易语言,会,但真的不想用。

微软真的是不干人事,老老实实把 WPF 的 AOT 做好,不知道能造福多少客户端开发。

想来想去,不如控制台得了,除了没 GUI ,尺寸小、单文件、无依赖都可以做到。
12670 次点击
所在节点    程序员
122 条回复
tave
125 天前
winform+webview2 挺符合你的需求吧,只需要一个 webview2 控件,ui 前端轮子足够用成本也低,逻辑全靠 C#,打包还不会像 cef 多一个浏览器内核,体积有保证
0o0O0o0O0o
125 天前
explon
125 天前
试试 abp.io
feirisu
125 天前
@tave 前端不熟,另外 webview2 必须装 edge ,如果自用还行,发出去给人用不一定有 edge ( win7 )。
Binwalker
125 天前
tauri 吧,体积小
StubbornHuang
125 天前
duilib+cef
xmoer
125 天前
哈哈哈,楼主总结的很到位,微软真的是不干人事 😂
Mithril
125 天前
MFC 创建的时候就可以选新的 office 风格了吧?

实在不行你可以 webview2 ,相比 Electron 能省点地方。
shuax
125 天前
duilib
cocang
125 天前
楼上说的 webview2 就挺好,覆盖率已经很可观了,也符合你“尺寸小一些,不要有依赖,最好单文件”的要求
fields
125 天前
electron 吧 文件多久多呗 好在快速开发、没啥学习成本都
0o0O0o0O0o
125 天前
> 微软真的是不干人事,...,不知道能造福多少客户端开发

我觉得微软就算愿意造福客户端开发也不会造福 2024 年想支持 Win7 的客户端开发吧
feirisu
125 天前
@shuax duilib 确实有可行性,除了没 c#的开发效率以外。
feirisu
125 天前
@0o0O0o0O0o 是的啊,新的 MAUI 就不支持 Win7 ,github 上也有人在喷,另外这玩意 AOT 也不怎么好用。
morgan1freeman
125 天前
不跨平台 纠结这么多干嘛 直接.net wpf 一把梭,
feirisu
125 天前
@fields 太重了太重了,你想想写个启动器,加个远线程注入带点 http 请求,UI 就俩 TextBox 几个 Label 和按钮,这太重了。
feirisu
125 天前
@morgan1freeman 编出去太大啊,太大了啊,独立包 100M 了
Hellert
125 天前
Windows GUI 最强的还是 Delphi ,可惜不是免费的。
可以看一下 Lazarus 。
churchill
125 天前
"小应用 GUI 想要尺寸小一些,不要有依赖,最好单文件"
难道说的不是 ImGui ?
morgan1freeman
125 天前
另外微软家的东西 ,业内都是嗤之以鼻的,基本上没几个能善终,好多都烂尾了

一般技术选型,狗都不用微软家的技术

silverlight RIP

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1005903

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX