关于 Windows 桌面应用开发的技术选型 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
PaulKing

关于 Windows 桌面应用开发的技术选型

  •  
  •   PaulKing Dec 14, 2015 6940 views
    This topic created in 3792 days ago, the information mentioned may be changed or developed.

    各位 V 友好, 最近我们公司需要做一款兼容 Windows XP 的 Windows 音乐播放器, 支持 Socket.io 通信, 对应用的稳定性和内存管理要求比较严格. 由于我之前没整过 Windows 桌面应用开发, 对这方面也几乎是一片空白, 因此在技术选型上的一些想法可能不是很成熟, 在此想请教下各位有没有什么比较好的方案来做这个事情.

    先来谈下我自己的想法, 一开始我是准备开 Visual Studio 用 C# 来做, 但后来发现 Windows XP 最高只能运行到 .NET 4.0, 这直接导致很多的 NuGet 包都没法使用, 很多功能都需要自己手写, 后面维护起来的话比较困难, 并且开发效率也很难提升上去.

    QT 的学习成本太高, 并且目前最新的几个版本都对 Windows XP 没怎么做测试.

    后来我跑去了解了一下 NW.js 和 Electron, 可惜的是 Electron 不支持 Windows XP, 所以直接排除在外, NW.js 目前最高版本也只是 v0.13.0, 很多的特性也处于使用阶段, 并且 Chrome 团队也宣布未来将不再对 Windows XP 进行安全修复, 更新等操作. 今天我也邮件询问了 NW.j 作者, 他表示未来如果能通过对 NW.js 少量修改既能支持 XP 的话, 就会继续支持下去.

    现在的我若要使用 NW.js 的话, 目前主要面临着两个较大的问题:

    1. 应用上线后的迭代更新
    2. 应用桌面快捷方式的创建

    因为我们这款应用最终使用的用户都是电脑小白, 所以这一套最终都需要做到完全自动化, 对于问题一, 我能找到的 NW.js 应用更新方案有如下两个:

    1. 使用 node-webkit-updater 完成可执行包的自动化覆盖操作
    2. 使用 chocolatey 来进行包的管理操作

    但这两种方式就目前看来都算不上很靠谱的解决方案.

    问题二的 "应用桌面快捷方式的创建" 这个目前我还没有找到比较好的解决方案, 在想是否能通过自己写个脚本来自动生成.

    最后我来总结一下现在主要的应用需求:

    1. 支持 Windows XP 的桌面音乐播放器
    2. 支持 Socket.io 通信
    3. 运行稳定 (要求至少放着连续播三天)
    4. 要有一个应用可持续迭代更新及内测的解决方案
    5. 一个月时间独自完成开发 (当中包括学习时间)

    技术选型这块到目前为止我还未找到较为靠谱的解决方案, 一个人的思考方式和技术视野始终有限, 想到 V2EX 上大神云集, 遂来发帖求助, 还请高人指点.

    21 replies    2015-12-15 19:21:28 +08:00
    LMkillme
        1
    LMkillme  
       Dec 14, 2015
    PHPhub 写得不错~
    LMkillme
        2
    LMkillme  
       Dec 14, 2015
    QT 个人感觉学习成本不会太高,以前也是拿起 QT 就现学现卖撸了个百度音乐播放器,信号槽机制印象深刻,界面也挺好看的。
    PaulKing
        3
    PaulKing  
    OP
       Dec 14, 2015
    @LMkillme 其实 QT 主要还是考虑到它最近的几个版本对没有针对 Windows XP 做测试, 这块是令我比较担心的一点.
    theoractice
        4
    theoractice  
       Dec 15, 2015 via Android
    http://www.kfstorm.com/blog/
    c#不是问题。这个博主写了个我用了好几年的 wpf 版豆瓣 fm 客户端,界面超棒而且完美支持 xp 。

    http://wubin.in/#article/5
    还是豆瓣 fm 客户端,这个是用 aauto+htmlayout 写的。据说作者从编程菜鸟到写完第一版只用了俩星期。

    上面俩方法都满足 lz 所有的要求,界面都很华丽,还都有源代码。自己选吧。个人感觉 aauto 对小白用户更友好因为不用装.net
    theoractice
        5
    theoractice  
       Dec 15, 2015
    哈哈, github 搜一下 doubanfm ,各种语言的客户端都有。这东西跟 LZ 的需求非常相似,多看看自己评估下难度呗。
    theoractice
        6
    theoractice  
       Dec 15, 2015
    反正 NW.js 建议放弃。很难想象一个纯听歌软件启动就得半天然后还后台开一堆进程占内存的。
    pynix
        7
    pynix  
       Dec 15, 2015
    建议 wpf

    UWP 更佳。。。初创不用考虑 xp 用户了。应该考虑 wp 用户。。。。
    pynix
        8
    pynix  
       Dec 15, 2015
    不建议。。。 not 不用。
    BGLL
        9
    BGLL  
       Dec 15, 2015 via Android
    Qt 对 xp 兼容性还是挺好的,而且也不一定要用最新版本啊。
    wy315700
        10
    wy315700  
       Dec 15, 2015 via Android
    WTL
    hjc4869
        11
    hjc4869  
       Dec 15, 2015
    现在这个时间做兼容 XP 的软件还要追求稳定,又要用这么多新技术,确实是个难题了……
    chenjf2k
        12
    chenjf2k  
       Dec 15, 2015
    客户端.net 2.0~3.5 轻松解决。 服务端都可以( Node.js 或.net 4.5 )
    xwing
        13
    xwing  
       Dec 15, 2015
    Delphi....
    tabris17
        14
    tabris17  
       Dec 15, 2015
    wxWidgets
    harry890829
        15
    harry890829  
       Dec 15, 2015
    然而公司项目, win 桌面客户端使用 c/c++编写,界面库使用 wxwidgets ,通信使用 zmq
    superdong
        16
    superdong  
       Dec 15, 2015
    PaulKing
        17
    PaulKing  
    OP
       Dec 15, 2015
    @superdong 请问 GitHub 上面有地址吗? 我上去看看
    yougg
        18
    yougg  
       Dec 15, 2015
    Windows XP 上面满足楼主使用的现成的音乐播放器应该就有很多, 为什么公司要求自己开发呢?
    wshcdr
        19
    wshcdr  
       Dec 15, 2015
    XP?要么 MFC , 要么 wxWidget 了,
    hqs123
        20
    hqs123  
       Dec 15, 2015
    MFC 太旧了, winForm 、 WPF 把,也可以 Qt.
    PaulKing
        21
    PaulKing  
    OP
       Dec 15, 2015
    About     Help     Advertise     Blog     API     FAQ     Solana     2354 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 70ms UTC 05:02 PVG 13:02 LAX 22:02 JFK 01:02
    Do have faith in what you're doing.
    ubao msn 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