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

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

  •  1
     
  •   WarlockMan · 3 天前 · 1969 次点击

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

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

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

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

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

    那跟 electron 那边有多少区别,

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

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

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

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

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

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

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

    24 条回复    2025-03-28 17:34:45 +08:00
    hwdq0012
        1
    hwdq0012  
       3 天前
    winform 这么小是因为 windows 装了.net framework ,真要算也不小
    ODESZA
        2
    ODESZA  
       3 天前
    现在的桌面应用臃肿还不是因为是个软件都给你整上直播、商城、短视频、新闻、安全管家,然后一堆弹窗。
    minami
        3
    minami  
       3 天前 via Android
    busier
        4
    busier  
       3 天前 via iPhone
    用 c 或者 c++把,像 win32 内置应用那样
    xkeyC
        5
    xkeyC  
       3 天前   ❤️ 2
    可以试试 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  
       3 天前
    现在 100M 已经不算大程序了吧。
    你可以不把 .Net 运行库 打包进去的。
    ashong
        7
    ashong  
       3 天前
    直接 chromium 60MB 左右 😄
    ysc3839
        8
    ysc3839  
       3 天前
    你用 WinUI 2 就不大了
    NightFlame
        9
    NightFlame  
       3 天前
    因为运行时占用了很大的空间
    FanyFull
        10
    FanyFull  
       3 天前
    win32 + webview2 ,win32 本身打包 debug 版本出来占用 4mb 左右,运行时占用内存 2mb 不到,单个 webview 简单页面占用内存 20mb 不到。
    levelworm
        11
    levelworm  
       3 天前 via Android
    直接 Win32 API 岂不美哉?
    june4
        12
    june4  
       3 天前
    追求小的话不如上 rust/go + webview 这类方案
    cwcc
        13
    cwcc  
       3 天前   ❤️ 1
    打包一个国际化的 icu 包就至少会给一个 lib 增加 20M ,所以软件大小只有在 Linux 上那种依赖地狱模式才能体现软件本身的体积。其他平台或者尤其是面向 C 端的程序,基本都是饱和式兼容,塞所有依赖进去。如果在 Linux 、Windows 上纯静态编译一个包含主流库的 C 语言程序,也至少要 40-50M 左右。

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

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