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

2024-01-04 17:52:37 +08:00
 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 ,尺寸小、单文件、无依赖都可以做到。
25059 次点击
所在节点    程序员
123 条回复
ysc3839
2024-01-05 12:37:55 +08:00
@PrinceofInj Win11 正式版还没有 WinUI 3 ,仅仅是测试版有
allenby
2024-01-05 12:45:40 +08:00
qt 不错
f14g
2024-01-05 12:50:30 +08:00
aardio
cway
2024-01-05 12:53:30 +08:00
不如用老古董 vb6 ,文件小,不依赖.net
NobodyVe2x
2024-01-05 13:03:20 +08:00
gxvsko
2024-01-05 13:37:08 +08:00
WalterHs
2024-01-05 14:52:08 +08:00
Kotlin Compose 跨平台
chu1337
2024-01-05 15:09:03 +08:00
weeei
2024-01-05 15:14:23 +08:00
为什么你的方案里有 MFC ,却没有 WTL ?
Ethkuil
2024-01-05 15:35:03 +08:00
- winform
- webview2, 用 Web 写 GUI

「 Windows 小应用」,对我来说,超过 10MB 都不能算轻便了……
dianso
2024-01-05 15:37:59 +08:00
GO+WEBVIEW2
9dP06m83vIV00l72
2024-01-05 16:06:54 +08:00
GLib/GTK + Vala(C# 原生版)写跨平台应用挺好的呀

袋鼠数据库工具 使用的技术栈依赖情况如下:
================================================
袋鼠数据库工具 Multiple (开发版) 4.0.0.240104
系统平台
Windows 11 22H2
编译器
Vala 0.56.13
GCC 13.2.0
核心库
GLib 2.78.1
JSON-GLib 1.8.0
libsoup 2.74.3
OpenSSL 3.1.4
GTK 4.12.4
libadwaita 1.4.0
libpanel 1.4.0
GtkSourceView 5.10.0
数据库连接库
sqlite3mc 1.8.1
libmysqlclient 3.1.13
libmariadb 3.1.13
libpq 16.1
dblib 1.4.8
hiredis 1.2.0
nananqujava
2024-01-05 16:07:58 +08:00
winform 或者 WPF
miaomiao888
2024-01-05 16:15:02 +08:00
既然提到了易语言,不如试试炫语言?这早期是个界面库,之后又加了个 IDE ,应该能满足你对界面美观又体积小的要求,性能的话本身也是基于 C++,应该没啥区别。
wjd2002
2024-01-05 16:35:34 +08:00
Delphi 可以,小、快,基本不需要其它 Dll ,有很多第三方美化 UI ,只有一个前提,得会 pascal 。
leqoqo
2024-01-05 17:03:34 +08:00
windows 7 好像就自带.net framework 2 了, 或者考虑考虑早期的 飞信内置虚拟机
s7964926
2024-01-05 17:08:06 +08:00
我也一直在考虑 Windows 到底用什么去开发, 后来选择了 C++ 和 Qt ,原因无他,比较方便。
界面啥的我也已经不做要求了……能跑就行,但是一堆文件在软件根目录看起来真的很恶心。
楼主最后选择的是啥?我准备把我的小翻译器也重构下。
feirisu
2024-01-05 18:15:00 +08:00
@s7964926 c#加 avalonia 的 AOT 方案,具体实施文章有补充
ikas
2024-01-05 20:12:05 +08:00
c++ 调用原生 winui3 ui 不行么,我的一个 app,秒启动,启动后内存 30M..打包那就更小了
openmynet
2024-01-05 20:54:51 +08:00
rust 的 iced ,优点:尺寸小、单文件、无依赖,UI 可以做到很漂亮,跨平台;缺点:得会 rust ,目前多窗口好像还没有。awesome-iced 下列举了一些在使用 iced 开源项目

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

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

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

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

© 2021 V2EX