V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
MrDarnell
V2EX  ›  程序员

要写 win7+的桌面端单机软件,技术如何选型?

  •  
  •   MrDarnell · Mar 28, 2024 · 5487 views
    This topic created in 760 days ago, the information mentioned may be changed or developed.
    • 要求有小型本地数据库存储
    • 可通过界面导入导出数据包
    • 有全文检索和字段检索的需求
    • 有大量 excel 和 word 的处理
    • 界面好看漂亮
    • 不能选用付费技术如 qt 这种
    • 如何快速制作一个漂亮的安装包
    • 我的开发环境是类 unix 环境 通常是 debian 和 mac 最好支持跨平台,不然得换电脑[这个有点过分]
    42 replies    2024-04-01 08:45:44 +08:00
    xtreme1
        1
    xtreme1  
       Mar 28, 2024
    electron
    MrDarnell
        2
    MrDarnell  
    OP
       Mar 28, 2024
    @xtreme1 electron 22 之后就不再支持 win7 了,这个问题我值得考虑
    xomix
        3
    xomix  
       Mar 28, 2024   ❤️ 1
    .NET 7+Avalonia UI 满足你全部需求。
    lllllliu
        4
    lllllliu  
       Mar 28, 2024
    go 的 rust 的那些基于 WebViewKit 的都可以满足你,只不过就是安装的时候要安装 WebView 的 Runtime 就和.NET 那玩意一样,也可以用 Electron 22 的最后一个版本,我们都是这么用的。
    KMpAn8Obw1QhPoEP
        5
    KMpAn8Obw1QhPoEP  
       Mar 28, 2024 via Android
    都 win7 了 用老版本的 electron 也不是很过分嘛(
    beginor
        6
    beginor  
       Mar 28, 2024
    跨平台的话, .NET + Avalonia ,如果不考虑跨平台的话, 可以 .NET + WPF
    Mithril
        7
    Mithril  
       Mar 28, 2024   ❤️ 1
    SQLite 支持全文检索,但没办法自由配置语言。你如果只支持中文或者英文,可以直接用对应编译好的 Extension 。
    界面好看的话,要么用 Electron 套壳,要么 WPF 或者 WinForm+第三方 UI 库。
    安装包 Windows 上可以用 Wix ,你可以自己写界面套进去。但这个好像没办法在 Linux 里跑,而且你 debian 也很难开发 WinForm 。

    跨平台开发,还想要界面好看一些,要么你用 Avalonia 这种跨平台技术,要么就是各种 Web 套壳。
    Avalonia 可以做的比较好看,但也比较费精力。你需要手动打磨界面。功能不复杂还行,界面太复杂的话你可能大半的时间都花在这上面。
    Web 套壳就简单多了,前端组件一大把,最简单的你用 bootstrap 都能搞个很好看的 UI 。套壳技术也有很多,比如 Electron ,WebView2 ,tauri 什么的,你找个 Windows 7 能用的就行。

    安装包你弄个 Windows 虚拟机做就行了。
    debuggerx
        8
    debuggerx  
       Mar 28, 2024
    感觉 pyqt/pyside 合适这些需求
    lstz
        9
    lstz  
       Mar 28, 2024 via Android
    综合来看,csharp 符合你的要求,特别是针对 excel 处理,没什么比 csharp 更好的了
    iorilu
        10
    iorilu  
       Mar 28, 2024
    除了 qt 那只能选微软那套了, 好几种
    qiuhang
        11
    qiuhang  
       Mar 28, 2024
    你这需求,其实 pyside 挺符合的,就是不知道 pyqt 算 qt 不。
    Senar
        12
    Senar  
       Mar 28, 2024
    zqf01
        13
    zqf01  
       Mar 28, 2024
    开源的 lazarus 也是一个选择,支持多平台开发,跨平台可选 qt 或 gtk
    debuggerx
        14
    debuggerx  
       Mar 28, 2024
    @qiuhang pyside 是 LGPL 协议,可以免费商用,不用担心 qt 的许可证问题
    mioktiar56
        15
    mioktiar56  
       Mar 28, 2024
    用 unix 环境开发 win7 客户端,即便是跨平台的框架,也得测试调试呀
    ugpu
        16
    ugpu  
       Mar 28, 2024
    qt & vc++ & WPF
    snailya
        17
    snailya  
       Mar 28, 2024
    不跨平台就 wpf ,控件用 materialdesigntoolkit 。跨平台 avalonia ,但是它有个字体的问题。
    ide 用 rider
    数据库操作 efcoro.sqlite
    excel+word 处理用 openxmlsdk
    安装包用 visual studio installer 打包成 msi
    Mithril
        18
    Mithril  
       Mar 28, 2024   ❤️ 1
    @debuggerx QT 有部分也是 LGPL 的,实际上就是 QT 。 “免费”和“商用”即使你用 GPL 的库也没问题。
    问题在于你是否要把自己的代码以同样的 License 发布,或者说你是否要给你的客户提供你自己的源代码。

    对于 Python 来说,你发布 py 文件自然没问题,相当于你给你的客户提供了源代码。但你如果打包成 exe ,那么可以视为你把 pyside 以静态链接的方式打包进了你的程序里。
    按照 LGPL 的要求,你必须“允许用户修改你程序中 LGPL 的部分”。那么你要允许你的客户对你打包好的程序进行反向工程,需要提供对应的文件。

    这就是为什么在开发商业应用时不要碰任何沾了 GPL 三个字母的东西。
    Mithril
        19
    Mithril  
       Mar 28, 2024
    @Mithril 第一句的表述有问题,指的是 PySide 实际上就是 QT 。
    ShadowPower
        20
    ShadowPower  
       Mar 28, 2024
    @Mithril 其实 Python 可以不打成单文件包,这样里面的 DLL 可以轻松替换
    xulihang
        21
    xulihang  
       Mar 28, 2024
    跨平台可以考虑 Java 。

    界面好看用 JavaFX ,
    处理 Word 和 Excel 用 Apache POI ,
    全文检索有 lucene ,
    打包也方便
    datadump
        22
    datadump  
       Mar 28, 2024
    公司还在用 electron20 ,有几十 w 用户,升级就一行代码的事但是 pl 不同意
    jones2000
        23
    jones2000  
       Mar 28, 2024
    CEF 套壳。
    F7TsdQL45E0jmoiG
        24
    F7TsdQL45E0jmoiG  
       Mar 28, 2024
    MFC 撸起来啊
    debuggerx
        25
    debuggerx  
       Mar 28, 2024
    @ShadowPower 而且就算是打包成单文件,一样可以修改成动态加载外部 DLL ,把 qt 库排除出去,交付的时候把 dll 和 exe 一起打压缩包就好。
    xieren58
        26
    xieren58  
       Mar 28, 2024
    acctv2
        27
    acctv2  
       Mar 28, 2024
    不想用 QT ,还要用 Mac 开发,答案是没有。

    最简单的道理:你要开发某个平台的软件,最起码你要有对应平台机器来做测试吧。你自己连测试机器都没有,怎么敢在 Mac 上开发直接交付给别人 Win 使用的。
    tushan
        28
    tushan  
       Mar 28, 2024
    @MrDarnell 用 22 之前的哪一个版本,足够了,而且还跨平台,html 写页面非常的友好。
    kaminic
        29
    kaminic  
       Mar 28, 2024
    界面的话 flutter 吧,剩下的用条件都没太大的差别,flutter 也有现成的 sqlite 组建可用
    MrDarnell
        30
    MrDarnell  
    OP
       Mar 28, 2024
    @acctv2 弱弱的问你一句,我搞个 kvm 来测试可以不?
    dhssingle
        31
    dhssingle  
       Mar 28, 2024
    Avalonia +1
    yf215
        32
    yf215  
       Mar 28, 2024
    @kaminic flutter 最新版本已经不支持 Win7 了。
    flyingfz
        33
    flyingfz  
       Mar 28, 2024
    https://neutralino.js.org/docs/

    看下这个。 挺不错的。
    poorcai
        34
    poorcai  
       Mar 28, 2024
    @xomix #3 刚试了一下,好难啊🤣,没写过 WPF
    nutting
        35
    nutting  
       Mar 28, 2024
    mac 的 vs 装过,不知道实际能做跨平台的图形界面程序吗?谁知道
    9dP06m83vIV00l72
        36
    9dP06m83vIV00l72  
       Mar 28, 2024
    Windows 10 以前的系统,只要用了新版编译器,基本都不支持了,只能使用老版本编译器编译。
    achira
        37
    achira  
       Mar 28, 2024
    web+electron
    flyqie
        38
    flyqie  
       Mar 28, 2024
    老版本 electron 凑合用吧。。。

    也就只能这样了。。不然满足不了你的需求。
    hanxiV2EX
        39
    hanxiV2EX  
       Mar 28, 2024 via Android
    用 imgui
    QWE321ASD
        40
    QWE321ASD  
       Mar 29, 2024
    要最低兼容 win7,要跨平台和不用 qt,还要漂亮界面. 只有 electron 和 javafx 能满足了
    tangmanger
        41
    tangmanger  
       Mar 29, 2024
    WPF
    xomix
        42
    xomix  
       Apr 1, 2024
    @poorcai 看看微软的教程,很好写的
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3939 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 117ms · UTC 10:31 · PVG 18:31 · LAX 03:31 · JFK 06:31
    ♥ Do have faith in what you're doing.