V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
WarlockMan
V2EX  ›  问与答

今天的桌面原生应用体积太肥大了

  •  1
     
  •   WarlockMan · 15 天前 · 2207 次点击

    想看看微软的桌面原生应用开发,现在是什么样一个情况,

    去官方文档看今天推荐的原生方案是 WinUI ,

    试着用 visual studio2022 创建一个 WinUI 的空模板,

    生成的 Release 版本文件,总体积竟然高达 100MB

    感觉微软有点魔怔了,你既然都 100MB 了,

    那跟 electron 那边有多少区别,

    从前那个 迅雷 5 ,千千静听,体积不超过 10MB 的时代,同样多姿多彩。

    今天的 UI 生态,更多的是在产能上的改进。

    但用户体验上,不见得比以前进步到哪里。

    十年前用户接触的就是那几个控件,

    而 UI 技术栈迭代了 N 个版本的今天,

    用户接触的还是那几个控件。按钮,输入框,图像。

    如果真要开发 windows 上的桌面工具,我宁愿用 WinForm

    25 条回复    2025-03-31 18:30:46 +08:00
    hwdq0012
        1
    hwdq0012  
       15 天前
    winform 这么小是因为 windows 装了.net framework ,真要算也不小
    ODESZA
        2
    ODESZA  
       15 天前
    现在的桌面应用臃肿还不是因为是个软件都给你整上直播、商城、短视频、新闻、安全管家,然后一堆弹窗。
    minami
        3
    minami  
       15 天前 via Android
    busier
        4
    busier  
       15 天前 via iPhone
    用 c 或者 c++把,像 win32 内置应用那样
    xkeyC
        5
    xkeyC  
       15 天前   ❤️ 3
    可以试试 flutter ,用社区 winui 实现开发的软件比原生 winui3 还流畅,空包压缩后体积在 10M 以内。
    https://pub.dev/packages/fluent_ui

    再给个我自己项目的示例:
    https://github.com/StarCitizenToolBox/app: 游戏工具,30M 左右,微软店港区工具类最高评分 TOP2
    https://github.com/xkeyC/fl_caption :22M 内置了 rust 实现的 AI 推理框架,
    paopaosa
        6
    paopaosa  
       15 天前
    现在 100M 已经不算大程序了吧。
    你可以不把 .Net 运行库 打包进去的。
    ashong
        7
    ashong  
       15 天前
    直接 chromium 60MB 左右 😄
    ysc3839
        8
    ysc3839  
       15 天前
    你用 WinUI 2 就不大了
    NightFlame
        9
    NightFlame  
       15 天前
    因为运行时占用了很大的空间
    FanyFull
        10
    FanyFull  
       15 天前
    win32 + webview2 ,win32 本身打包 debug 版本出来占用 4mb 左右,运行时占用内存 2mb 不到,单个 webview 简单页面占用内存 20mb 不到。
    levelworm
        11
    levelworm  
       15 天前 via Android
    直接 Win32 API 岂不美哉?
    june4
        12
    june4  
       15 天前
    追求小的话不如上 rust/go + webview 这类方案
    cwcc
        13
    cwcc  
       15 天前   ❤️ 1
    打包一个国际化的 icu 包就至少会给一个 lib 增加 20M ,所以软件大小只有在 Linux 上那种依赖地狱模式才能体现软件本身的体积。其他平台或者尤其是面向 C 端的程序,基本都是饱和式兼容,塞所有依赖进去。如果在 Linux 、Windows 上纯静态编译一个包含主流库的 C 语言程序,也至少要 40-50M 左右。

    根本原因就是有的语言框架、功能的包袱太重了,比如在 linux 写个 C++的 hello world ,如果要静态编译 C++的话,一个 C++库就要 30MB 。有时候为了实现一个小功能要依赖一个完整的大库,再加上功能叠加,开发者根本不想梳理接近底层的这些依赖,能跑就行,反正现在硬盘不值钱。
    clocean
        14
    clocean  
       14 天前
    我不太懂,我在 github 上 clone 了一个用 bilibili-api 下载 up 主动态里面所有图片的项目,然后用 Cursor 加了一个界面,打包出来 mac ARM 版本 100MB ~,python 项目,正常吗?

    这就一个功能而已😓,还是说是 ai 写了很多没用的工作?问题是就 3 个 py 文件而已
    buf1024
        15
    buf1024  
       14 天前 via Android
    千千静听时代的 win32 api 现在还适用的,如果追求小,也可以用那个时候的技术的
    mumbler
        16
    mumbler  
       14 天前
    1. 2M 的安装包,但界面很丑
    2. 120M 的安装包,界面漂亮
    99%用户都会选 2 ,你喜欢,你宁愿,重要吗
    NonClockworkChen
        17
    NonClockworkChen  
       14 天前
    我看着我 1T 的硬盘,我都懒得思考你的顾虑
    lumia1020
        18
    lumia1020  
       14 天前
    到现在还在用 MFC 开发桌面小工具,方便分享。
    Cloud9527
        19
    Cloud9527  
       14 天前
    时代变了,纠结这些干啥,硬盘都多大了! 随便一个 app 安装包都一二百 mb,手游比端游安装包都大
    shen13176101
        20
    shen13176101  
       14 天前
    @clocean #14 拿起一瓶水喝了一口,见鬼,我明明只喝了 100ml ,为什么我要拿那么大的瓶子
    clocean
        21
    clocean  
       14 天前
    @shen13176101 意思是 py 做 UI 就是会这样子吗?佬,直说啊,不懂啊
    caiqichang
        22
    caiqichang  
       14 天前
    目前用 winform + webview2
    xueyuehua
        23
    xueyuehua  
       14 天前
    @caiqichang 大佬,请教个问题,就是 winform+webview2 怎么发送 http 请求,我之前尝试过在 html 页面的 js 里面发 ajax 请求,但是一直失败,好像发不出去。只能改成前端把参数传给 winform 后端,再由 winform 去发送。
    这是 webview2 的限制,还是我 js 真的写的有问题
    caiqichang
        24
    caiqichang  
       14 天前
    @xueyuehua
    前端把参数传给 winform 后端是主流的做法,
    另外也可以 winform 后端起一个 server 做代理,相当于把 winform 后端当 nginx
    xueyuehua
        25
    xueyuehua  
       11 天前
    @caiqichang 不能直接由前端去发请求吗,问 ai 说可以,但我没成功
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2776 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 13:44 · PVG 21:44 · LAX 06:44 · JFK 09:44
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.