Patch level :10.0
Files correlati : Ricompilazione Demo : [ ] Commento :modifiche necessarie alla 10.0 per integrarsi con il nuovo setup git-svn-id: svn://10.65.10.50/trunk@15916 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
9f78f19950
commit
75e4c8fde0
@ -107,7 +107,7 @@ bool update_dninst(bool force)
|
||||
|
||||
//legge dal diskpath di install.ini la directory da cui aggiornarsi;se il dninst.zip di tale..
|
||||
//..directory e' piu' nuovo di quello in locale -> lo copia in locale
|
||||
const TFilename local_name = "dninst.zip";
|
||||
const TFilename local_name = "setup/dninst.zip";
|
||||
TConfig ini("install.ini", "Main");
|
||||
TFilename remote_name = ini.get("DiskPath");
|
||||
remote_name.add(local_name);
|
||||
@ -124,7 +124,10 @@ bool update_dninst(bool force)
|
||||
}
|
||||
}
|
||||
if (force)
|
||||
{
|
||||
make_dir(local_name.path());
|
||||
fcopy(remote_name, local_name);
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
@ -139,7 +142,7 @@ bool update_assistance_year()
|
||||
|
||||
update_dninst(true);
|
||||
|
||||
const TFilename dninst = "dninst.zip";
|
||||
const TFilename dninst = "setup/dninst.zip";
|
||||
if (dninst.exist())
|
||||
{
|
||||
char dninst_key[8] = "";
|
||||
@ -165,19 +168,18 @@ bool update_assistance_year()
|
||||
dongle().set_year_assist(ass_year);
|
||||
if (dongle().burn())
|
||||
{
|
||||
message_box(FR("Il contratto %d è stato attivato automaticamente"));
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
show_error(FR("Errore di scrittura sulla chiave di protezione"));
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
} //if(dongle().burn...
|
||||
} //if(sn==serno...
|
||||
} //while(!keys.eof()...
|
||||
show_error(TR("Il numero di serie di questa postazione non è presente sul database"));
|
||||
}
|
||||
else
|
||||
else //if(ass_year>dongle...
|
||||
show_error(TR("L'anno di assistenza sul database e' inferiore a quello registrato sulla chiave di protezione"));
|
||||
}
|
||||
else
|
||||
|
378
ba/ba1700.cpp
378
ba/ba1700.cpp
@ -27,11 +27,15 @@
|
||||
#define C_ISPATCH 9
|
||||
#define C_BASEPATCH 10
|
||||
|
||||
#ifdef _DEMO_
|
||||
const char* const http_default_path = "/aga/demo/zip/";
|
||||
#else
|
||||
const char* const http_default_path = "/aga/program/zip/";
|
||||
#endif
|
||||
|
||||
///////////////////////////////////////////////////////
|
||||
// Metodi di utility
|
||||
///////////////////////////////////////////////////////
|
||||
HIDDEN const char* http_default_path()
|
||||
{
|
||||
//da compilare in base al producer!
|
||||
return "www.aga.it/agarel100/";
|
||||
}
|
||||
|
||||
HIDDEN int compare_version(const char* v1, int p1, const char* v2, int p2)
|
||||
{
|
||||
@ -60,6 +64,21 @@ HIDDEN word version2year(const char* v)
|
||||
return atoi(ver);
|
||||
}
|
||||
|
||||
static int compare_modules(const TObject** o1, const TObject** o2)
|
||||
{
|
||||
TToken_string& ts1 = *(TToken_string*)(*o1);
|
||||
TToken_string& ts2 = *(TToken_string*)(*o2);
|
||||
|
||||
int res = 0;
|
||||
for (int i = 2; i < 5 && res == 0; i++)
|
||||
{
|
||||
TString16 s1 = ts1.get(i);
|
||||
const char* s2 = ts2.get(i);
|
||||
res = s1.compare(s2);
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
bool is_internet_path(const TString& addr)
|
||||
{
|
||||
if (addr.compare("www.", 4, true) == 0)
|
||||
@ -84,8 +103,7 @@ class TInstaller_mask : public TArray_sheet
|
||||
static TInstaller_mask* _curr_mask;
|
||||
int _station_type; //intero che definisce il tipo di installazione (1=std,2=server,3=client)
|
||||
bool _installed; // Flag per verificare se almeno un modulo e' stato installato
|
||||
bool _sys_installed; //Flag per controllare l'installazione del modulo di sistema SY
|
||||
bool _modules_pending; //Flag per controllare se ci sono altri moduli da installare oltre a sy
|
||||
bool _setup_run; //Flag che indica se e' stato lanciato il programma setup.exe
|
||||
|
||||
enum { NONE=0, NEW_MENU=1,
|
||||
NEW_MENUPRG=2, NEW_INSTALLER=4, NEW_DLL=8, NEW_SYS=14,
|
||||
@ -94,7 +112,6 @@ class TInstaller_mask : public TArray_sheet
|
||||
|
||||
protected: // TSheet
|
||||
virtual bool on_key(KEY key);
|
||||
static bool quit_handler(TMask_field& f, KEY k);
|
||||
static bool tutti_handler(TMask_field& f, KEY k);
|
||||
int get_module_number(const TString& module) const;
|
||||
bool has_module(int modnumber) const;
|
||||
@ -102,16 +119,17 @@ protected: // TSheet
|
||||
|
||||
void create_dirs(const char* path) const;
|
||||
bool copy_tree(const char* src_study, const char* dst_study) const;
|
||||
int test_type() const;
|
||||
int test_station_type() const;
|
||||
|
||||
protected:
|
||||
static bool path_handler(TMask_field& fld, KEY key);
|
||||
static bool web_handler(TMask_field& fld, KEY key);
|
||||
static bool sheet_notify(TSheet_field& s, int r, KEY k);
|
||||
static bool install_handler(TMask_field& fld, KEY key);
|
||||
static bool update_handler(TMask_field& f, KEY k);
|
||||
|
||||
bool add_module(TConfig& ini, const TString& module, bool patch, int pos=-1);
|
||||
bool add_header(TConfig& ini, const TString& module, bool patch);
|
||||
bool add_header(TConfig& ini, const TString& module);
|
||||
int precheck_modules(bool only_newer=true);
|
||||
void update_version();
|
||||
|
||||
@ -127,13 +145,12 @@ protected:
|
||||
bool do_process(TToken_string& commands) const;
|
||||
bool pre_process(TInstall_ini& ini, const char* module) const;
|
||||
bool post_process(TInstall_ini& ini, const char* module) const;
|
||||
bool get_internet_path(TFilename& ininame) const;
|
||||
bool get_patches_path(TFilename& path) const;
|
||||
void parse_internet_path(TString& http_server, TFilename& http_path) const;
|
||||
|
||||
public:
|
||||
bool installed() const { return _installed;}
|
||||
bool sys_installed() const { return _sys_installed;}
|
||||
bool modules_pending() const { return _modules_pending && sys_installed();}
|
||||
bool setup_run() const { return _setup_run; }
|
||||
int station_type() const {return _station_type;}
|
||||
bool autoload();
|
||||
bool install(const TString& module, int patch);
|
||||
@ -141,7 +158,7 @@ public:
|
||||
void backup() const;
|
||||
|
||||
bool run_conversion() const
|
||||
{ return installed() && !sys_installed() && (_reboot_program & NEW_TRR) != 0; }
|
||||
{ return installed() && (_reboot_program & NEW_TRR) != 0; }
|
||||
|
||||
TInstaller_mask();
|
||||
virtual ~TInstaller_mask();
|
||||
@ -182,8 +199,8 @@ bool TInstaller_mask::add_module(TConfig& ini, const TString& module, bool patch
|
||||
return true;
|
||||
}
|
||||
|
||||
// Copia nello sheet i dati di un modulo prendendoli da un .ini
|
||||
bool TInstaller_mask::add_header(TConfig& ini, const TString& module, bool patch)
|
||||
// Copia nello sheet l'intestazione di un modulo prendendola da un .ini
|
||||
bool TInstaller_mask::add_header(TConfig& ini, const TString& module)
|
||||
{
|
||||
ini.write_protect();
|
||||
bool ok = ini.set_paragraph(module);
|
||||
@ -198,21 +215,6 @@ bool TInstaller_mask::add_header(TConfig& ini, const TString& module, bool patch
|
||||
return ok;
|
||||
}
|
||||
|
||||
static int compare_modules(const TObject** o1, const TObject** o2)
|
||||
{
|
||||
TToken_string& ts1 = *(TToken_string*)(*o1);
|
||||
TToken_string& ts2 = *(TToken_string*)(*o2);
|
||||
|
||||
int res = 0;
|
||||
for (int i = 2; i < 5 && res == 0; i++)
|
||||
{
|
||||
TString16 s1 = ts1.get(i);
|
||||
const char* s2 = ts2.get(i);
|
||||
res = s1.compare(s2);
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
bool TInstaller_mask::has_module(int modnumber) const
|
||||
{
|
||||
//se sei un server hai tutti i moduli da installare
|
||||
@ -224,7 +226,7 @@ bool TInstaller_mask::has_module(int modnumber) const
|
||||
}
|
||||
|
||||
//che tipo di installazione e'?
|
||||
int TInstaller_mask::test_type() const
|
||||
int TInstaller_mask::test_station_type() const
|
||||
{
|
||||
TConfig ini(CONFIG_INSTALL, "Main");
|
||||
int type = ini.get_int("Type");
|
||||
@ -255,7 +257,7 @@ int TInstaller_mask::precheck_modules(bool only_newer)
|
||||
int patchlevel,modnumber,currpatch;
|
||||
|
||||
bool check_enabled = true;
|
||||
_modules_pending = false;
|
||||
_setup_run = false; //inizializzazione del flag di controllo di lancio di setup.exe
|
||||
|
||||
TString_array& array = rows_array();
|
||||
FOR_EACH_ARRAY_ROW(array, r, row)
|
||||
@ -270,18 +272,14 @@ int TInstaller_mask::precheck_modules(bool only_newer)
|
||||
if (modnumber >= 0 && has_module(modnumber) &&
|
||||
!release.blank() &&
|
||||
((release > currrelease) ||
|
||||
(release == currrelease && (only_newer ? patchlevel>currpatch: patchlevel>=currpatch) ))
|
||||
(release == currrelease && (only_newer ? patchlevel > currpatch : patchlevel >= currpatch) ))
|
||||
)
|
||||
{
|
||||
// checca il modulo o la patch se ho installata la stessa versione
|
||||
const bool chk = rigar.get_char(C_ISPATCH) != 'X' || release == currrelease;
|
||||
if (check_enabled)
|
||||
check(r, chk);
|
||||
else
|
||||
{
|
||||
if (chk)
|
||||
_modules_pending = true;
|
||||
}
|
||||
|
||||
if (chk && only_newer && cod_module == "sy") //se viene checkato il modulo sy (sistema) deve togliere..
|
||||
{ //..la possibilita' di installare altri moduli..
|
||||
for (int i = 0; i < array.items(); i++)
|
||||
@ -289,9 +287,9 @@ int TInstaller_mask::precheck_modules(bool only_newer)
|
||||
disable(DLG_USER);
|
||||
check_enabled = false; //..ed uscire
|
||||
}
|
||||
}
|
||||
}
|
||||
force_update(); // Indispensabile per vedere le righe aggiornate
|
||||
} //if(modnumber>=0...
|
||||
} //FOR_EACH_ARRAY_ROW...
|
||||
force_update(); // Indispensabile per vedere le righe aggiornate sullo sheet
|
||||
return items();
|
||||
}
|
||||
|
||||
@ -345,21 +343,23 @@ bool TInstaller_mask::autoload()
|
||||
TString http_server;
|
||||
TFilename http_path;
|
||||
|
||||
TFilename path ;
|
||||
TFilename path;
|
||||
TFilename ininame;
|
||||
|
||||
const bool internet = get_internet_path(path);
|
||||
|
||||
//controla se si e' scelto un path di installazione internet o da disco
|
||||
const bool internet = get_patches_path(path);
|
||||
//se e' un aggiornamento via internet...
|
||||
if (internet)
|
||||
{
|
||||
parse_internet_path(http_server,http_path);
|
||||
parse_internet_path(http_server, http_path); //controlla il path internet scritto nel campo sulla maschera
|
||||
|
||||
make_dir(path);
|
||||
make_dir(path); //crea la directory temporanaea di installazione dove depositare e scompattare gli zip
|
||||
|
||||
ininame = path;
|
||||
ininame.add(TInstall_ini::default_name());
|
||||
|
||||
if (ininame.exist() && yesno_box(TR("Si desidera svuotare la cache dei files scaricati dal sito?")))
|
||||
//se si ritrova dei vecchi .ini nella directory temporanea->pulisce la directory temporanea x evitare casini
|
||||
if (ininame.exist()) //&& yesno_box(TR("Si desidera svuotare la cache dei files scaricati dal sito?"))) domanda del cazzo!
|
||||
{
|
||||
TString_array list;
|
||||
TFilename name = path; name.add("*.*");
|
||||
@ -370,16 +370,14 @@ bool TInstaller_mask::autoload()
|
||||
}
|
||||
if (!ininame.exist())
|
||||
{
|
||||
bool httpresult = http_isredirected_server(http_server, http_path);
|
||||
|
||||
TFilename remote_ini = http_path;
|
||||
remote_ini << TInstall_ini::default_name();
|
||||
{
|
||||
TIndwin contacting(60,TR("Connessione al server HTTP..."),false,false);
|
||||
httpresult=http_get(http_server, remote_ini, ininame);
|
||||
TIndwin contacting(60,TR("Connessione al server HTTP..."), false, false);
|
||||
http_get(http_server, remote_ini, ininame);
|
||||
}
|
||||
}
|
||||
}
|
||||
} //if(internet...
|
||||
|
||||
if (path.exist())
|
||||
{
|
||||
@ -411,7 +409,7 @@ bool TInstaller_mask::autoload()
|
||||
if (module[0] == '_' || module.len() == 2)
|
||||
{
|
||||
if (module[0] == '_')
|
||||
add_header(ini, module, false);
|
||||
add_header(ini, module);
|
||||
else
|
||||
{
|
||||
TFilename mod_ini = ininame.path();
|
||||
@ -427,8 +425,8 @@ bool TInstaller_mask::autoload()
|
||||
else
|
||||
add_module(ini, module, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
} //if(module[0]...
|
||||
} //FOR_EACH_ARRAY_ROW(...
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -608,9 +606,6 @@ bool TInstaller_mask::can_install(const char* module, TInstall_ini& ini)
|
||||
#ifndef _DEMO_
|
||||
if (year > dongle().year_assist())
|
||||
{
|
||||
/* Scommentare solo se ci si sente soli e si desidera ricevere telefonate in piu'
|
||||
warning_box(FR("Per installare la versione %s del modulo '%s'\noccorre il contratto di assistenza per l'anno %s."),
|
||||
(const char*)version, module, split_ass(year));*/
|
||||
if (!update_assistance_year())
|
||||
return false;
|
||||
}
|
||||
@ -715,8 +710,8 @@ bool TInstaller_mask::move_file(const TFilename& src, const TFilename& dst) cons
|
||||
const bool is_zip = is_zip_file(src);
|
||||
const long filesize = fsize(src) * (is_zip ? 4 : 1);
|
||||
|
||||
if (xvt_fsys_test_disk_free_space(dest, filesize) == 0)
|
||||
return error_box(TR("Lo spazio sull'unita' di destinazione e' insufficiente!"));
|
||||
if (xvt_fsys_test_disk_free_space(dest.path(), filesize) == 0)
|
||||
return error_box(TR("Lo spazio disponibile e' insufficiente!"));
|
||||
|
||||
const bool write_ok = ::fcopy(src, dest);
|
||||
if (write_ok && is_zip)
|
||||
@ -875,7 +870,7 @@ KEY TInstaller_mask::askdisk(TString & path, TFilename & cmdline, int d, int dis
|
||||
|
||||
bool TInstaller_mask::install(const TString& module, int patchlevel)
|
||||
{
|
||||
bool cancelled=false;
|
||||
bool cancelled = false;
|
||||
bool ok = false;
|
||||
TString msg; // stringa per i messaggi
|
||||
TString16 lastrelease; // release che sto installando
|
||||
@ -885,11 +880,11 @@ bool TInstaller_mask::install(const TString& module, int patchlevel)
|
||||
TString http_server;
|
||||
TFilename http_path;
|
||||
|
||||
const bool internet = get_internet_path(path);
|
||||
const bool internet = get_patches_path(path);
|
||||
if (internet)
|
||||
parse_internet_path(http_server,http_path );
|
||||
|
||||
const bool is_a_patch=(patchlevel > 0);
|
||||
const bool is_a_patch = (patchlevel > 0);
|
||||
TFilename ininame = path;
|
||||
ininame.add(module);
|
||||
|
||||
@ -1158,6 +1153,7 @@ bool TInstaller_mask::install(const TString& module, int patchlevel)
|
||||
{
|
||||
TInstall_ini ini;
|
||||
ini.set("DiskPath", get(F_PATH));
|
||||
ini.set("WebPath", get(F_WEB));
|
||||
ini.set("Data", TDate(TODAY), module);
|
||||
ini.update_prices(ininame);
|
||||
}
|
||||
@ -1178,34 +1174,46 @@ bool TInstaller_mask::install(const TString& module, int patchlevel)
|
||||
}
|
||||
|
||||
|
||||
bool TInstaller_mask::get_internet_path(TFilename &ininame) const
|
||||
bool TInstaller_mask::get_patches_path(TFilename& path) const
|
||||
{
|
||||
ininame = get(F_PATH);
|
||||
if (is_internet_path(ininame))
|
||||
const TEdit_field& www = efield(F_WEB);
|
||||
path = get(F_WEB);
|
||||
if (www.active() && path.full() && is_internet_path(path))
|
||||
{
|
||||
ininame.tempdir();
|
||||
ininame.add("www");
|
||||
path.tempdir();
|
||||
path.add("www");
|
||||
return true;
|
||||
}
|
||||
else
|
||||
path = get(F_PATH);
|
||||
return false;
|
||||
}
|
||||
|
||||
void TInstaller_mask::parse_internet_path(TString & http_server, TFilename &http_path) const
|
||||
{
|
||||
http_server = get(F_PATH);
|
||||
http_server = get(F_WEB);
|
||||
if (http_server.blank())
|
||||
{
|
||||
http_server = http_default_path();
|
||||
((TMask*)this)->set(F_WEB, http_server);
|
||||
}
|
||||
|
||||
if (http_server.compare("http://", 7, true) == 0)
|
||||
http_server.ltrim(7);
|
||||
|
||||
const int slash = http_server.find('/');
|
||||
const int slash = http_server.find('/');
|
||||
if (slash > 0)
|
||||
{
|
||||
http_path = http_server.mid(slash);
|
||||
if (http_path.right(1) != "/")
|
||||
http_path << '/';
|
||||
http_server.cut(slash);
|
||||
}
|
||||
else
|
||||
http_path = http_default_path;
|
||||
|
||||
//aggiunge lo slash finale se l'utonto l'ha omesso
|
||||
if (!http_path.ends_with("/"))
|
||||
http_path << '/';
|
||||
|
||||
//e' un server redirezionato?
|
||||
http_isredirected_server(http_server, http_path);
|
||||
}
|
||||
|
||||
bool TInstaller_mask::install_patches(const TString& module, const TString& lastrelease, int lastpatch, bool only_newer)
|
||||
@ -1213,7 +1221,7 @@ bool TInstaller_mask::install_patches(const TString& module, const TString& last
|
||||
bool ok = true;
|
||||
TString_array modules;
|
||||
TFilename ininame;
|
||||
get_internet_path(ininame);
|
||||
get_patches_path(ininame);
|
||||
|
||||
ininame.add(module);
|
||||
ininame << "????a.ini";
|
||||
@ -1269,11 +1277,30 @@ bool TInstaller_mask::path_handler(TMask_field& fld, KEY key)
|
||||
return ok;
|
||||
}
|
||||
|
||||
bool TInstaller_mask::web_handler(TMask_field& fld, KEY key)
|
||||
{
|
||||
bool ok = true;
|
||||
if (key == K_TAB && fld.focusdirty())
|
||||
{
|
||||
TFilename path = fld.get();
|
||||
if (path.not_empty())
|
||||
{
|
||||
if (!path.ends_with("/"))
|
||||
{
|
||||
path << '/';
|
||||
fld.set(path);
|
||||
}
|
||||
ok = ::is_internet_path(path);
|
||||
if (!ok)
|
||||
ok = fld.error_box(TR("Specificare un indirizzo valido"));
|
||||
}
|
||||
}
|
||||
return ok;
|
||||
}
|
||||
|
||||
void TInstaller_mask::install_selection()
|
||||
{
|
||||
TString_array& arr = rows_array();
|
||||
_sys_installed = false;
|
||||
|
||||
int nModules = 0;
|
||||
{
|
||||
@ -1341,7 +1368,8 @@ void TInstaller_mask::install_selection()
|
||||
TString256 msg;
|
||||
msg.format(FR("Si desidera ritornare alla patch %s.%d del modulo '%s' ?\nAttenzione: non e' garantito il corretto\nfunzionamento di tutti i programmi!"), (const char*)newver, newpatch, (const char*)modulo);
|
||||
ok = noyes_box(msg);
|
||||
} }
|
||||
}
|
||||
} //if(ok&&is_patch...
|
||||
|
||||
if (ok)
|
||||
{
|
||||
@ -1358,48 +1386,98 @@ void TInstaller_mask::install_selection()
|
||||
is_patch = false; // Quando la versione installata precede la patch base devo reinstallare il modulo!
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
TFilename path;
|
||||
const bool internet = get_patches_path(path);
|
||||
|
||||
//richiesto aggiornamento da disco del modulo SY da manutenzione/installazione moduli!
|
||||
if (modulo == "sy")
|
||||
{
|
||||
if (!internet)
|
||||
{
|
||||
bool file_copied = false;
|
||||
//trova il path della directory setup che e' nell'area con gli zip del cd
|
||||
TFilename disk_path = path;
|
||||
disk_path.add("setup/");
|
||||
TString_array ar;
|
||||
const int items = list_files(disk_path, ar);
|
||||
if (items > 0)
|
||||
{
|
||||
//copia la dir setup dal disco sovrascrivendo eventuali files gia' presenti
|
||||
make_dir("setup");
|
||||
TFilename local_file, remote_file;
|
||||
FOR_EACH_ARRAY_ROW(ar, r, row)
|
||||
{
|
||||
local_file = row->mid(path.len() + 1);
|
||||
remote_file = *row;
|
||||
file_copied = fcopy(remote_file, local_file); //occhio alle maiuscole!!!!
|
||||
}
|
||||
}
|
||||
|
||||
//lancia setup in modalita' aggiornamento da disco
|
||||
TExternal_app app("setup\\setup.exe -ud");
|
||||
_setup_run = app.run(true) != 0;
|
||||
}
|
||||
//richiesto aggiornamento via web del modulo SY da manutenzione/installazione moduli!
|
||||
else
|
||||
{
|
||||
bool file_copied = false;
|
||||
//trova l'indirizzo web completo
|
||||
TString http_server;
|
||||
TFilename http_path;
|
||||
parse_internet_path(http_server, http_path);
|
||||
//copia la dir setup dalla remote dir sovrascrivendo eventuali files gia' presenti
|
||||
http_path.add("setup/");
|
||||
TString_array ar;
|
||||
http_dir(http_server, http_path, ar);
|
||||
if (ar.items() > 0)
|
||||
{
|
||||
make_dir("setup");
|
||||
TFilename local_file, remote_file;
|
||||
FOR_EACH_ARRAY_ROW(ar, r, row)
|
||||
{
|
||||
local_file = "setup";
|
||||
local_file.add(*row);
|
||||
remote_file = http_path;
|
||||
remote_file.add(*row);
|
||||
file_copied = http_get(http_server, remote_file, local_file); //occhio alle maiuscole!!!!
|
||||
}
|
||||
//lancia setup in modalita' aggiornamento web
|
||||
TExternal_app app("setup\\setup.exe -uw");
|
||||
_setup_run = app.run(true) != 0;
|
||||
}
|
||||
}
|
||||
if (_setup_run) //se riesce a lanciare setup.exe...
|
||||
{
|
||||
//si suicida...Banzai!
|
||||
uncheck(r);
|
||||
send_key(K_SPACE, DLG_QUIT);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
//installa solo le patch del modulo...
|
||||
if (is_patch)
|
||||
{
|
||||
ok = install_patches(modulo, oldver, oldpatch, false) ; // installa l'ultima patch
|
||||
if (!ok)
|
||||
message_box(TR("Impossibile installare le patch del modulo '%s'"),(const char *)modulo);
|
||||
}
|
||||
else
|
||||
else //..installa anche il pacco del modulo
|
||||
{
|
||||
ok = install(modulo, 0); // installa il modulo
|
||||
}
|
||||
if (ok)
|
||||
{
|
||||
_installed = true; // Setta il flag di almeno un modulo installato
|
||||
if (modulo == "sy") //se ha installato il modulo 'sy' esce
|
||||
{
|
||||
_sys_installed = true;
|
||||
enable_row(r); //deve abilitare la riga di system senno' non la puo' uncheckare dopo
|
||||
uncheck(-1); //uncheck di tutti i moduli
|
||||
break;
|
||||
}
|
||||
uncheck(r); //finalmente unchecka i moduli installati
|
||||
}
|
||||
}
|
||||
} //if(ok)...
|
||||
else
|
||||
uncheck(r); // se non ci sono patch o moduli -> uncheck
|
||||
}
|
||||
force_update(); //serve per togliere il check al modulo 'sy' quando viene installato
|
||||
if (installed())
|
||||
{
|
||||
if (_sys_installed)
|
||||
{
|
||||
if (_modules_pending)
|
||||
warning_box(TR("Modulo SY installato: gli altri moduli verranno installati successivamente"));
|
||||
else
|
||||
message_box(TR("Modulo SY installato: il programma si riavviera' automaticamente"));
|
||||
} //FOR_EACH_ARRAY_ROW(arr...
|
||||
|
||||
send_key(K_SPACE, DLG_QUIT);
|
||||
}
|
||||
else
|
||||
message_box(TR("Installazione conclusa"));
|
||||
}
|
||||
force_update(); //serve per togliere il check al modulo 'sy' quando viene installato
|
||||
}
|
||||
|
||||
bool TInstaller_mask::install_handler(TMask_field& fld, KEY key)
|
||||
@ -1421,22 +1499,6 @@ bool TInstaller_mask::install_handler(TMask_field& fld, KEY key)
|
||||
}
|
||||
|
||||
|
||||
bool TInstaller_mask::quit_handler(TMask_field& f, KEY k)
|
||||
{
|
||||
if (k == K_SPACE)
|
||||
{
|
||||
TInstaller_mask & m=(TInstaller_mask &) f.mask();
|
||||
const bool check_on = _curr_mask->check_enabled();
|
||||
_curr_mask->enable_check(true);
|
||||
const bool some = _curr_mask->one_checked();
|
||||
_curr_mask->enable_check(check_on);
|
||||
if (some)
|
||||
return noyes_box(TR("Alcuni moduli sono selezionati per l'installazione.\nConfermare l'uscita"));
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
bool TInstaller_mask::tutti_handler(TMask_field& f, KEY k)
|
||||
{
|
||||
if (k == K_SPACE)
|
||||
@ -1468,33 +1530,59 @@ bool TInstaller_mask::on_key(KEY key)
|
||||
TInstaller_mask::TInstaller_mask()
|
||||
: TArray_sheet(0, 0, 0, 0, TR("Installazione"),
|
||||
HR("@1|Modulo@32|Cod.@3|Versione da\ninstallare@11|Liv.\nPatch@6|Data\nRilascio@10|Versione\nInstallata@10|Liv.\nPatch@6|Data\nInstallazione@13|Aggiornamento|Patch Base"),
|
||||
0x18, 3)
|
||||
0x18, 4)
|
||||
{
|
||||
_station_type = test_type();
|
||||
_station_type = test_station_type();
|
||||
_curr_mask = this;
|
||||
_installed = false;
|
||||
_sys_installed = false;
|
||||
_reboot_program= NONE;
|
||||
|
||||
add_string(F_PATH, 0, PR("Installa da "), 1, 1, 80, "", 60);
|
||||
add_string(F_CURPATH, 0, PR("Installa in "), 1, 2, 80, "D", 60);
|
||||
//in base al tipo di installazione che rileva decide se puo' effettuare aggiornamenti via web (un client..
|
||||
//..non puo' fare aggiornamenti da web!!!)
|
||||
TRadio_field& rf = add_radio(F_TYPE, 0, "", 1, 0, 21, "0|1", "Installa da disco|Installa da internet");
|
||||
*rf.message(0, true) = "DISABLE,207|ENABLE,201";
|
||||
*rf.message(1, true) = "DISABLE,201|ENABLE,207";
|
||||
add_string(F_PATH, 0, "", 22, 1, 256, "", 58);
|
||||
add_string(F_WEB, 0, "", 22, 2, 256, "", 58);
|
||||
set(F_TYPE, "0", 0x1);
|
||||
|
||||
//un client non puo' scegliere a caso da dove aggiornarsi!Solo dal suo server!
|
||||
if (_station_type == 3)
|
||||
rf.disable();
|
||||
|
||||
add_string(F_CURPATH, 0, PR("Installa in "), 1, 3, 80, "D", 58);
|
||||
|
||||
add_button(F_UPDATE, BR("Rileggi", 9), '\0');
|
||||
add_button(F_INSTALL, BR("Installa", 9), '\0'); // NON mettere 'I'
|
||||
|
||||
set_handler(F_PATH, path_handler);
|
||||
set_handler(F_WEB, web_handler);
|
||||
set_handler(F_INSTALL, install_handler);
|
||||
set_handler(F_UPDATE, update_handler);
|
||||
set_handler(DLG_QUIT, quit_handler);
|
||||
set_handler(DLG_USER, tutti_handler);
|
||||
|
||||
TInstall_ini ini;
|
||||
TFilename path = ini.get("DiskPath");
|
||||
set(F_PATH, path);
|
||||
TFilename webpath = ini.get("WebPath");
|
||||
|
||||
const bool floppy = xvt_fsys_is_removable_drive(path) != 0;
|
||||
if (path.not_empty() && !floppy && !is_internet_path(path))
|
||||
set(F_PATH, path);
|
||||
set(F_WEB, webpath);
|
||||
//..fine costruzione maschera di installazione
|
||||
|
||||
//decide quale e' il percorso di installazione
|
||||
//ha un cd o un disco di rete -> si aggiorna da questo...
|
||||
if (path.exist())
|
||||
autoload();
|
||||
else //senno' cerca su internet se trova un path internet completo e la connessione funzionante
|
||||
{
|
||||
if (_station_type != 3 && webpath.full())
|
||||
{
|
||||
set(F_TYPE, "1", 0x1);
|
||||
if (xvt_net_get_status() & 0x2) //la connessione web funziona?...
|
||||
//if (yesno_box(TR("E' possibile l'aggiornamento via internet. Si desidera connettersi ora?")))
|
||||
autoload(); //...quindi scarica l'elenco dei moduli da aggiornare!
|
||||
}
|
||||
}
|
||||
|
||||
DIRECTORY dir;
|
||||
xvt_fsys_get_dir(&dir);
|
||||
@ -1505,26 +1593,6 @@ TInstaller_mask::TInstaller_mask()
|
||||
TInstaller_mask::~TInstaller_mask()
|
||||
{
|
||||
_curr_mask = NULL;
|
||||
|
||||
if (_reboot_program != NONE)
|
||||
{
|
||||
TString msg;
|
||||
msg << TR("Sono stati aggiornati i seguenti elementi:") < '\n';
|
||||
|
||||
if (_reboot_program & NEW_MENU)
|
||||
msg << TR("voci di menu;");
|
||||
if (_reboot_program & NEW_MENUPRG)
|
||||
msg << TR("navigatore dei menu;");
|
||||
if (_reboot_program & NEW_INSTALLER)
|
||||
msg << TR("installatore;");
|
||||
if (_reboot_program & NEW_DLL)
|
||||
msg << TR("librerie di base;");
|
||||
if (_reboot_program & NEW_TRR)
|
||||
msg << TR("tracciati record;");
|
||||
|
||||
msg.rtrim(1);
|
||||
warning_box(msg);
|
||||
}
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
@ -1569,7 +1637,6 @@ bool TInstaller::create()
|
||||
if (_m->station_type() == 3)
|
||||
{
|
||||
_m->disable_check();
|
||||
_m->disable(F_PATH);
|
||||
_m->disable(F_UPDATE);
|
||||
_m->disable(DLG_USER);
|
||||
}
|
||||
@ -1604,16 +1671,15 @@ void TInstaller::main_loop()
|
||||
convert_archives();
|
||||
}
|
||||
|
||||
const bool pending = _m->modules_pending();
|
||||
//controlla se ha lanciato setup.exe prima di chiudersi; se non lo ha fatto -> e' a fine installazione..
|
||||
//..normale (moduli non SY) e quindi lancia ba0.exe
|
||||
const bool setup_launched = _m->setup_run();
|
||||
delete _m; _m = NULL;
|
||||
//le graffe servono per salvare il file campo.ini!! NON eliminarle
|
||||
if (!setup_launched)
|
||||
{
|
||||
TConfig campo(CONFIG_INSTALL, "ba0close");
|
||||
campo.set("ModulesPending", pending ? "1" : "0");
|
||||
TExternal_app ba0("ba0.exe");
|
||||
ba0.run(true, true, false); // run asynchronous and not iconized!
|
||||
}
|
||||
TExternal_app ba0close("ba0close.exe");
|
||||
|
||||
ba0close.run(true, true, false); // run asynchronous and not iconized!
|
||||
}
|
||||
|
||||
int ba1700(int argc, char* argv[])
|
||||
|
@ -3,3 +3,5 @@
|
||||
#define F_INSTALL 203
|
||||
#define F_SELECT 204
|
||||
#define F_UPDATE 205
|
||||
#define F_TYPE 206
|
||||
#define F_WEB 207
|
||||
|
Loading…
x
Reference in New Issue
Block a user