要写 win7+的桌面端单机软件,技术如何选型? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
MrDarnell
V2EX    程序员

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

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

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

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

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

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

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

    也就只能这样了。。不然满足不了你的需求。
    hanxiV2EX
        39
    hanxiV2EX  
       2024-03-28 22:27:52 +08:00 via Android
    用 imgui
    QWE321ASD
        40
    QWE321ASD  
       2024-03-29 09:16:49 +08:00
    要最低兼容 win7,要跨平台和不用 qt,还要漂亮界面. 只有 electron 和 javafx 能满足了
    tangmanger
        41
    tangmanger  
       2024-03-29 09:27:29 +08:00
    WPF
    xomix
        42
    xomix  
       2024-04-01 08:45:44 +08:00
    @poorcai 看看微软的教程,很好写的
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2213 人在线   最高记录 6679     a href="/select/language" class="f11">   Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 16:07 PVG 00:07 LAX 09:07 JFK 12:07
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86