Windows下开发小应用GUI,该如何选择方案?
我的要求: 需要调用原生WindowsAPI,尺寸小一些,不要有依赖,当然最好单文件。
技术方案如下:
- C++ win32 原生,CreateWindow 后面要设 Font 、所有事件自己从处理循环里接.
- C++ MFC ,想要 UI 好看,Pass.
- C#的 WPF ,是很方便,也有很多 UI 库,但是目前不能 AOT(正式版本),独立打包直接去到 100+M,Pass.
- C#的 Form ,UI 不好看,打包也很大,可以 AOT 但是基本是空程序才行,稍微复杂点因为 AOT 隐式启用裁剪,复杂点的代码就会启动不了.
- C#的 Avalonia ,UI 还行,和Form 一样 AOT后有可能启动不了,独立打包 60-80M 也有点大,独立的也还另外带 3 个DLL(可解决),最难受的是启动很慢,需要 2-3 秒左右的时间才出窗口.
- QT C++与Py,目前只使用过C++开发过小工具,使用较麻烦,打包出来也很大。PyQT(Pyside)???
- MAUI(WINUI),提都不想提。
- Electron ,一堆文件,太多太重了。
- Flutter ,需要很多原生代码,还是得自己写 C++,两头折腾,尺寸倒是比 c#的那几个小不少。
- 易语言,会,曾经使用过,但真的不想用,当年不论干啥都报毒,甚至是空白应用。
- Winform+Webview2? 只需要一个webview2 控件,ui前端轮子足够用成本也低,逻辑全靠C#,打包还不会像cef多一个浏览器内核,体积有保证.
- C++ + Xaml Island???
- ...
一些补充:
text
Py...
同样的代码,所使用的 python 版本不同会导致不同的打包大小
py2.7 < py3.5 < py3.12
python + tkinter + win32API 然后用 pyinstaller 打包, 需要加密的话用+ cython
python + tkinter 写的应用优化打包后可以小于 10Mb
python + ctypes 调用 win32 DLL ,打包后小于 3Mb
美化用 ttkbootstrap 或者 customtkinter
python + qt !?
Python compatibility matrix
⁜ Partially supported via cross compilation
✸ No Qt Support https://doc.qt.io/qt-6/supported-platforms.html
☆ Not supported / No packages
⦿ Supported from 6.2.2 / Can be built from source
✦: 5.14 is the first version to support Python 3.8, but Python 3.8.0 will not work on Windows. Please use Python 3.8.1 or greater.
Please notice that iOS, and WebAssembly are not supported yet.
微软真的是不干人事,基本上项目没几个能善终,老老实实把 WPF的 AOT 做好,不知道能造福多少客户端开发