}
void LaunchOneComponent(siC *siCObject, greInfo *aGre){  BOOL      bArchiveFound;  char      szArchive[MAX_BUF];  char      szMsg[MAX_BUF];  if(!siCObject)    /* nothing to do return */    return;  GetPrivateProfileString("Messages", "MSG_CONFIGURING", "", szMsg, sizeof(szMsg), szFileIniInstall);  /* launch 3rd party executable */  if((siCObject->dwAttributes & SIC_SELECTED) && (siCObject->dwAttributes & SIC_LAUNCHAPP))  {    bArchiveFound = TRUE;    lstrcpy(szArchive, sgProduct.szAlternateArchiveSearchPath);    AppendBackSlash(szArchive, sizeof(szArchive));    lstrcat(szArchive, siCObject->szArchiveName);    if((*sgProduct.szAlternateArchiveSearchPath == '\0') || !FileExists(szArchive))    {      lstrcpy(szArchive, szSetupDir);      AppendBackSlash(szArchive, sizeof(szArchive));      lstrcat(szArchive, siCObject->szArchiveName);      if(!FileExists(szArchive))      {        lstrcpy(szArchive, szTempDir);        AppendBackSlash(szArchive, sizeof(szArchive));        lstrcat(szArchive, siCObject->szArchiveName);        if(!FileExists(szArchive))        {          bArchiveFound = FALSE;        }      }    }    if(bArchiveFound)    {      char szParameterBuf[MAX_BUF];      char szSpawnFile[MAX_BUF];      char szMessageString[MAX_BUF];      DWORD dwErr = FO_SUCCESS;      *szMessageString = '\0';      if(*szMsg != '\0')      {        wsprintf(szMessageString, szMsg, siCObject->szDescriptionShort);        ShowMessage(szMessageString, TRUE);      }      DecryptString(szParameterBuf, siCObject->szParameter);      lstrcpy(szSpawnFile, szArchive);      if(siCObject->dwAttributes & SIC_UNCOMPRESS)      {        if((dwErr = FileUncompress(szArchive, szTempDir)) == FO_SUCCESS)        {          lstrcpy(szSpawnFile, szTempDir);          AppendBackSlash(szSpawnFile, sizeof(szSpawnFile));          lstrcat(szSpawnFile, siCObject->szArchiveNameUncompressed);        }        LogISLaunchAppsComponentUncompress(siCObject->szDescriptionShort, dwErr);        if(dwErr != FO_SUCCESS)        {          if(*szMessageString != '\0')            ShowMessage(szMessageString, FALSE);          return;        }      }      if(aGre)      {        GetInfoFromGreInstaller(szSpawnFile, aGre);        UpdateGreInstallerCmdLine(aGre, szParameterBuf, sizeof(szParameterBuf), FOR_NEW_GRE);      }      LogISLaunchAppsComponent(siCObject->szDescriptionShort);      WinSpawn(szSpawnFile, szParameterBuf, szTempDir, SW_SHOWNORMAL, WS_WAIT);      if(siCObject->dwAttributes & SIC_UNCOMPRESS)        FileDelete(szSpawnFile);      if(*szMessageString != '\0')        ShowMessage(szMessageString, FALSE);    }  }}