V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
MrDarnell
V2EX  ›  程序员

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

  •  
  •   MrDarnell ·
    fanqie · 222 天前 · 3886 次点击
    这是一个创建于 222 天前的主题,其中的信息可能已经有所发展或是发生改变。
    • 要求有小型本地数据库存储
    • 可通过界面导入导出数据包
    • 有全文检索和字段检索的需求
    • 有大量 excel 和 word 的处理
    • 界面好看漂亮
    • 不能选用付费技术如 qt 这种
    • 如何快速制作一个漂亮的安装包
    • 我的开发环境是类 unix 环境 通常是 debian 和 mac 最好支持跨平台,不然得换电脑[这个有点过分]
    42 条回复    2024-04-01 08:45:44 +08:00
    xtreme1
        1
    xtreme1  
       222 天前
    electron
    MrDarnell
        2
    MrDarnell  
    OP
       222 天前
    @xtreme1 electron 22 之后就不再支持 win7 了,这个问题我值得考虑
    xomix
        3
    xomix  
       222 天前   ❤️ 1
    .NET 7+Avalonia UI 满足你全部需求。
    lllllliu
        4
    lllllliu  
       222 天前
    go 的 rust 的那些基于 WebViewKit 的都可以满足你,只不过就是安装的时候要安装 WebView 的 Runtime 就和.NET 那玩意一样,也可以用 Electron 22 的最后一个版本,我们都是这么用的。
    enchilada2020
        5
    enchilada2020  
       222 天前 via Android
    都 win7 了 用老版本的 electron 也不是很过分嘛(
    beginor
        6
    beginor  
       222 天前
    跨平台的话, .NET + Avalonia ,如果不考虑跨平台的话, 可以 .NET + WPF
    Mithril
        7
    Mithril  
       222 天前   ❤️ 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  
       222 天前
    感觉 pyqt/pyside 合适这些需求
    lstz
        9
    lstz  
       222 天前 via Android
    综合来看,csharp 符合你的要求,特别是针对 excel 处理,没什么比 csharp 更好的了
    iorilu
        10
    iorilu  
       222 天前
    除了 qt 那只能选微软那套了, 好几种
    qiuhang
        11
    qiuhang  
       222 天前
    你这需求,其实 pyside 挺符合的,就是不知道 pyqt 算 qt 不。
    Senar
        12
    Senar  
       222 天前
    zqf01
        13
    zqf01  
       222 天前
    开源的 lazarus 也是一个选择,支持多平台开发,跨平台可选 qt 或 gtk
    debuggerx
        14
    debuggerx  
       222 天前
    @qiuhang pyside 是 LGPL 协议,可以免费商用,不用担心 qt 的许可证问题
    mioktiar56
        15
    mioktiar56  
       222 天前
    用 unix 环境开发 win7 客户端,即便是跨平台的框架,也得测试调试呀
    ugpu
        16
    ugpu  
       222 天前
    qt & vc++ & WPF
    snailya
        17
    snailya  
       222 天前
    不跨平台就 wpf ,控件用 materialdesigntoolkit 。跨平台 avalonia ,但是它有个字体的问题。
    ide 用 rider
    数据库操作 efcoro.sqlite
    excel+word 处理用 openxmlsdk
    安装包用 visual studio installer 打包成 msi
    Mithril
        18
    Mithril  
       222 天前   ❤️ 1
    @debuggerx QT 有部分也是 LGPL 的,实际上就是 QT 。 “免费”和“商用”即使你用 GPL 的库也没问题。
    问题在于你是否要把自己的代码以同样的 License 发布,或者说你是否要给你的客户提供你自己的源代码。

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

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

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

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

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

    也就只能这样了。。不然满足不了你的需求。
    hanxiV2EX
        39
    hanxiV2EX  
       222 天前 via Android
    用 imgui
    QWE321ASD
        40
    QWE321ASD  
       221 天前
    要最低兼容 win7,要跨平台和不用 qt,还要漂亮界面. 只有 electron 和 javafx 能满足了
    tangmanger
        41
    tangmanger  
       221 天前
    WPF
    xomix
        42
    xomix  
       218 天前
    @poorcai 看看微软的教程,很好写的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2693 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 15:28 · PVG 23:28 · LAX 07:28 · JFK 10:28
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.