From 6b20f0e9b43a573a8c02215d576b53ff16ddc3c4 Mon Sep 17 00:00:00 2001 From: guy Date: Tue, 9 Feb 2010 13:40:38 +0000 Subject: [PATCH] Patch level : 10.0 Files correlati : ba0.exe ba1.exe Ricompilazione Demo : [ ] Commento : Resa installazione piu' resistente per permettere aggiornamento di situazioni incoerenti molto datate git-svn-id: svn://10.65.10.50/trunk@20089 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- ba/ba0100.cpp | 34 +++++++++++++++++----------------- ba/ba1700.cpp | 7 +++++-- 2 files changed, 22 insertions(+), 19 deletions(-) diff --git a/ba/ba0100.cpp b/ba/ba0100.cpp index dd506865b..b295bb3d1 100755 --- a/ba/ba0100.cpp +++ b/ba/ba0100.cpp @@ -1275,13 +1275,12 @@ static int get_module_version(TConfig& cfg, void* jolly) bool TMenu_application::copy_setup(const TString& remote_path) { - bool ok = false; - const TFilename local_setupdir = "setup"; - + const TFixed_string local_setupdir("setup"); TFilename remote_setupdir = remote_path; - remote_setupdir.add(local_setupdir.name()); + remote_setupdir.add(local_setupdir); //controlla se esiste la directory;è necessario in quanto se è una vecchia 4.0 potrebbe non esserci - if (remote_setupdir.exist()) + bool ok = remote_setupdir.exist(); + if (ok) { remote_setupdir.add("*.*"); @@ -1291,8 +1290,6 @@ bool TMenu_application::copy_setup(const TString& remote_path) if (!ar.empty()) { make_dir(local_setupdir); - - ok = true; TFilename strsrc, strdst; FOR_EACH_ARRAY_ROW (ar, i, row) { @@ -1300,14 +1297,14 @@ bool TMenu_application::copy_setup(const TString& remote_path) strdst = local_setupdir; strdst.add(strsrc.name()); //se la copia dei files si inchioda esce - if (!fcopy(strsrc, strdst)) - { - ok = false; + ok = fcopy(strsrc, strdst); + if (!ok) break; - } } //FOR_EACH_ARRAY... } //if(!ar.empty... } //if(remote_setupdir... + else + ok = cantread_box(remote_setupdir); return ok; } @@ -1407,13 +1404,16 @@ bool TMenu_application::test_programs() if (update_needed > 0 && yesno_box(msg)) { //copia il contenuto della setup del server nella setup del client - if (sy_needed && copy_setup(remote_name.path())) + if (sy_needed) { - //mette il flag di installing - set_installing_flag(); - //lancia setup in modalita' aggiornamento client e si suicida! (banzai!!) - TExternal_app app("setup\\setup.exe -uc"); - app.run(true, 0, false); + if (copy_setup(remote_name.path())) + { + //mette il flag di installing + set_installing_flag(); + //lancia setup in modalita' aggiornamento client e si suicida! (banzai!!) + TExternal_app app("setup\\setup.exe -uc"); + app.run(true, 0, false); + } } else //lancia l'installazione moduli alla vecchia maniera (e' una vecchia 4.0) { diff --git a/ba/ba1700.cpp b/ba/ba1700.cpp index 7a460cba3..ae94446a9 100755 --- a/ba/ba1700.cpp +++ b/ba/ba1700.cpp @@ -358,9 +358,12 @@ int TInstaller_mask::precheck_modules(bool only_newer) 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.. + { //..la possibilita' di installare altri moduli.. for (int i = 0; i < a.items(); i++) - disable_row(i); //disabilita tutte le righe dello sheet + { + disable_row(i); // disabilita tutte le righe dello sheet + if (i != r) uncheck(i); // puo' succedere che il modulo sy non sia il primo + } disable(DLG_USER); check_enabled = false; //..ed uscire }