From df8a0022ed593df55b54f1edd05bfcb237b428a7 Mon Sep 17 00:00:00 2001 From: "varada%netscape.com" Date: Thu, 9 Mar 2000 08:56:15 +0000 Subject: [PATCH] fix for bug#31111. the invisible components dont get included the first time when they are shown to the user but are counted later when the xpi files need to be copied.did so by having an extra parameter for buildcomponents --- cck/ib/comp.cpp | 20 ++++++++++++---- cck/ib/comp.h | 2 +- cck/ib/ib.cpp | 64 +++++++++++++++++++++++++++++++------------------ 3 files changed, 57 insertions(+), 29 deletions(-) diff --git a/cck/ib/comp.cpp b/cck/ib/comp.cpp index b83aa163593..d788be40b6a 100644 --- a/cck/ib/comp.cpp +++ b/cck/ib/comp.cpp @@ -20,9 +20,10 @@ extern COMPONENT Components[100]; extern int numComponents; extern "C" __declspec(dllexport) -int BuildComponentList(COMPONENT *comps, int *compNum, CString iniSrcPath) +int BuildComponentList(COMPONENT *comps, int *compNum, CString iniSrcPath,int invisibleCount) { *compNum = 0; + int invNum = *compNum; // Get all the component info from each component section CString component; @@ -48,9 +49,18 @@ int BuildComponentList(COMPONENT *comps, int *compNum, CString iniSrcPath) comps[*compNum].selected = (strstr(attr, "SELECTED") != NULL); comps[*compNum].invisible = (strstr(attr, "INVISIBLE") != NULL); comps[*compNum].launchapp = (strstr(attr, "LAUNCHAPP") != NULL); - - (*compNum)++; - component.Format("Component%d", *compNum); + + if (!(comps[*compNum].selected && comps[*compNum].invisible && invisibleCount)) + { + (*compNum)++; + invNum++; + component.Format("Component%d", invNum); + } + else + { + invNum++; + component.Format("Component%d", invNum); + } GetPrivateProfileString(component, "Archive", "", archive, MAX_SIZE, iniSrcPath); } @@ -72,7 +82,7 @@ int GenerateComponentList(CString parms, WIDGET *curWidget) nscpxpiPath = rootPath + "NSCPXPI"; iniSrcPath = nscpxpiPath + "\\config.ini"; - BuildComponentList(Components, &numComponents, iniSrcPath); + BuildComponentList(Components, &numComponents, iniSrcPath, 1); int i; CString WidgetValue(""); diff --git a/cck/ib/comp.h b/cck/ib/comp.h index 4c24fd3a195..4e25c930735 100644 --- a/cck/ib/comp.h +++ b/cck/ib/comp.h @@ -9,4 +9,4 @@ typedef struct s_component { } COMPONENT; extern "C" __declspec(dllexport) -int BuildComponentList(COMPONENT *comps, int *compNum, CString iniSrcPath); +int BuildComponentList(COMPONENT *comps, int *compNum, CString iniSrcPath,int invisibleCount); diff --git a/cck/ib/ib.cpp b/cck/ib/ib.cpp index 93c636c7683..4db2d0b3759 100644 --- a/cck/ib/ib.cpp +++ b/cck/ib/ib.cpp @@ -28,10 +28,12 @@ CString outputPath; CString xpiDstPath; WIDGET *tempWidget; -int selCount; char buffer[50000]; XPI xpiList[100]; int xpiLen = -1; +// Setup Sections for config.ini +CString Setup0Short = "&Typical"; +CString Setup1Short = "C&ustom"; COMPONENT Components[100]; int numComponents; @@ -351,31 +353,51 @@ void init_components() { int i; WIDGET *w = findWidget("SelectedComponents"); - BuildComponentList(Components, &numComponents, iniSrcPath); + BuildComponentList(Components, &numComponents, iniSrcPath,0); // Turn off components that aren't selected for (i=0; ivalue, Components[i].name) == NULL) + if ((strstr(w->value, Components[i].name) == NULL) && (!(Components[i].selected && Components[i].invisible))) Components[i].selected = FALSE; } - +/*Post Beta - we will use the DISABLED key. +Now this is implemented the round about way here. +We have to take only the components that are chosen and mark the rest as disabled +Disabled doesnt work now - so what we are doing is re writing every key in the sections +besides that we are also deleting the keys in the setup types 2&3 so that we have only two +as per request of mktg. +*/ void invisible() { + + CString Setup0Long = "Program will be installed with the most common options"; + + CString Setup1Long = "You may choose the options you want to install. Recommended for advanced users."; + + WritePrivateProfileString("Setup Type0", NULL, "", iniDstPath); + WritePrivateProfileString("Setup Type1", NULL, "", iniDstPath); + + WritePrivateProfileString("Setup Type0","Description Short",(LPCTSTR)Setup0Short,iniDstPath); + WritePrivateProfileString("Setup Type0","Description Long", (LPCTSTR)Setup0Long,iniDstPath); + WritePrivateProfileString("Setup Type1","Description Short",(LPCTSTR)Setup1Short,iniDstPath); + WritePrivateProfileString("Setup Type1","Description Long", (LPCTSTR)Setup1Long,iniDstPath); + WritePrivateProfileString("Setup Type2",NULL," ",iniDstPath); + WritePrivateProfileString("Setup Type3",NULL," ",iniDstPath); + CString Cee; tempWidget = findWidget("SelectedComponents"); CString component; + for (int i=0; icontrol))->GetCount(); - - for (int i=0; i < selCount; i++) + if (Components[i].selected) { - if (((CCheckListBox *)tempWidget->control)->GetCheck(i) != 1) - { component = Components[i].compname; - WritePrivateProfileString(Components[i].compname, "Attributes", "INVISIBLE", iniDstPath); - - } + Cee.Format("C%d", i); + WritePrivateProfileString("Setup Type0",(LPCTSTR)Cee,(LPCTSTR)component, iniDstPath); + WritePrivateProfileString("Setup Type1",(LPCTSTR)Cee,(LPCTSTR)component, iniDstPath); } + else + WritePrivateProfileString(Components[i].compname, "Attributes", "INVISIBLE", iniDstPath); } } void AddThirdParty() @@ -391,7 +413,7 @@ void AddThirdParty() CString compSDesc = "Description Short="; CString compLDesc = "Description Long="; CString compArchive = "Archive="; - CString compISize = "Install Size="; + CString compISize = "Install Size Archive="; CString compAttrib = "Attributes=SELECTED|LAUNCHAPP"; int archiveLen = tpCompPath1.GetLength(); int findLen = tpCompPath1.ReverseFind('\\'); @@ -447,28 +469,24 @@ void AddThirdParty() if (!tpCompPath1.IsEmpty()) { - componentName.Format("Component%d", (selCount)); - cName.Format("C%d", (selCount -1)); + componentName.Format("Component%d", (numComponents)); + cName.Format("C%d", (numComponents -1)); WritePrivateProfileString("Setup Type0", cName, componentName, iniDstPath); WritePrivateProfileString("Setup Type1", cName, componentName, iniDstPath); - WritePrivateProfileString("Setup Type2", cName, componentName, iniDstPath); - WritePrivateProfileString("Setup Type3", cName, componentName, iniDstPath); WritePrivateProfileSection(componentName, cBuffer1, iniDstPath); - selCount++; + numComponents++; CopyFile(tpCompPath1, xpiDstPath + "\\" + Archive1, FALSE); DWORD e1 = GetLastError(); } if (!tpCompPath2.IsEmpty()) { - componentName.Format("Component%d", (selCount)); - cName.Format("C%d", (selCount -1)); + componentName.Format("Component%d", (numComponents)); + cName.Format("C%d", (numComponents -1)); WritePrivateProfileString("Setup Type0", cName, componentName, iniDstPath); WritePrivateProfileString("Setup Type1", cName, componentName, iniDstPath); - WritePrivateProfileString("Setup Type2", cName, componentName, iniDstPath); - WritePrivateProfileString("Setup Type3", cName, componentName, iniDstPath); WritePrivateProfileSection(componentName, cBuffer2, iniDstPath); CopyFile(tpCompPath2, xpiDstPath + "\\" + Archive2, FALSE); DWORD e2 = GetLastError(); @@ -769,7 +787,7 @@ int StartIB(CString parms, WIDGET *curWidget) } } - + // Didn't work... dlg->SetWindowText(" Checking for neccessary components to install");