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 ,尺寸小、单文件、无依赖都可以做到。
24980 次点击
所在节点    程序员
123 条回复
Promtheus
2024-01-05 08:45:20 +08:00
IMGUI
ltmst
2024-01-05 09:01:17 +08:00
关于 Avalonia 独立发布后有三个 dll 的问题,在解决方案加上这个就可以了


```
<AvaloniaUseCompiledBindingsByDefault>true</AvaloniaUseCompiledBindingsByDefault>
```
Avalonia 不依赖框架打包的得六七十兆,的确有点大
我在树莓派 3b 上运行,启动得好几秒
creanme
2024-01-05 09:03:21 +08:00
slint ?可以了解一下,可以使用 c++, js, rust 开发
anytk
2024-01-05 09:10:07 +08:00
nuklear ,用 gdi 后端,无依赖,尺寸小,单文件

https://github.com/Immediate-Mode-UI/Nuklear/
opiviqo
2024-01-05 09:13:17 +08:00
pyside pyqt
duke000
2024-01-05 09:18:18 +08:00
wxwidgets
leyoumake1997
2024-01-05 09:20:27 +08:00
试试[wails]( https://github.com/wailsapp/wails),程序嵌套了个 webview ,ui 界面套一些开源组件库绝对杠杠的,在配合 go 写一些简单的后端业务逻辑,打包出去最小的可执行文件也只有 10MB 左右。
xieren58
2024-01-05 09:29:58 +08:00
Avalonia 挺好用... 我做了几个小项目了...
nbboy
2024-01-05 09:30:33 +08:00
你熟悉哪个就用哪个,不要纠结这种东西,有时间纠结还不如花点时间在业务上。
june4
2024-01-05 09:33:15 +08:00
我以前直接在本地起个端口做成 web 服务
用默认浏览器,系统里浏览器总是有的
wodeguaiguai
2024-01-05 09:41:15 +08:00
miniblink
hankli
2024-01-05 09:45:29 +08:00
易语言: 我真的很伤心
FrankAdler
2024-01-05 09:46:33 +08:00
前几天自学 winforms 做了个应用启动器,感觉简单好用,好不好看就无所谓了
0TSH60F7J2rVkg8t
2024-01-05 09:48:47 +08:00
@Hellert 好像 Delphi 现在的公司 Embarcadero 推出了社区版,是可以免费使用的:
https://www.embarcadero.com/products/delphi/starter/free-download
frank1357
2024-01-05 10:02:23 +08:00
wails + 1 主程序 golang , 界面支持各前端技术栈;
golang 原生跨平台,前端技术界面便捷/丰富程度也非其他可比;
tgcdz
2024-01-05 10:28:52 +08:00
如果喜欢用 H5 做界面,可以试试这个 https://webui.me/ 。用本地浏览器作为 UI 界面,业务逻辑可以用 C/C++/Go 等开发
b4115Z4mRAz9P8EA
2024-01-05 11:05:39 +08:00
@Foxkeh
纯微软平台的,似乎 aardio 真不错
keymao
2024-01-05 11:45:02 +08:00
@ahhui 商业化每年收入超过 5000 刀就得付费了,还不如直接用 Lazarus
PrinceofInj
2024-01-05 12:23:52 +08:00
@ysc3839 #69 不知道微软怎么想的。明明自己的系统组件都有用 winui3 写的了,然而我自己写一个小的程序,在系统上执行却需要额外再安装一下运行库,而不能用系统自带的。
Henrylee8619
2024-01-05 12:26:05 +08:00
刚看到标题就想起易语言,没想到楼主真是考虑了哈哈

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

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

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

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

© 2021 V2EX