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
This commit is contained in:
guy 2010-02-09 13:40:38 +00:00
parent ce944dbeda
commit 6b20f0e9b4
2 changed files with 22 additions and 19 deletions

View File

@ -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)
{

View File

@ -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
}