if(strstr(szBuf, "UNCOMPRESS")) dwAttributes |= SIC_UNCOMPRESS;
HRESULT ParseComponentAttributes(char *szAttribute){  char  szBuf[MAX_BUF];  DWORD dwAttributes = 0;  lstrcpy(szBuf, szAttribute);  strupr(szBuf);  if(strstr(szBuf, "SELECTED") && !strstr(szBuf, "UNSELECTED"))    /* Check for SELECTED attribute only. Since strstr will also return a     * SELECTED attribute for UNSELECTED, we need to make sure it's not the     * UNSELECTED attribute.     *     * Even though we're already checking for the UNSELECTED attribute     * later on in this function, we're trying not to be order dependent.     */    dwAttributes |= SIC_SELECTED;  if(strstr(szBuf, "INVISIBLE"))    dwAttributes |= SIC_INVISIBLE;  if(strstr(szBuf, "LAUNCHAPP"))    dwAttributes |= SIC_LAUNCHAPP;  if(strstr(szBuf, "DOWNLOAD_ONLY"))    dwAttributes |= SIC_DOWNLOAD_ONLY;  if(strstr(szBuf, "ADDITIONAL"))    dwAttributes |= SIC_ADDITIONAL;  if(strstr(szBuf, "DISABLED"))    dwAttributes |= SIC_DISABLED;  if(strstr(szBuf, "UNSELECTED"))    dwAttributes &= ~SIC_SELECTED;  if(strstr(szBuf, "FORCE_UPGRADE"))    dwAttributes |= SIC_FORCE_UPGRADE;  if(strstr(szBuf, "IGNORE_DOWNLOAD_ERROR"))    dwAttributes |= SIC_IGNORE_DOWNLOAD_ERROR;  if(strstr(szBuf, "IGNORE_XPINSTALL_ERROR"))    dwAttributes |= SIC_IGNORE_XPINSTALL_ERROR;  return(dwAttributes);}