diff --git a/cck/globals/comp.cpp b/cck/globals/comp.cpp index 3ca916bcdf1d..18b3843c844c 100644 --- a/cck/globals/comp.cpp +++ b/cck/globals/comp.cpp @@ -131,7 +131,12 @@ int BuildComponentList(COMPONENT *comps, int *compNum, CString iniSrcPath, comps[*compNum].forceupgrade = (strstr(attr, "FORCE_UPGRADE") != NULL); comps[*compNum].uncompress = (strstr(attr, "UNCOMPRESS") != NULL); comps[*compNum].downloadonly = (strstr(attr, "DOWNLOAD_ONLY") != NULL); + comps[*compNum].supersede = (strstr(attr, "SUPERSEDE") != NULL); + comps[*compNum].ignoreerror = (strstr(attr, "IGNORE_DOWNLOAD_ERROR") != NULL); comps[*compNum].unselected = (strstr(attr, "UNSELECTED") != NULL); + // using strcmp for VISIBLE attrib instead of strstr since ststr returns + // true for INVISIBLE attribs also (VISIBLE is a part of INVISIBLE) + comps[*compNum].visible = (strcmp(attr, "VISIBLE") == 0); comps[*compNum].empty = strcmp(attr, ""); if (!(comps[*compNum].selected && comps[*compNum].invisible && diff --git a/cck/globals/comp.h b/cck/globals/comp.h index 5382fabbc35f..7ffe0a7eb0ee 100644 --- a/cck/globals/comp.h +++ b/cck/globals/comp.h @@ -12,6 +12,9 @@ typedef struct s_component { BOOL uncompress; BOOL downloadonly; BOOL unselected; + BOOL supersede; + BOOL ignoreerror; + BOOL visible; BOOL empty; } COMPONENT; diff --git a/cck/ib/ib.cpp b/cck/ib/ib.cpp index 78d21bc6cdde..be951d5a34fa 100644 --- a/cck/ib/ib.cpp +++ b/cck/ib/ib.cpp @@ -1750,7 +1750,7 @@ void init_components() Components[i].selected = FALSE; } else - if ((Components[i].additional) || !(Components[i].empty)) + if ((Components[i].additional) || (Components[i].visible)) Components[i].selected = TRUE; } } @@ -1788,36 +1788,54 @@ void invisible() Cee.Format("C%d", componentOrder); WritePrivateProfileString("Setup Type0",(LPCTSTR)Cee,(LPCTSTR)component, iniDstPath); WritePrivateProfileString("Setup Type1",(LPCTSTR)Cee,(LPCTSTR)component, iniDstPath); - if (Components[i].additional && !(Components[i].launchapp) && - !Components[i].forceupgrade && !(Components[i].invisible)) - WritePrivateProfileString(Components[i].compname, "Attributes", - "SELECTED|ADDITIONAL", iniDstPath); - else if (Components[i].additional && !(Components[i].launchapp) && - Components[i].forceupgrade && !(Components[i].unselected) && - !(Components[i].invisible)) - WritePrivateProfileString(Components[i].compname, "Attributes", - "SELECTED|ADDITIONAL|FORCE_UPGRADE", iniDstPath); - else if (Components[i].additional && !(Components[i].launchapp) && - Components[i].forceupgrade && Components[i].unselected && - !(Components[i].invisible)) - WritePrivateProfileString(Components[i].compname, "Attributes", - "UNSELECTED|ADDITIONAL|FORCE_UPGRADE", iniDstPath); - else if (!(Components[i].disabled) && !(Components[i].additional) && - Components[i].forceupgrade && !(Components[i].invisible)) - WritePrivateProfileString(Components[i].compname, "Attributes", - "SELECTED|FORCE_UPGRADE", iniDstPath); - else if (Components[i].additional && Components[i].launchapp && - Components[i].uncompress && !(Components[i].invisible)) - WritePrivateProfileString(Components[i].compname, "Attributes", - "SELECTED|UNCOMPRESS|LAUNCHAPP|ADDITIONAL", iniDstPath); - else if (!(Components[i].additional) && - !(Components[i].forceupgrade) && !(Components[i].invisible)) - WritePrivateProfileString(Components[i].compname, "Attributes", - "SELECTED|INVISIBLE", iniDstPath); - componentOrder++; + + CString strAttributes = "SELECTED"; + CString strSep = "|"; + + if (Components[i].disabled) + strAttributes += strSep + "DISABLED"; + + if (Components[i].invisible) + strAttributes += strSep + "INVISIBLE"; + + if (Components[i].visible) + strAttributes += strSep + "VISIBLE"; + + if (Components[i].uncompress) + strAttributes += strSep + "UNCOMPRESS"; + + if (Components[i].launchapp) + strAttributes += strSep + "LAUNCHAPP"; + + if (Components[i].additional) + strAttributes += strSep + "ADDITIONAL"; + + if (Components[i].forceupgrade) + strAttributes += strSep + "FORCE_UPGRADE"; + + if (Components[i].supersede) + strAttributes += strSep + "SUPERSEDE"; + + if (Components[i].downloadonly) + strAttributes += strSep + "DOWNLOAD_ONLY"; + + if (Components[i].ignoreerror) + strAttributes += strSep + "IGNORE_DOWNLOAD_ERROR"; + + if (Components[i].unselected) + { + // UNSELECTED attribute must not appear with SELECTED attribute + if ( (strAttributes.Find("SELECTED")) != -1 ) + strAttributes.Replace("SELECTED", "UNSELECTED"); + } + + WritePrivateProfileString(Components[i].compname, "Attributes", + strAttributes, iniDstPath); + componentOrder++; } else - WritePrivateProfileString(Components[i].compname, "Attributes", "INVISIBLE", iniDstPath); + WritePrivateProfileString(Components[i].compname, "Attributes", + "INVISIBLE", iniDstPath); } } @@ -1855,18 +1873,23 @@ void LinuxInvisible() WritePrivateProfileString("Setup Type1",(LPCTSTR)Cee, (LPCTSTR)component,iniDstPath); - if ((Components[i].invisible) && (Components[i].downloadonly)) - WritePrivateProfileString(Components[i].compname,"Attributes", - "SELECTED|INVISIBLE|DOWNLOAD_ONLY",iniDstPath); - else if ((Components[i].invisible) && !(Components[i].downloadonly)) - WritePrivateProfileString(Components[i].compname,"Attributes", - "SELECTED|INVISIBLE",iniDstPath); - else if (!Components[i].empty) - WritePrivateProfileString(Components[i].compname,"Attributes", - "",iniDstPath); - else - WritePrivateProfileString(Components[i].compname,"Attributes", - "SELECTED",iniDstPath); + CString strAttributes = "SELECTED"; + CString strSep = "|"; + + if (Components[i].invisible) + strAttributes += strSep + "INVISIBLE"; + + if (Components[i].downloadonly) + strAttributes += strSep + "DOWNLOAD_ONLY"; + + if (Components[i].visible) + // VISIBLE attribute must appear by itself + // this may require change in future if VISIBLE attribute in the + // browser installer appears with other attributes + strAttributes = "VISIBLE"; + + WritePrivateProfileString(Components[i].compname, "Attributes", + strAttributes, iniDstPath); componentOrder++; } else