diff --git a/ba/ba1700.cpp b/ba/ba1700.cpp index ae94446a9..160baf98d 100755 --- a/ba/ba1700.cpp +++ b/ba/ba1700.cpp @@ -324,9 +324,9 @@ int TInstaller_mask::test_station_type() const int TInstaller_mask::precheck_modules(bool only_newer) { - TString16 release,currrelease; + TString16 release, currrelease; TString4 cod_module; - int patchlevel,modnumber,currpatch; + int patchlevel, modnumber, currpatch; bool check_enabled = true; _setup_run = false; //inizializzazione del flag di controllo di lancio di setup.exe @@ -341,8 +341,7 @@ int TInstaller_mask::precheck_modules(bool only_newer) currrelease = rigar.get(C_CURRRELEASE); currpatch = rigar.get_int(C_CURRPATCH); modnumber = get_module_number(cod_module); - if (modnumber >= 0 && should_precheck_module(modnumber) && - release.full() && + if (modnumber >= 0 && should_precheck_module(modnumber) && release.full() && ((release > currrelease) || (release == currrelease && (only_newer ? patchlevel > currpatch : patchlevel >= currpatch) )) ) @@ -351,18 +350,23 @@ int TInstaller_mask::precheck_modules(bool only_newer) bool chk = rigar.get_char(C_ISPATCH) != 'X' || release == currrelease; // non spunta automaticamente il modulo server su installazioni che non siano server - if (chk && cod_module == "sr" && test_station_type() != 2) + if (cod_module == "sr" && test_station_type() != 2) + { chk = false; + disable_row(r); + } if (check_enabled) check(r, chk); - if (chk && only_newer && cod_module == "sy") //se viene checkato il modulo sy (sistema) deve togliere.. - { //..la possibilita' di installare altri moduli.. + if (chk && only_newer && (cod_module == "sy" || cod_module == "sr")) //se viene checkato il modulo sy (sistema) e/o sr (servers)deve togliere.. + { //..la possibilita' di installare altri moduli.. for (int i = 0; i < a.items(); i++) { - disable_row(i); // disabilita tutte le righe dello sheet - if (i != r) uncheck(i); // puo' succedere che il modulo sy non sia il primo + if (i != r) + uncheck(i); // puo' succedere che il modulo sy o sr non sia il primo + + disable_row(i); // disabilita tutte le righe dello sheet (va fatto DOPO l'uncheck!!!) } disable(DLG_USER); check_enabled = false; //..ed uscire