diff --git a/ba/ba1700.cpp b/ba/ba1700.cpp index 2f8fe472a..961247e32 100755 --- a/ba/ba1700.cpp +++ b/ba/ba1700.cpp @@ -158,6 +158,7 @@ protected: bool post_process(TInstall_ini& ini, const char* module) const; bool get_patches_path(TFilename& path) const; void parse_internet_path(TString& http_server, TFilename& http_path) const; + bool is_program_dir(const TFilename& path); public: bool installed() const { return _installed;} @@ -1624,6 +1625,39 @@ bool TInstaller_mask::on_key(KEY key) return ok; } +//metodo per controllare se la directory indicata contiene una installazione buona di campo +bool TInstaller_mask::is_program_dir(const TFilename& path) +{ + bool ok = false; + TFilename work_path = path; + + //controlla l'esistenza di alcuni files chiave di campo + work_path.add("install.ini"); + if (work_path.exist()) + { + work_path = path; + work_path.add("campo.ini"); + if (work_path.exist()) + { + work_path = path; + work_path.add("campo.aut"); + if (work_path.exist()) + { + work_path = path; + work_path.add("ba0.exe"); + if (work_path.exist()) + { + work_path = path; + work_path.add("xvaga.dll"); + if (work_path.exist()) + ok = true; //minchia che diffidente! + } + } + } + } + return ok; +} + 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"), @@ -1653,9 +1687,20 @@ TInstaller_mask::TInstaller_mask() add_string(F_WEB, 0, "", 23, 2, 256, "", 56); set(F_TYPE, "0", 0x1); + //deve conoscere i path adesso per poter testare se sono ok + TInstall_ini ini; + TFilename path = ini.get("DiskPath"); + TFilename webpath = ini.get("WebPath"); + //un client non puo' scegliere a caso da dove aggiornarsi!Solo dal suo server! if (_station_type == 3) - rf.disable(); + { + rf.disable(); + bool ko = !is_program_dir(path); + if (ko) + warning_box(TR("La cartella origine dei programmi NON è valida!\nSelezionarne una valida e premere 'Invio'.")); + enable(F_PATH, ko); + } add_string(F_CURPATH, 0, PR("Installa in "), 1, 3, 80, "D", 58); @@ -1665,9 +1710,6 @@ TInstaller_mask::TInstaller_mask() set_handler(F_UPDATE, update_handler); set_handler(DLG_USER, tutti_handler); - TInstall_ini ini; - TFilename path = ini.get("DiskPath"); - TFilename webpath = ini.get("WebPath"); //se il webpath è vuoto o di test, propone quello in oem.ini; non ammette che possa essere proposto un path.. //..di tipo test per impedire all'utonto di aggiornarsi da test prima di essere passato da release