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

2019-04-22 14:38:20 +08:00
 coderluan

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

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

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

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

之前在《程序员的自我修养》里面看过这种做法
coderluan
2019-04-22 16:58:41 +08:00
@geelaw 我们默认假设是,用户会翻看目录(包括临时文件夹),但是不会拆你的 exe,这就是关键问题。PS:这个默认我说了不算。
coderluan
2019-04-22 16:59:29 +08:00
@misaka19000 这个和现在存字符串的方式没啥本质区别。
pckillers
2019-04-22 18:36:48 +08:00
生成 winrar 自解压包并设置自动解压路径和自动执行程序。 然后再改个 exe 图标。 完工
2010
2019-04-22 18:41:47 +08:00
建立一个主程序(导航,用户自由选择程序 我做过类似的集中制管理
Nasei
2019-04-22 18:59:59 +08:00
Resources.resx 这种应该可以吧? .net core 也能用
silentstorm
2019-04-22 19:43:17 +08:00
VS 就可以吧,只不过生成的文件会很大
ChenXuting
2019-04-23 03:25:21 +08:00
火凤安装包制作大师?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/557515

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX