BOOL IterateCabinet(PTSTR pszCabFile)
{
if ( !SetupIterateCabinet(pszCabFile,0, (PSP_FILE_CALLBACK)CabinetCallback, 0) )
{
return FALSE;
}
return TRUE;
}
LRESULT
WINAPI
CabinetCallback ( IN PVOID pMyInstallData,
IN UINT Notification,
IN UINT Param1,
IN UINT Param2 )
{
LRESULT lRetVal = NO_ERROR;
char szTarget[MAX_PATH];
FILE_IN_CABINET_INFO *pInfo = NULL;
FILEPATHS *pFilePaths = NULL;
lstrcpy(szTarget,DestDir);
switch(Notification)
{
case SPFILENOTIFY_FILEINCABINET:
pInfo = (FILE_IN_CABINET_INFO *)Param1;
lstrcat(szTarget, pInfo->NameInCabinet);
lstrcpy(pInfo->FullTargetName, szTarget);
lRetVal = FILEOP_DOIT; // Extract the file.
break;
case SPFILENOTIFY_FILEEXTRACTED:
pFilePaths = (FILEPATHS *)Param1;
//printf ( "Extracted %s/n",pFilePaths->Target);
lRetVal = NO_ERROR;
break;
case SPFILENOTIFY_NEEDNEWCABINET: // Unexpected.
lRetVal = NO_ERROR;
break;
}
return lRetVal;
}