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

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

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

    目前的处理办法是把乱七八糟的文件全读到字符串里,这样便只生成一个 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 不方便是文件太乱七八糟导致的,不是读字符串不方便........
    lshero
        7
    lshero  
       2019-04-22 15:13:55 +08:00
    压缩后用自解压后运行 exe 哪里不好呢?
    flyz
        8
    flyz  
       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   ·   实用小工具   ·   2616 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 10:32 · PVG 18:32 · LAX 02:32 · JFK 05:32
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.