CForce
V2EX  ›  Windows

桌面应用开发求大佬推荐技术方案

  •  
  •   CForce · Jul 4, 2023 · 10063 views
    This topic created in 1228 days ago, the information mentioned may be changed or developed.

    现在是想做个给团队内和外部合作方用的小工具应用,GUI 界面非常简单,有这么几个需求: 1 、支持 Windows 和 Mac ; 2 、工程里要用命令行调用一个外部的可执行文件,在 Windows 上就是 exe 和几个 dll ,Mac 上就是一个 Linux 可执行文件,想把这几个外部可执行文件都最终打包到一个最终产物里并且可被直接调用; 3 、免安装,比如在 Windows 上直接能生成最终的一个 exe 文件直接打开;

    有现有的技术方案可以满足上面的需求吗?求各位大佬推荐技术方案。

    Supplement 1  ·  Jul 4, 2023
    现在主要被难倒在 2 和 3 ,如果最终生成的是一个安装包,其实也还好,外部的 exe 和 dll 直接解压出来就完事了,然后在代码里通过命令行找到对应的路径来调用。

    如果是一个独立运行的 exe ,就不太清楚怎么搞,怎么生成这个无需安装的 exe 以及 怎么在代码中调用到这个外部的 exe 呢?

    语言其实还好,糊点简单界面,写点逻辑都差不多,就是这些打包啊、配置啥的搞得头大。
    84 replies  •  2023-11-06 10:03:15 +08:00
    missdeer
    missdeer
    Jul 4, 2023
    1
    能生成 exe 的语言/框架都可以吧
    DTCPSS
    DTCPSS
    Jul 4, 2023
    2
    Tauri
    Avalonia
    freemoon
    freemoon
    Jul 4, 2023
    3
    用你熟悉的语言就行
    weixiangzhe
    weixiangzhe
    Jul 4, 2023
    5
    这个需求 写个文档不就好了,为啥要 gui
    aqtata
    aqtata
    Jul 4, 2023
    6
    Enigma Virtual Box
    VMware ThinApp
    liuhan907
    liuhan907
    Jul 4, 2023❤️1
    7
    我觉得吧,就 Electron 一把梭吧。
    fay94
    fay94
    Jul 4, 2023
    8
    Electron
    imkerberos
    imkerberos
    Jul 4, 2023
    9
    fltk-rs
    nerkeler
    nerkeler
    Jul 4, 2023
    10
    不需要颜值,直接 python 自带 tkinter.ttk
    kwanzaa
    kwanzaa
    Jul 4, 2023
    11
    golang - fyne
    JG
    JG
    Jul 4, 2023
    12
    qt 可以满足
    gydi
    gydi
    Jul 4, 2023
    13
    稳一点吧 electron
    sipt
    sipt
    Jul 4, 2023
    14
    第一反应 electron ,但感觉这东西,我作为写的人爽,作为用的人挺烦,一个小功能的 app ,装完 100MB 起。。。
    Mithril
    Mithril
    Jul 4, 2023❤️1
    15
    GUI 非常简单可以用 Avalonia ,打包也可以勉强打成单文件,但因为里面是带 native 组件的,所以实际上运行时会解压。
    多平台也能支持,没问题。.NET 6 带依赖框架打出来差不多 50~60MB 。比 Electron 强点有限。好处就是没有 Chrome 那些问题,不会一启动带起来几十个进程,也不会卡界面。

    但你如果交互比较复杂,页面比较多,那还是 Electron 吧。虽说大家都在诟病,但 Web 做交互还是要比你拿个不太熟悉的框架一边学一边做强太多了。
    ShadowPower
    ShadowPower
    Jul 4, 2023
    16
    python + pysimplegui + pyinstaller
    yl20181003
    yl20181003
    Jul 4, 2023
    17
    Electron 就行
    x77
    x77
    Jul 4, 2023
    18
    Flutter ,原生桌面应用,编译就可以运行,不用安装,带上运行库和字体等数据只有 30M 。不过 Flutter 桌面官方现在不支持多窗口,适合 UI 简洁的应用
    ggvoking
    ggvoking
    Jul 4, 2023
    19
    简单的就 qt 吧
    TMaize
    TMaize
    Jul 4, 2023
    20
    wails 很简单
    nong99
    nong99
    Jul 4, 2023 via iPhone
    21
    非桌面应用开发岗,同时确实感受过 electron 的卡顿!这边想球迷如果总 QT 或 Avalonia 之类的完成主程主体框框,种交互的由自己嵌套 webview 可行否?
    nong99
    nong99
    Jul 4, 2023 via iPhone
    22
    @nong99 感觉提及跨平台,没有比 web 效率更高的样子了哇?既然如此,提供原生的壳子拓展,内容 web 这类方案是否在实践上有什么弊端吗?(同时,既然已经有了 Tauri 的存在,相比较用 QT 等回比较有什么优势呢?)各位桌面大佬可以探讨下哈~
    lujiaxing
    lujiaxing
    Jul 4, 2023
    23
    Avalonia + .NET 7 吧. AOT 打出来合计不超过 100M. 支持 Win / Linux / Mac
    lujiaxing
    lujiaxing
    Jul 4, 2023
    24
    @nong99 类似 NanUI 的方式嘛. 理论上是可以的. CEF 有一个叫 Off-Screen rendering 的模式, 可以用来实现你想要的效果.
    sloknyyz
    sloknyyz
    Jul 4, 2023
    25
    electron 吧,开发挺简单的
    Mithril
    Mithril
    Jul 4, 2023
    26
    @nong99 可以的,这种已经有很多方案了。
    你可以看一下 WebView2 的嵌套方案,这东西是直接调用系统提供的组件,不用打包一个 CEF 进去。支持混合编程。就是在你原生桌面应用里面内嵌一个浏览器控件,然后在里面渲染 web 。你可以随便嵌入到什么地方都行。
    比如 blazor hybrid ,虽然我不想用 Blazor ,但类似的方案也有不少。
    nong99
    nong99
    Jul 4, 2023 via iPhone
    27
    @Mithril @lujiaxing 好的👌谢谢各位大佬,我自己纯前端仔。玩略过 electron ,感觉像接触 C# .net 去玩下桌面框 webview2 试试!特别近况看说 C# 还是稳的哈🤣
    flyqie
    flyqie
    Jul 4, 2023 via Android
    28
    electron 吧。。

    这需求用 electron 最稳了。。
    ChrisFreeMan
    ChrisFreeMan
    Jul 4, 2023
    29
    人人都骂 electron 但是只有它除了原生最稳了
    CForce
    CForce
    OP
    Jul 4, 2023
    30
    @missdeer 主要是有一个外部的 exe 和 dll ,不知道怎么最终打包到同一个 exe 里面
    CForce
    CForce
    OP
    Jul 4, 2023
    31
    @DTCPSS 多谢,我去了解一下
    CForce
    CForce
    OP
    Jul 4, 2023
    32
    @fay94 electron 可以生成一个免安装的 exe 吗?我试了一下 forge 和 electron builder ,没有找到生成独立的 exe 的方案
    missdeer
    missdeer
    Jul 4, 2023
    33
    @CForce 当作 Windows 资源( rc )打进去,程序起来后先从资源里抽出来放到临时目录里用
    imkerberos
    imkerberos
    Jul 4, 2023
    34
    fltk / fltk-rs 最稳
    wxdiy
    wxdiy
    Jul 4, 2023
    35
    这需求,不就是做个网站?
    CForce
    CForce
    OP
    Jul 4, 2023
    36
    @wxdiy 主要是给本地用的,比如 连接外部设备 这种功能,所以网站可能不行
    CForce
    CForce
    OP
    Jul 4, 2023
    37
    @liuhan907
    @flyqie
    @gydi
    @sipt
    @yl20181003
    @sloknyyz
    @ChrisFreeMan

    求指导 electron 怎样配置,可以把工程里的三方 exe 和 dll 最终打包成一个免安装的 exe ,并且直接调用呢?试了一下 forge 和 electron-builder ,没有找到方案
    binge921
    binge921
    Jul 4, 2023
    38
    electron 必然可以打包成 exe 还支持 macos 刚用 electron 开发一款单机版程序 不难 会 vue 就行 服务端 nodejs java 都行 不过我希望我的下一个应用是 flutter 他的性能听说也挺高
    sloknyyz
    sloknyyz
    Jul 4, 2023❤️1
    39
    @CForce github 上很多模板项目,比如这个 https://github.com/sindresorhus/electron-boilerplate , 可以直接拿来用。
    配置都是配好的,但也需要安装你自己的需求去修改一些东西。打包这方面不用担心,electron-builder 可以使用--dir 参数将所有文件放到文件夹里不进行打包,这样后面可以自己直接压缩成一个压缩包就 OK 了。调用第三方 exe 更简单,直接主进程使用 node 的 child_process 模块调用,很方便。
    byteroam
    byteroam
    Jul 4, 2023
    40
    现在的人都退化到这个地步了?看了半天不就是写个绿色 exe 吗......还需要啥技术方案..
    CForce
    CForce
    OP
    Jul 4, 2023
    41
    @sloknyyz child_process 执行这个 exe 的话需要一个路径,如果不把外部 exe 解压出来的话,这个路径应该怎么传呢?
    lujiaosama
    lujiaosama
    Jul 4, 2023
    42
    @sipt 体积大无所谓. 现在硬盘空间多得很, 主要是卡, 臃肿得一匹.
    byteroam
    byteroam
    Jul 4, 2023
    43
    你可以使用第三方工具,例如 "ILMerge" 或 "BoxedApp Packer",将 EXE 文件和 DLL 文件合并为一个单独的 EXE 文件。
    CForce
    CForce
    OP
    Jul 4, 2023
    44
    @byteroam 嗨,主要是没搞过桌面开发,想着这几个需求如果不能同时满足,那就退而求其次了,大佬有什么简单的方案可以不吝赐教一下
    BeiChuanAlex
    BeiChuanAlex
    Jul 4, 2023
    45
    Tauri 吧,不过要会前端才行。
    hronro
    hronro
    Jul 4, 2023
    46
    「 Mac 上就是一个 Linux 可执行文件」是什么意思?

    岂不是说还要在 macOS 上开一个 Linux 虚拟机才能正常运行起来?
    DT37
    DT37
    Jul 4, 2023
    47
    Java 就可以啊
    ackmanfork
    ackmanfork
    Jul 4, 2023
    48
    .net winform 可以搞定在一个类库内去写。
    ackmanfork
    ackmanfork
    Jul 4, 2023
    49
    理论上如果不引用其他的第三方 dll ,不会生成多余的 dll 只有一个 exe
    Curtion
    Curtion
    Jul 4, 2023
    50
    有很多看似的无需安装的 exe 文件,在运行时都会解压依赖项到系统的 temp 文件夹中
    yanggggjie
    yanggggjie
    Jul 4, 2023
    51
    electron
    wildman9527
    wildman9527
    Jul 4, 2023
    52
    pygame
    signalas1
    signalas1
    Jul 4, 2023
    53
    Electron 里用 nodejs 的 spwan 启动应用, 通讯用 net ipc 。
    liuliuliuliu
    liuliuliuliu
    Jul 4, 2023
    54
    https://www.v2ex.com/t/952603
    用 .Net 写了一个跨平台的桌面端软件,且原生编译,无需运行时,启动快内存少体积小
    signalas1
    signalas1
    Jul 4, 2023
    55
    还可以类似蓝灯的思路,你们如果是这个功能程序的作者,可以起一个本地服务器,点击图标就拉起浏览器,用浏览器来访问程序。
    flyqie
    flyqie
    Jul 4, 2023
    56
    @Curtion #50

    是的,反正总要有个地方塞。。

    temp 目录是最好的选择。
    ysc3839
    ysc3839
    Jul 4, 2023 via Android
    57
    “Mac 上就是一个 Linux 可执行文件”是错的,Windows Linux macOS 这三个平台的可执行文件都有各自的格式,Windows 习惯给可执行文件名加上.exe 后缀,但加不加都不影响文件内容。
    macOS 有个特殊的“格式”叫做捆绑包,比如你看到的一个“应用程序”,其实是.app 后缀的文件夹,内容大概是这样的:
    app.app
    -Content
    --MacOS
    ---可执行文件
    --Resources
    ---资源文件
    如果有多个可执行文件,都放进 MacOS 那个文件夹即可,运行时可以用_NSGetExecutablePath 获取自身路径。
    iorilu
    iorilu
    Jul 4, 2023 via Android
    59
    pyqt 没别的选择

    要么就是那种套浏览器的
    seliote
    seliote
    Jul 4, 2023
    60
    Flutter
    rainbirda
    rainbirda
    Jul 4, 2023
    61
    PyQt6 或 PySide6 能满足你的需求,可以打包成 exe ,并可引用 dll ,就是打的包有点大,包含了整个 Python 环境,设计页面也比较方便,可以使用 Qt Designer 可视化拖拽组件,就是有些属性不太好找
    inframe
    inframe
    Jul 4, 2023❤️1
    62
    支持跨平台的玩过这么几个:

    C# Net 567,PyQt5\tkinter
    Java Swing/ComposedUI ,Flutter, Pascal Lazarus
    web 套壳 Electron
    ichubei
    ichubei
    Jul 4, 2023 via iPhone
    63
    @sipt 几秒钟下完,一两百空间没什么,现在网速,硬盘都便宜。 体验好就行。
    jevonszmx
    jevonszmx
    Jul 4, 2023
    64
    不要折腾,Electron
    thiiadoewjwe
    thiiadoewjwe
    Jul 5, 2023
    65
    独立运行的 exe 我能想到的就是用 C++写完静态链接生成 exe ,这样的话一个 exe 就可以了
    oldj
    oldj
    Jul 5, 2023
    67
    @CForce Electron 使用 electron-builder 打包时,target 那儿传入 "portable" 就可以打包为一个免安装的 exe 了。参见 https://www.electron.build/configuration/win 的 target 参数说明。还可以指定打包的架构,比如 "portable:ia32"、"portable:x64" 等等。
    diyisoft
    diyisoft
    Jul 5, 2023
    68
    试试 Delphi 11.3 ,不过没接触过的搞不来。
    wpo
    wpo
    Jul 5, 2023
    69
    Flutter ,我就在用这个画 UI ,在 Windows 下拉起 ADB 之类的外部程序实现功能。
    simo
    simo
    Jul 5, 2023
    70
    经验不多,下面都做过些软件。
    qt 推荐
    flutter 一般
    taurl 一般
    electron 打包有点大,前端转型的,开发速度比较快
    kingzeus
    kingzeus
    Jul 5, 2023
    71
    推荐 flutter ,上手简单,做工具没啥问题
    Quarry
    Quarry
    Jul 5, 2023
    72
    golang 的 fyne 推荐:直译支持跨平台,无需安装其他额外依赖
    java 的 fx 不推荐:编译麻烦,写个几百 kb 的程序得带个几百 m 的 jre ,重点不是直译是开源
    c++的 qt 和 c#的 wpf 推荐
    kylix
    kylix
    Jul 5, 2023
    73
    看了下回帖,发现推前端工具的比较多呀,看来 v2 很多前端呀

    ---
    本来都写了一段话了,后来还是 backspace 掉了
    newmlp
    newmlp
    Jul 5, 2023
    74
    qt 或 c#的 ui 库
    exe 了解下静态库,如果第三方库都是开源的就编译成静态库,可以做到一个 exe 就行了
    mac 就无所谓了,反正它的应用本来就是以.app 结尾的文件夹体现的
    LANB0
    LANB0
    Jul 5, 2023
    75
    @ChrisFreeMan QT 是不服的,小工具又不需要花里胡哨,electron 仅有的开发效率也没啥意义
    yjd
    yjd
    Jul 5, 2023
    76
    我这种喜欢原生 win32 启动快的,像 electron 这种,简直。。。
    qbittorrent 用 qt 。冷启动慢。c#冷启动也慢。

    我看你这需求 win 的话,直接批处理或 powershell 脚本+自解压打包省事,写好打包脚本,鼠标双击下不都给你生成出来了
    horizon
    horizon
    Jul 5, 2023
    77
    @kylix #73
    你想表达什么呢
    hez2010
    hez2010
    Jul 5, 2023 via Android
    78
    推荐 Avalonia (11.0 版本),跨平台并且原生支持 GPU 加速,还支持 nativeaot 编译出原生二进制代码。
    jazzg62
    jazzg62
    Jul 5, 2023❤️1
    79
    回复中出现了约 31 次 electron ,12 次 qt, 8 次 flutter ,5 次 Avalonia ,其它若干。
    果然还是对开发者友好的框架更受欢迎啊
    SekiBetu
    SekiBetu
    Jul 5, 2023
    80
    electron
    imvsiam
    imvsiam
    Jul 5, 2023
    81
    1. Flutter
    2. Electron
    3. Tauri
    r6cb
    r6cb
    Jul 5, 2023
    82
    可以试试用 WinRAR 打包自解压压缩包,每次运行直到解压到 temp 目录,而且也能设置如果文件已经存在就跳过解压来加快后续的启动速度
    suyulingxm
    suyulingxm
    Jul 6, 2023
    83
    flutter + rust
    Andywoo
    Andywoo
    Nov 6, 2023
    84
    有 python 、go 基础的可以看看 pyside 和 wails ,最近学习了这两个框架,做了一个玩具,开发效率还不错。
    https://www.v2ex.com/t/988925

    如果只是内部小团队使用,又一个框架 [flet]( https://github.com/flet-dev/flet) 开发起来特别快。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2845 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 483ms · UTC 10:17 · PVG 18:17 · LAX 02:17 · JFK 05:17
    ♥ Do have faith in what you're doing.