现在是想做个给团队内和外部合作方用的小工具应用,GUI 界面非常简单,有这么几个需求: 1 、支持 Windows 和 Mac ; 2 、工程里要用命令行调用一个外部的可执行文件,在 Windows 上就是 exe 和几个 dll ,Mac 上就是一个 Linux 可执行文件,想把这几个外部可执行文件都最终打包到一个最终产物里并且可被直接调用; 3 、免安装,比如在 Windows 上直接能生成最终的一个 exe 文件直接打开;
有现有的技术方案可以满足上面的需求吗?求各位大佬推荐技术方案。
     1 
                    
                    missdeer      2023-07-04 10:39:52 +08:00 
                    
                    能生成 exe 的语言/框架都可以吧 
                 | 
            
     2 
                    
                    DTCPSS      2023-07-04 10:40:51 +08:00 
                    
                    Tauri 
                Avalonia  | 
            
     3 
                    
                    lasuar      2023-07-04 10:42:05 +08:00 
                    
                    用你熟悉的语言就行 
                 | 
            
     4 
                    
                    LeegoYih      2023-07-04 10:42:54 +08:00 
                    
                    
                 | 
            
     5 
                    
                    weixiangzhe      2023-07-04 10:48:48 +08:00 
                    
                    这个需求 写个文档不就好了,为啥要 gui 
                 | 
            
     6 
                    
                    aqtata      2023-07-04 10:53:54 +08:00 
                    
                    Enigma Virtual Box 
                VMware ThinApp  | 
            
     7 
                    
                    liuhan907      2023-07-04 11:03:21 +08:00    我觉得吧,就 Electron 一把梭吧。 
                 | 
            
     8 
                    
                    fay94      2023-07-04 11:09:09 +08:00 
                    
                    Electron 
                 | 
            
     9 
                    
                    imkerberos      2023-07-04 11:14:25 +08:00 
                    
                    fltk-rs 
                 | 
            
     10 
                    
                    nerkeler      2023-07-04 11:16:55 +08:00 
                    
                    不需要颜值,直接 python 自带 tkinter.ttk 
                 | 
            
     11 
                    
                    kwanzaa      2023-07-04 11:18:37 +08:00 
                    
                    golang - fyne 
                 | 
            
     12 
                    
                    JG      2023-07-04 11:31:20 +08:00 
                    
                    qt 可以满足 
                 | 
            
     13 
                    
                    gydi      2023-07-04 11:31:51 +08:00 
                    
                    稳一点吧 electron 
                 | 
            
     14 
                    
                    sipt      2023-07-04 11:35:29 +08:00 
                    
                    第一反应 electron ,但感觉这东西,我作为写的人爽,作为用的人挺烦,一个小功能的 app ,装完 100MB 起。。。 
                 | 
            
     15 
                    
                    Mithril      2023-07-04 11:42:13 +08:00    GUI 非常简单可以用 Avalonia ,打包也可以勉强打成单文件,但因为里面是带 native 组件的,所以实际上运行时会解压。 
                多平台也能支持,没问题。.NET 6 带依赖框架打出来差不多 50~60MB 。比 Electron 强点有限。好处就是没有 Chrome 那些问题,不会一启动带起来几十个进程,也不会卡界面。 但你如果交互比较复杂,页面比较多,那还是 Electron 吧。虽说大家都在诟病,但 Web 做交互还是要比你拿个不太熟悉的框架一边学一边做强太多了。  | 
            
     16 
                    
                    ShadowPower      2023-07-04 11:44:02 +08:00 
                    
                    python + pysimplegui + pyinstaller 
                 | 
            
     17 
                    
                    yl20181003      2023-07-04 11:52:10 +08:00 
                    
                    Electron 就行 
                 | 
            
     18 
                    
                    x77      2023-07-04 12:06:50 +08:00 
                    
                    Flutter ,原生桌面应用,编译就可以运行,不用安装,带上运行库和字体等数据只有 30M 。不过 Flutter 桌面官方现在不支持多窗口,适合 UI 简洁的应用 
                 | 
            
     19 
                    
                    ggvoking      2023-07-04 12:08:48 +08:00 
                    
                    简单的就 qt 吧 
                 | 
            
     20 
                    
                    TMaize      2023-07-04 12:09:36 +08:00 
                    
                    wails 很简单 
                 | 
            
     21 
                    
                    nong99      2023-07-04 12:17:13 +08:00 via iPhone 
                    
                    非桌面应用开发岗,同时确实感受过 electron 的卡顿!这边想球迷如果总 QT 或 Avalonia 之类的完成主程主体框框,种交互的由自己嵌套 webview 可行否? 
                 | 
            
     22 
                    
                    nong99      2023-07-04 12:20:08 +08:00 via iPhone 
                    
                    @nong99 感觉提及跨平台,没有比 web 效率更高的样子了哇?既然如此,提供原生的壳子拓展,内容 web 这类方案是否在实践上有什么弊端吗?(同时,既然已经有了 Tauri 的存在,相比较用 QT 等回比较有什么优势呢?)各位桌面大佬可以探讨下哈~ 
                 | 
            
     23 
                    
                    lujiaxing      2023-07-04 12:23:52 +08:00 
                    
                    Avalonia + .NET 7 吧. AOT 打出来合计不超过 100M. 支持 Win / Linux / Mac 
                 | 
            
     24 
                    
                    lujiaxing      2023-07-04 12:24:55 +08:00 
                    
                    @nong99 类似 NanUI 的方式嘛. 理论上是可以的. CEF 有一个叫 Off-Screen rendering 的模式, 可以用来实现你想要的效果. 
                 | 
            
     25 
                    
                    sloknyyz      2023-07-04 13:02:30 +08:00 
                    
                    electron 吧,开发挺简单的 
                 | 
            
     26 
                    
                    Mithril      2023-07-04 13:43:26 +08:00 
                    
                    @nong99 可以的,这种已经有很多方案了。 
                你可以看一下 WebView2 的嵌套方案,这东西是直接调用系统提供的组件,不用打包一个 CEF 进去。支持混合编程。就是在你原生桌面应用里面内嵌一个浏览器控件,然后在里面渲染 web 。你可以随便嵌入到什么地方都行。 比如 blazor hybrid ,虽然我不想用 Blazor ,但类似的方案也有不少。  | 
            
     27 
                    
                    nong99      2023-07-04 14:05:16 +08:00 via iPhone 
                    
                    
                 | 
            
     28 
                    
                    flyqie      2023-07-04 14:08:41 +08:00 via Android 
                    
                    electron 吧。。 
                这需求用 electron 最稳了。。  | 
            
     29 
                    
                    ChrisFreeMan      2023-07-04 14:12:02 +08:00 
                    
                    人人都骂 electron 但是只有它除了原生最稳了 
                 | 
            
     32 
                    
                    CForce   OP @fay94 electron 可以生成一个免安装的 exe 吗?我试了一下 forge 和 electron builder ,没有找到生成独立的 exe 的方案 
                 | 
            
     34 
                    
                    imkerberos      2023-07-04 14:47:49 +08:00 
                    
                    fltk / fltk-rs 最稳 
                 | 
            
     35 
                    
                    wxdiy      2023-07-04 14:55:32 +08:00 
                    
                    这需求,不就是做个网站? 
                 | 
            
     37 
                    
                    CForce   OP @liuhan907  
                @flyqie @gydi @sipt @yl20181003 @sloknyyz @ChrisFreeMan 求指导 electron 怎样配置,可以把工程里的三方 exe 和 dll 最终打包成一个免安装的 exe ,并且直接调用呢?试了一下 forge 和 electron-builder ,没有找到方案  | 
            
     38 
                    
                    binge921      2023-07-04 15:21:33 +08:00 
                    
                    electron 必然可以打包成 exe 还支持 macos 刚用 electron 开发一款单机版程序 不难 会 vue 就行 服务端 nodejs java 都行 不过我希望我的下一个应用是 flutter 他的性能听说也挺高 
                 | 
            
     39 
                    
                    sloknyyz      2023-07-04 15:22:05 +08:00    @CForce github 上很多模板项目,比如这个 https://github.com/sindresorhus/electron-boilerplate , 可以直接拿来用。 
                配置都是配好的,但也需要安装你自己的需求去修改一些东西。打包这方面不用担心,electron-builder 可以使用--dir 参数将所有文件放到文件夹里不进行打包,这样后面可以自己直接压缩成一个压缩包就 OK 了。调用第三方 exe 更简单,直接主进程使用 node 的 child_process 模块调用,很方便。  | 
            
     40 
                    
                    byteroam      2023-07-04 15:25:27 +08:00 
                    
                    现在的人都退化到这个地步了?看了半天不就是写个绿色 exe 吗......还需要啥技术方案.. 
                 | 
            
     41 
                    
                    CForce   OP @sloknyyz child_process 执行这个 exe 的话需要一个路径,如果不把外部 exe 解压出来的话,这个路径应该怎么传呢? 
                 | 
            
     42 
                    
                    lujiaosama      2023-07-04 15:27:27 +08:00 
                    
                    @sipt 体积大无所谓. 现在硬盘空间多得很, 主要是卡, 臃肿得一匹. 
                 | 
            
     43 
                    
                    byteroam      2023-07-04 15:29:55 +08:00 
                    
                    你可以使用第三方工具,例如 "ILMerge" 或 "BoxedApp Packer",将 EXE 文件和 DLL 文件合并为一个单独的 EXE 文件。 
                 | 
            
     44 
                    
                    CForce   OP @byteroam 嗨,主要是没搞过桌面开发,想着这几个需求如果不能同时满足,那就退而求其次了,大佬有什么简单的方案可以不吝赐教一下 
                 | 
            
     45 
                    
                    BeiChuanAlex      2023-07-04 15:47:26 +08:00 
                    
                    Tauri 吧,不过要会前端才行。 
                 | 
            
     46 
                    
                    hronro      2023-07-04 15:52:49 +08:00 
                    
                    「 Mac 上就是一个 Linux 可执行文件」是什么意思? 
                岂不是说还要在 macOS 上开一个 Linux 虚拟机才能正常运行起来?  | 
            
     47 
                    
                    DT37      2023-07-04 16:00:33 +08:00 
                    
                    Java 就可以啊 
                 | 
            
     48 
                    
                    ackmanfork      2023-07-04 16:42:01 +08:00 
                    
                    .net  winform   可以搞定在一个类库内去写。 
                 | 
            
     49 
                    
                    ackmanfork      2023-07-04 16:42:40 +08:00 
                    
                    理论上如果不引用其他的第三方 dll ,不会生成多余的 dll 只有一个 exe 
                 | 
            
     50 
                    
                    Curtion      2023-07-04 17:04:00 +08:00 
                    
                    有很多看似的无需安装的 exe 文件,在运行时都会解压依赖项到系统的 temp 文件夹中 
                 | 
            
     51 
                    
                    yanggggjie      2023-07-04 17:08:37 +08:00 
                    
                    electron 
                 | 
            
     52 
                    
                    wildman9527      2023-07-04 17:17:31 +08:00 
                    
                    pygame 
                 | 
            
     53 
                    
                    signalas1      2023-07-04 17:21:00 +08:00 
                    
                    Electron 里用 nodejs 的 spwan 启动应用, 通讯用 net ipc 。 
                 | 
            
     54 
                    
                    liuliuliuliu   PRO https://www.v2ex.com/t/952603 
                用 .Net 写了一个跨平台的桌面端软件,且原生编译,无需运行时,启动快内存少体积小  | 
            
     55 
                    
                    signalas1      2023-07-04 17:25:19 +08:00 
                    
                    还可以类似蓝灯的思路,你们如果是这个功能程序的作者,可以起一个本地服务器,点击图标就拉起浏览器,用浏览器来访问程序。 
                 | 
            
     57 
                    
                    ysc3839      2023-07-04 17:47:00 +08:00 via Android 
                    
                    
                 | 
            
     58 
                    
                    spongebobsun      2023-07-04 18:56:42 +08:00 
                    
                    
                 | 
            
     59 
                    
                    iorilu      2023-07-04 20:47:31 +08:00 via Android 
                    
                    pyqt 没别的选择 
                要么就是那种套浏览器的  | 
            
     60 
                    
                    seliote      2023-07-04 21:24:18 +08:00 
                    
                    Flutter 
                 | 
            
     61 
                    
                    rainbirda      2023-07-04 21:40:48 +08:00 
                    
                    PyQt6  或  PySide6 能满足你的需求,可以打包成 exe ,并可引用 dll ,就是打的包有点大,包含了整个 Python 环境,设计页面也比较方便,可以使用 Qt Designer 可视化拖拽组件,就是有些属性不太好找 
                 | 
            
     62 
                    
                    inframe      2023-07-04 21:56:38 +08:00    支持跨平台的玩过这么几个: 
                C# Net 567,PyQt5\tkinter Java Swing/ComposedUI ,Flutter, Pascal Lazarus web 套壳 Electron  | 
            
     64 
                    
                    jevonszmx      2023-07-04 23:23:51 +08:00 
                    
                    不要折腾,Electron 
                 | 
            
     65 
                    
                    thiiadoewjwe      2023-07-05 08:34:42 +08:00 
                    
                    独立运行的 exe 我能想到的就是用 C++写完静态链接生成 exe ,这样的话一个 exe 就可以了 
                 | 
            
     66 
                    
                    vitovan      2023-07-05 08:59:51 +08:00 
                    
                    
                 | 
            
     67 
                    
                    oldj      2023-07-05 09:02:57 +08:00 
                    
                    @CForce Electron 使用 electron-builder 打包时,target 那儿传入 "portable" 就可以打包为一个免安装的 exe 了。参见 https://www.electron.build/configuration/win 的 target 参数说明。还可以指定打包的架构,比如 "portable:ia32"、"portable:x64" 等等。 
                 | 
            
     68 
                    
                    diyisoft      2023-07-05 09:08:36 +08:00 
                    
                    试试 Delphi 11.3 ,不过没接触过的搞不来。 
                 | 
            
     69 
                    
                    wpo      2023-07-05 09:27:12 +08:00 
                    
                    Flutter ,我就在用这个画 UI ,在 Windows 下拉起 ADB 之类的外部程序实现功能。 
                 | 
            
     70 
                    
                    simo      2023-07-05 09:41:16 +08:00 
                    
                    经验不多,下面都做过些软件。 
                qt 推荐 flutter 一般 taurl 一般 electron 打包有点大,前端转型的,开发速度比较快  | 
            
     71 
                    
                    kingzeus      2023-07-05 09:49:56 +08:00 
                    
                    推荐 flutter ,上手简单,做工具没啥问题 
                 | 
            
     72 
                    
                    dimwoodxi27      2023-07-05 10:04:38 +08:00 
                    
                    golang 的 fyne 推荐:直译支持跨平台,无需安装其他额外依赖 
                java 的 fx 不推荐:编译麻烦,写个几百 kb 的程序得带个几百 m 的 jre ,重点不是直译是开源 c++的 qt 和 c#的 wpf 推荐  | 
            
     73 
                    
                    kylix      2023-07-05 10:21:04 +08:00 
                    
                    看了下回帖,发现推前端工具的比较多呀,看来 v2 很多前端呀 
                --- 本来都写了一段话了,后来还是 backspace 掉了  | 
            
     74 
                    
                    newmlp      2023-07-05 10:23:29 +08:00 
                    
                    
                 | 
            
     75 
                    
                    LANB0      2023-07-05 10:46:15 +08:00 
                    
                    @ChrisFreeMan QT 是不服的,小工具又不需要花里胡哨,electron 仅有的开发效率也没啥意义 
                 | 
            
     76 
                    
                    yjd      2023-07-05 11:31:09 +08:00 
                    
                    我这种喜欢原生 win32 启动快的,像 electron 这种,简直。。。 
                qbittorrent 用 qt 。冷启动慢。c#冷启动也慢。 我看你这需求 win 的话,直接批处理或 powershell 脚本+自解压打包省事,写好打包脚本,鼠标双击下不都给你生成出来了  | 
            
     78 
                    
                    hez2010      2023-07-05 12:24:27 +08:00 via Android 
                    
                    推荐 Avalonia (11.0 版本),跨平台并且原生支持 GPU 加速,还支持 nativeaot 编译出原生二进制代码。 
                 | 
            
     79 
                    
                    jazzg62      2023-07-05 16:24:06 +08:00    回复中出现了约 31 次 electron ,12 次 qt,  8 次 flutter ,5 次 Avalonia ,其它若干。 
                果然还是对开发者友好的框架更受欢迎啊  | 
            
     80 
                    
                    SekiBetu      2023-07-05 17:48:23 +08:00 
                    
                    electron 
                 | 
            
     81 
                    
                    imvsiam      2023-07-05 18:10:42 +08:00 
                    
                    1. Flutter 
                2. Electron 3. Tauri  | 
            
     82 
                    
                    r6cb      2023-07-05 18:33:11 +08:00 
                    
                    可以试试用 WinRAR 打包自解压压缩包,每次运行直到解压到 temp 目录,而且也能设置如果文件已经存在就跳过解压来加快后续的启动速度 
                 | 
            
     83 
                    
                    suyulingxm      2023-07-06 13:37:02 +08:00 
                    
                    flutter + rust 
                 | 
            
     84 
                    
                    Andywoo      2023-11-06 10:03:15 +08:00 
                    
                    有 python 、go 基础的可以看看 pyside 和 wails ,最近学习了这两个框架,做了一个玩具,开发效率还不错。 
                https://www.v2ex.com/t/988925 如果只是内部小团队使用,又一个框架 [flet]( https://github.com/flet-dev/flet) 开发起来特别快。  |