打包软件的思路

制作安装包时,涉及的技术包括安装位置设定、目录创建、相关文件的拷贝、数据库初始化、相关文件的注册、打包成单一文件及其它初始化等,一般我们都喜欢把这些复杂的工作交给专业打包工具如InstallShield等来处理。但只要善于整理,不借助专业打包工具,仅使用VC自己打包也很可行。

使用VC打包的难点在于把所有文件打包成单一文件,本文将使用一示例主要解决此问题。

 

  1. 在VC工程中,导入其它文件(这里使用exe格式的可执行文件),Resource Type使用EXE,资源名:IDR_EXE1;
  2. 对话框工程中添加函数如下:
BOOL  CMyDlg::ReleaseRes(CString strFileName, WORD  wResID, CString strFileType)
{
         DWORD  dwWrite = 0; //资源文件大小   
          HANDLE  hFile = CreateFile(strFileName, GENERIC_WRITE, FILE_SHARE_WRITE, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);   //创建文件
 
        if  (hFile == INVALID_HANDLE_VALUE)          return  FALSE;
          
          HRSRC  hSrc = FindResource(NULL, MAKEINTRESOURCE(wResID), strFileType);   //查找资源文件,加载资源到内存,得到资源文件大小
         HGLOBAL  hG = LoadResource(NULL, hSrc);
         DWORD  dwSize = SizeofResource(NULL, hSrc);      
 
          WriteFile(hFile, hG, dwSize, &dwWrite, NULL); //写入文件
         CloseHandle(hFile);
         return  TRUE;
}

 

  3. 在需要的地方调用执行此函数即可:

ReleaseRes("Test.exe", DWORD(IDR_EXE1), "EXE");

 另外还可以把其它文件写入指定exe文件结尾而不影响原exe文件运行,以及exe文件可以读取或者复印其本身,利用此原理便可制作自解压软件,当然也可以更好的制作安装包。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值