1、把压缩文件注入到安装程序。
2、从资源文件里面读取.zip包,解压到指定目录。
////读取打包文件
CResourceManager::GetInstance();
HRSRC hrSrcSys = FindResource(CPaintManagerUI::GetInstance(),L"154", RT_RCDATA);
HGLOBAL hGlobalSys = LoadResource(CPaintManagerUI::GetResourceDll(), hrSrcSys );
LPVOID lpGlobalSys = LockResource( hGlobalSys );
UINT sourLen = SizeofResource(CPaintManagerUI::GetResourceDll(), hrSrcSys) ;
DWORD writelen = 0;
HANDLE hFile =CreateFile(cstrZipFileName.GetBuffer(), GENERIC_WRITE | GENERIC_READ, 0, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
if (hFile != INVALID_HANDLE_VALUE)
{
WriteFile(hFile,lpGlobalSys,sourLen,&writelen,NULL);
CloseHandle(hFile);
}else{
writelen = GetLastError();
}
::FreeResource( hGlobalSys );
SetCurrentDirectory(pobj->m_cstrInstallPath);
HZIP hz = OpenZip (cstrZipFileName.GetBuffer(),0);
ZIPENTRY ze;
GetZipItem (hz, -1 , &ze);
int numitems = ze.index;
for (int i = 0; i < numitems; i++){
GetZipItem (hz, i, &ze);
if(ze.attr==0x91){
_wmkdir(ze.name);
}
int ret=UnzipItem(hz, i, ze.name);
if(ret!=0){
printf("ret:%d file:%s %x\r\n",ret,ze.name,ze.attr);
}
else{
printf("ret:%d file:%s %x\r\n",ret,ze.name,ze.attr);
}
if (ze.attr!=145&&SetFileAttributes (ze.name, FILE_ATTRIBUTE_ARCHIVE) == 0)//设置文件属性为存档
{
printf("set file chmod error!\r\n");
}
}
CloseZip (hz);
3、创建桌面快捷方式,启动项等。
4、写卸载信息。