有什么简单的办法可以把一个 exe 和一堆烂七八糟的资源文件封装成一个独立可用的 exe 吗? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
coderluan
V2EX    问与答

有什么简单的办法可以把一个 exe 和一堆烂七八糟的资源文件封装成一个独立可用的 exe 吗?

  •  
  •   coderluan 2019-04-22 14:38:20 +08:00 2919 次点击
    这是一个创建于 2417 天前的主题,其中的信息可能已经有所发展或是发生改变。

    目前的处理办法是把乱七八糟的文件全读到字符串里,这样便只生成一个 exe,但是感觉不是很方便呢。

    21 条回复    2019-04-23 13:36:38 +08:00
    ysc3839
        1
    ysc3839  
       2019-04-22 14:42:57 +08:00 via Android   2
    跨平台的办法是把文件数据作为常量编译进去。或者使用 Windows only 的 exe Resources。
    geelaw
        2
    geelaw  
       2019-04-22 14:57:51 +08:00
    这个操作叫做安装 /自解压。可以用 iexpress.exe 实现。
    yukiww233
        3
    yukiww233  
       2019-04-22 15:03:05 +08:00   1
    Thinstall
    shihira
        4
    shihira  
       2019-04-22 15:07:26 +08:00 via Android
    并不,其实写到 data 段里是最方便的了,还能利用系统的换入机制不用自己读
    coderluan
        5
    coderluan  
    OP
       2019-04-22 15:09:16 +08:00
    APPEND:我想要一个独立的执行文件从而隐藏那些烂七八糟的文件,不是要把他们打包了再解压。 @geelaw

    @ysc3839 常量就是现在的办法. RC 文件我得看看,不确定类型能不能都支持。

    @yukiww233 就是这种,我去看看。
    coderluan
        6
    coderluan  
    OP
       2019-04-22 15:10:40 +08:00
    @shihira 不方便是文件太乱七八糟导致的,不是读字符串不方便........
        7
    lshero  
       2019-04-22 15:13:55 +08:00
    压缩后用自解压后运行 exe 哪里不好呢?
    fstab
        8
    fstab  
       2019-04-22 15:15:29 +08:00 via Android
    @coderluan 自动解压到临时文件夹里面,关闭自动删除,这个用户也看不到呀。
    guyujiezi
        9
    guyujiezi  
       2019-04-22 15:15:51 +08:00
    winrar 自解压 exe
    shihira
        10
    shihira  
       2019-04-22 15:22:25 +08:00 via Android
    @flyz 会增加启动时间,性能不好
    @coderluan 组织文件的方法有很多啊,比如说生成一个文件名 - 指针+长度的 map,继续做下去就是一个 vfs 了
    geelaw
        11
    geelaw  
       2019-04-22 15:29:30 +08:00 via iPhone
    @coderluan #5 你没有看出来的是,即使你最终实现了用户看不到那些乱七八糟的文件,结果仍然是在某个地方虚拟地实现了这个事情(如果你 blackbox 实现这件事情,而不是把所有的代码都重构一遍),默认假设就是用户看不见临时文件夹里的东西。所以请用 #7 #8。
    coderluan
        12
    coderluan  
    OP
       2019-04-22 16:50:51 +08:00
    @lshero 简单来说,我们不想让用户看见那些乱七八糟的东西。
    @flyz 文件太大,每次解压重新解压要么了。
    misaka19000
        13
    misaka19000  
       2019-04-22 16:56:07 +08:00
    用工具把数据直接 dump 到 rodata 区呢,之后再通过地址直接读

    之前在《程序员的自我修养》里面看过这种做法
    coderluan
        14
    coderluan  
    OP
       2019-04-22 16:58:41 +08:00
    @geelaw 我们默认假设是,用户会翻看目录(包括临时文件夹),但是不会拆你的 exe,这就是关键问题。PS:这个默认我说了不算。
    coderluan
        15
    coderluan  
    OP
       2019-04-22 16:59:29 +08:00
    @misaka19000 这个和现在存字符串的方式没啥本质区别。
    pckillers
        16
    pckillers  
       2019-04-22 18:36:48 +08:00
    生成 winrar 自解压包并设置自动解压路径和自动执行程序。 然后再改个 exe 图标。 完工
    2010
        17
    2010  
       2019-04-22 18:41:47 +08:00
    建立一个主程序(导航,用户自由选择程序 我做过类似的集中制管理
    Nasei
        18
    Nasei  
       2019-04-22 18:59:59 +08:00   1
    Resources.resx 这种应该可以吧? .net core 也能用
    silentstorm
        19
    silentstorm  
       2019-04-22 19:43:17 +08:00 via Android
    VS 就可以吧,只不过生成的文件会很大
    ChenXuting
        20
    ChenXuting  
       2019-04-23 03:25:21 +08:00 via iPhone
    火凤安装包制作大师?
    dyxLike
        21
    dyxLike  
       2019-04-23 13:36:38 +08:00
    网上很多 单文件封装工具 不知道能不能满足需求
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5753 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 44ms UTC 01:53 PVG 09:53 LAX 17:53 JFK 20:53
    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