Patch level :4.0 790
Files correlati : Ricompilazione Demo : [ ] Commento :nuove procedure aggiornamento client git-svn-id: svn://10.65.10.50/trunk@15642 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
6da0b223ba
commit
8678ec432c
100
ba/ba0100.cpp
100
ba/ba0100.cpp
@ -88,6 +88,7 @@ protected:
|
|||||||
void manage_preferred();
|
void manage_preferred();
|
||||||
|
|
||||||
bool test_programs();
|
bool test_programs();
|
||||||
|
void copy_setup(const TString& remote_path);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
void select_tree_current();
|
void select_tree_current();
|
||||||
@ -1222,18 +1223,39 @@ static int get_module_version(TConfig& cfg, void* jolly)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TMenu_application::copy_setup(const TString& remote_path)
|
||||||
|
{
|
||||||
|
const TFilename local_setupdir = "setup";
|
||||||
|
make_dir(local_setupdir);
|
||||||
|
|
||||||
|
TFilename remote_setupdir = remote_path;
|
||||||
|
remote_setupdir.add(local_setupdir.name());
|
||||||
|
|
||||||
|
TString_array ar;
|
||||||
|
list_files(remote_setupdir, ar);
|
||||||
|
|
||||||
|
TFilename strsrc, strdst;
|
||||||
|
FOR_EACH_ARRAY_ROW (ar, i, row)
|
||||||
|
{
|
||||||
|
strsrc = *row;
|
||||||
|
strdst = local_setupdir;
|
||||||
|
strdst.add(strsrc.name());
|
||||||
|
fcopy(strsrc, strdst);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
bool TMenu_application::test_programs()
|
bool TMenu_application::test_programs()
|
||||||
{
|
{
|
||||||
TToken_string dangerous;
|
TToken_string dangerous;
|
||||||
|
int update_needed = 0;
|
||||||
bool test = false;
|
bool test = false;
|
||||||
bool more = false;
|
//parentesi necessaria per richiudere subito il .ini!
|
||||||
{
|
{
|
||||||
TConfig prawin(CONFIG_INSTALL, "Main");
|
TConfig prawin(CONFIG_INSTALL, "Main");
|
||||||
test = prawin.get_bool("TestPrograms");
|
test = prawin.get_bool("TestPrograms");
|
||||||
}
|
}
|
||||||
|
|
||||||
while (test)
|
if (test)
|
||||||
{
|
{
|
||||||
TConfig install("install.ini", "Main");
|
TConfig install("install.ini", "Main");
|
||||||
TFilename remote_name = install.get("DiskPath");
|
TFilename remote_name = install.get("DiskPath");
|
||||||
@ -1253,14 +1275,21 @@ bool TMenu_application::test_programs()
|
|||||||
remote_install.for_each_paragraph(get_module_version, &his_modules);
|
remote_install.for_each_paragraph(get_module_version, &his_modules);
|
||||||
pi.addstatus(1);
|
pi.addstatus(1);
|
||||||
|
|
||||||
TString msg = TR("I seguenti moduli devono essere aggiornati prima dell'utilizzo:");
|
TString msg = TR("I seguenti moduli devono essere aggiornati prima dell'utilizzo:\n");
|
||||||
int update_needed = 0;
|
|
||||||
|
|
||||||
for (word module = 0; module < ENDAUT; module++)
|
//giro su tutti i moduli che sono sul server
|
||||||
|
const TDongle& chiavetta = dongle();
|
||||||
|
FOR_EACH_ASSOC_STRING(his_modules, h, str_code, str_tok)
|
||||||
{
|
{
|
||||||
if (dongle().active(module) && dongle().shown(module))
|
//per prima cosa controlla se deve aggiornare SY e/o BA
|
||||||
|
int module = 0;
|
||||||
|
const TString4 code = str_code;
|
||||||
|
if (code != "sy" && code != "ba")
|
||||||
|
module = chiavetta.module_name2code(code);
|
||||||
|
|
||||||
|
if (chiavetta.active(module) && chiavetta.shown(module))
|
||||||
{
|
{
|
||||||
const TString4 code = dongle().module_code2name(module);
|
//const TString4 code = dongle().module_code2name(module);
|
||||||
TToken_string* mytok = (TToken_string*)my_modules.objptr(code);
|
TToken_string* mytok = (TToken_string*)my_modules.objptr(code);
|
||||||
TToken_string* histok = (TToken_string*)his_modules.objptr(code);
|
TToken_string* histok = (TToken_string*)his_modules.objptr(code);
|
||||||
|
|
||||||
@ -1270,24 +1299,28 @@ bool TMenu_application::test_programs()
|
|||||||
const int p2 = histok ? histok->get_int() : 0;
|
const int p2 = histok ? histok->get_int() : 0;
|
||||||
if (!v1.blank() && compare_version(v1, p1, v2, p2) < 0)
|
if (!v1.blank() && compare_version(v1, p1, v2, p2) < 0)
|
||||||
{
|
{
|
||||||
if (module > 0) // Non disabilitare mai il modulo base!
|
// Non disabilitare mai il modulo base! Se non funzionasse qualcosa (vedi anno di assistenza)...
|
||||||
|
//...non lascierebbe funzionare nulla!!!!
|
||||||
|
if (module > 0)
|
||||||
dangerous.add(code);
|
dangerous.add(code);
|
||||||
if (!more)
|
|
||||||
|
if (msg.len() < 200)
|
||||||
{
|
{
|
||||||
if (msg.len() < 200)
|
TString name;
|
||||||
{
|
if (code == "sy")
|
||||||
const TString& name = dongle().module_code2desc(module);
|
name = TR("Sistema");
|
||||||
if (update_needed > 0)
|
|
||||||
msg << ',';
|
|
||||||
msg << name;
|
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
name = chiavetta.module_code2desc(module);
|
||||||
if (msg.right(1) != ".")
|
if (update_needed > 0)
|
||||||
msg << ",etc.";
|
msg << ", ";
|
||||||
}
|
msg << name;
|
||||||
update_needed++;
|
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (msg.right(1) != ".")
|
||||||
|
msg << ",etc.";
|
||||||
|
}
|
||||||
|
update_needed++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1296,18 +1329,19 @@ bool TMenu_application::test_programs()
|
|||||||
warning_box(msg);
|
warning_box(msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (more)
|
if (update_needed > 0 && yesno_box(TR("Si desidera aggiornare i moduli adesso?")))
|
||||||
break;
|
{
|
||||||
if (dangerous.empty() ||
|
//copia il contenuto della setup del server nella setup del client
|
||||||
(!more && !yesno_box(TR("Si desidera aggiornare i moduli adesso?"))))
|
copy_setup(remote_name.path());
|
||||||
break;
|
//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);
|
||||||
|
|
||||||
user() = dongle().administrator(); // Divento temporaneamente amministratore
|
//se lancia un'installazione->esce!!!
|
||||||
TExternal_app app("ba1 -6");
|
return false;
|
||||||
app.run(true);
|
}
|
||||||
set_installing_flag();
|
|
||||||
//se lancia un'installazione->esce!!!
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
_menu.set_dangerous_modules(dangerous);
|
_menu.set_dangerous_modules(dangerous);
|
||||||
return true;
|
return true;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user