| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1099 人关注过本帖
标题:可执行文件的打包
只看楼主 加入收藏
gzy541
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2011-12-7
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:8 
可执行文件的打包
我想把几个.exe文件打包成一个安装文件,请问如何打包?(用VC)
谢谢了!
搜索更多相关主题的帖子: 打包 安装 执行文件 如何 
2012-02-23 14:53
yuccn
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:何方
等 级:版主
威 望:167
帖 子:6815
专家分:42393
注 册:2010-12-16
收藏
得分:0 
有专门的工具的,你百度找下就行了。

我行我乐
公众号:逻辑客栈
我的博客:
https://blog.yuccn. net
2012-02-23 15:52
gzy541
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2011-12-7
收藏
得分:0 
我想用VC做,目前是把exe文件当资源文件导入到打包程序中,但不知道怎么运行。
还是谢谢你了。
2012-02-23 16:16
yuccn
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:何方
等 级:版主
威 望:167
帖 子:6815
专家分:42393
注 册:2010-12-16
收藏
得分:0 
这样啊,
用下面几个函数可以,你查查看吧
BeginUpdateResource(……)
UpdateResource(……)
EndUpdateResource(……)

查询msdn就行了

我行我乐
公众号:逻辑客栈
我的博客:
https://blog.yuccn. net
2012-02-23 16:21
gzy541
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2011-12-7
收藏
得分:0 
我想用VC做,目前是把exe文件当资源文件导入到打包程序中,但不知道怎么运行。
还是谢谢
2012-02-23 16:23
gzy541
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2011-12-7
收藏
得分:0 
我试试,谢谢啊!
2012-02-23 16:23
yuccn
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:何方
等 级:版主
威 望:167
帖 子:6815
专家分:42393
注 册:2010-12-16
收藏
得分:15 
BeginUpdateResource(……)
UpdateResource(……)
EndUpdateResource(……)

只是把一些数据打到一个pe文件的里面作为资源而已的,打进去的数据不会被运行的(对程序来说,打进去的只是一个2进制数据)。如果要这些数据被运行,还是要把这些资源释放出来还原成pe文件才可以运行的。
如果要把它释放,应该
FindResource()找到资源 ::SizeofResource()获取资源的大小,-》::LoadResourc()-》LPVOID lpResData = ::LockResource(hResData);
-》把lpResData 的数据写到一个文件里面去就行了。写入的大小为前面的SizeofResource 。

下面是我写过的一个程序 动作就是释放资源包
,看看对你是否有价值
BOOL GetBindResInfo(LPBYTE *lpResInfo, LPDWORD lpdwResSize)
{
    if (lpResInfo == NULL || lpdwResSize == 0) {
        return FALSE;
    }

    HRSRC hResInfo = ::FindResource(NULL, RES_NAME_BIND_INFO, RT_RCDATA);
    DWORD dwResSize = ::SizeofResource(NULL, hResInfo);
    if (dwResSize == 0) {
        return FALSE;
    }

    HGLOBAL hResData = ::LoadResource(NULL, hResInfo);
    LPVOID lpResData = ::LockResource(hResData);

    LPBYTE lpResBuffer = new BYTE[dwResSize];
    ::memcpy(lpResBuffer, lpResData, dwResSize);

    (*lpResInfo) = lpResBuffer;
    (*lpdwResSize) = dwResSize;

    ::FreeResource(hResData);

    return TRUE;
}

我行我乐
公众号:逻辑客栈
我的博客:
https://blog.yuccn. net
2012-02-23 18:05
C_printf
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:102
专家分:122
注 册:2010-1-26
收藏
得分:5 
如果文件不大的话,用16进制文件查看工具打开一个exe文件,然后把这些数据复制放到一个char数组,数组大小根据文件大小定义。几个exe就搞几个数组。
在要用这些exe的,就把数组里面的数据写成exe。
文件操作会吧。
2012-02-23 18:53
gzy541
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2011-12-7
收藏
得分:0 
谢谢帮忙,呵呵,到这里我就可以自己研究了,十分感谢!
2012-02-24 09:30
快速回复:可执行文件的打包
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017100 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved