{"id":22792401,"url":"https://github.com/yzqdev/desktop-demo","last_synced_at":"2025-07-31T00:07:42.904Z","repository":{"id":110632713,"uuid":"529819626","full_name":"yzqdev/desktop-demo","owner":"yzqdev","description":"desktop app development","archived":false,"fork":false,"pushed_at":"2022-08-28T11:05:34.000Z","size":544,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-30T17:16:35.917Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/yzqdev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-08-28T09:42:47.000Z","updated_at":"2022-08-28T11:29:42.000Z","dependencies_parsed_at":null,"dependency_job_id":"9acdd057-1aaf-4a0f-86af-6f123019aab0","html_url":"https://github.com/yzqdev/desktop-demo","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/yzqdev/desktop-demo","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yzqdev%2Fdesktop-demo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yzqdev%2Fdesktop-demo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yzqdev%2Fdesktop-demo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yzqdev%2Fdesktop-demo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/yzqdev","download_url":"https://codeload.github.com/yzqdev/desktop-demo/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yzqdev%2Fdesktop-demo/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":267962736,"owners_count":24172740,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-30T02:00:09.044Z","response_time":70,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-12-12T03:12:44.433Z","updated_at":"2025-07-31T00:07:42.856Z","avatar_url":"https://github.com/yzqdev.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 开发桌面软件的技术\n\n## 可以开发exe桌面程序的技术\n\n### wpf\n\n微软官方文档这样说的: Windows Presentation Foundation 是一个可创建桌面客户端应用程序的 UI 框架。 WPF 开发平台支持广泛的应用开发功能，包括应用模型、资源、控件、图形、布局、数据绑定、文档和安全性.\n\n开发windows软件,首选wpf,效率高,性能好\n\n\u003chttps://docs.microsoft.com/zh-cn/visualstudio/designers/getting-started-with-wpf?view=vs-2022\u003e\n\n### winform\n\n其实就是对mfc的封装,拖拖拽拽就可以写出一个界面了,适合写小软件.如果需要花里胡哨的界面,那推荐使用wpf\n\n### maui或者windows app sdk\n\nwindows app sdk,跟uwp差不多,是一种新的开发人员组件和工具,好久好在winui的默认样式挺好看的(对比wpf) 而maui(Multi-platform App UI) 是一个跨平台 UI 框架（前身是 Xamarin.Forms）可以写android,ios,windows,macos等系统的应用,前些天刚GA,除了linux不支持(社区支持,约等于不支持),android很多功能没实现,貌似还可以 (昨天vs17.3正式支持了maui,可以尝试一下)\n\n\u003chttps://docs.microsoft.com/zh-cn/dotnet/maui/\u003e\n\n### flutter desktop\n\nflutter大家都知道,现在可以开发桌面应用了,我现在开发桌面应用首选flutter,前提是不要太多与系统的交互\n\n\u003chttps://flutter.dev/multi-platform/desktop\u003e\n\n### electron/tauri\n\nElectron,使用 JavaScript，HTML 和 CSS 构建跨平台的桌面应用程序,对于前端开发很友好,因为使用Web 技术,所以开发花里胡哨的界面很舒服,缺点就是要打包一个chrome进去\n\n\u003chttps://www.electronjs.org/\u003e\n\n而tauri跟electron有点像,也是使用web技术开发界面,区别在于tauri使用了rust,不需要打包chrome进去,使用的是系统的webview,比如windows上用的webview2,打包体积很小\n\n\u003chttps://tauri.app/\u003e\n\n### neutralinojs\n\n跟electron有点类似,也是用web技术开发app,不过Neutralinojs 不捆绑 Chromium，而是使用操作系统中现有的 Web 浏览器库\n\n\u003chttps://github.com/neutralinojs/neutralinojs\u003e\n\n### sciter\n\n也是一个用 HTML/CSS 来渲染现代应用程序 UI 的脚本引擎,很小众\n\n\u003chttps://sciter.com/\u003e\n\n### wails\n\n使用 Go和web技术构建漂亮的跨平台桌面应用,有点像tauri,不过他比tauri出来的早 \u003chttps://github.com/wailsapp/wails\u003e\n\n### qt\n\nQt 是一个跨平台的C++应用程序开发框架,使用c++开发,既可以开发GUI程序，也可用于开发非GUI程序.(使用的是c++,所以相对要求较高)\n\n\u003chttps://doc.qt.io/\u003e\n\n### unity\n\nUnity3d,使用里面的UGUI框架，同样可以做桌面开发\n\n\u003chttps://unity.com/cn\u003e\n\n### autoit和autohotkey\n\n其实这两个也可以开发gui的,dropit就是用autoit开发的 \u003chttps://www.autoitscript.com/site/autoit/\u003e\n\n### Golang + Fyne\n\ngo语言的一个ui库\n\n\u003chttps://github.com/fyne-io/fyne\u003e\n\n### pyside6\n\nPySide6是在Python环境下的一套Qt6 API库。使用PySide6可以轻松创建基于Qt6的GUI程序,跟pyqt不一样,pyside6是qt官方维护的 \u003chttps://doc.qt.io/qtforpython/PySide6/QtWidgets/index.html\u003e\n\n### aardio\n\n一个小众的windows桌面软件开发,开发个小工具还是蛮不错的\n\n\u003chttps://www.aardio.com/\u003e\n\n### javafx\n\njavafx是用可以来替代awt,swing的库,用于java桌面开发,体验还不错\n\n\u003chttps://openjfx.io/\u003e\n\n### kotlin compose desktop\n\njetbrains官方这样描述: Compose for Desktop 为使用 Kotlin 创建桌面用户界面提供了一种声明和反应式方法。结合可组合的功能来构建您的用户界面，并从您的 IDE 和构建系统中享受完整的工具支持 – 无需 XML 或模板语言\n\n\u003chttps://www.jetbrains.com/zh-cn/lp/compose-mpp/\u003e\n\n### delphi/Lazarus\n\n非常好用的跨平台桌面开发,可是用的人很少,使用的pascal语言\n\n\u003chttps://www.lazarus-ide.org/\u003e\n\n## 可以生成独立exe的有\n\n- wpf,winform   使用-p:PublishSingleFile=true就可以生成独立exe\n- tauri,neutralinojs,wails,aardio,Lazarus,Fyne     打包出来就是独立exe\n- pyside6  用pyinstaller或者nutika打包为独立exe\n- autohotkey  可以用Ahk2Exe编译为独立exe\n- javafx  可以使用exe4j等工具把生成的jar转为独立exe\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyzqdev%2Fdesktop-demo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyzqdev%2Fdesktop-demo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyzqdev%2Fdesktop-demo/lists"}