Patch level :4.0 800
Files correlati : Ricompilazione Demo : [ ] Commento : 1) riportata la procedura di backup automatico in fase di conversione 2) aggiunta la trattazione del "Type" nel campo.ini al posto degli stupidi TestDatabase e TestPrograms (che comunque vengono interpretati) git-svn-id: svn://10.65.10.50/trunk@15670 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
		
							parent
							
								
									ef24e5baa8
								
							
						
					
					
						commit
						d5a25be4b0
					
				@ -1196,14 +1196,18 @@ bool TMenu_application::test_programs()
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
  TToken_string dangerous;
 | 
					  TToken_string dangerous;
 | 
				
			||||||
  int update_needed = 0;
 | 
					  int update_needed = 0;
 | 
				
			||||||
  bool test = false;
 | 
					  bool is_client = false;
 | 
				
			||||||
  //parentesi necessaria per richiudere subito il .ini!
 | 
					  //parentesi necessaria per richiudere subito il .ini!
 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    TConfig prawin(CONFIG_INSTALL, "Main");
 | 
					    TConfig prawin(CONFIG_INSTALL, "Main");
 | 
				
			||||||
    test = prawin.get_bool("TestPrograms");
 | 
					    const int type = prawin.get_int("Type");
 | 
				
			||||||
 | 
					    if (type == 3)
 | 
				
			||||||
 | 
					      is_client = true;
 | 
				
			||||||
 | 
					    else
 | 
				
			||||||
 | 
					      is_client = prawin.get_bool("TestPrograms");
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (test)
 | 
					  if (is_client)
 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    TConfig install("install.ini", "Main");
 | 
					    TConfig install("install.ini", "Main");
 | 
				
			||||||
    TFilename remote_name = install.get("DiskPath");
 | 
					    TFilename remote_name = install.get("DiskPath");
 | 
				
			||||||
@ -1531,7 +1535,7 @@ HIDDEN bool study_handler(TMask_field& f, KEY k)
 | 
				
			|||||||
    TFilename path(f.get());
 | 
					    TFilename path(f.get());
 | 
				
			||||||
    path.add("com");
 | 
					    path.add("com");
 | 
				
			||||||
    path.add("dir.gen");
 | 
					    path.add("dir.gen");
 | 
				
			||||||
    if (!path.exist())
 | 
					    if (!path.exist() || path.find(' ') >= 0)
 | 
				
			||||||
      ok = f.error_box("%s %s", (const char*)f.get(), TR("non e' uno studio valido!"));
 | 
					      ok = f.error_box("%s %s", (const char*)f.get(), TR("non e' uno studio valido!"));
 | 
				
			||||||
  } else
 | 
					  } else
 | 
				
			||||||
  if (k == K_F9)
 | 
					  if (k == K_F9)
 | 
				
			||||||
@ -1554,9 +1558,12 @@ HIDDEN bool study_handler(TMask_field& f, KEY k)
 | 
				
			|||||||
    { 
 | 
					    { 
 | 
				
			||||||
      const char* f = xvt_slist_get(dirs, e, NULL);
 | 
					      const char* f = xvt_slist_get(dirs, e, NULL);
 | 
				
			||||||
      dirgen = f;
 | 
					      dirgen = f;
 | 
				
			||||||
      dirgen.add("com/dir.gen");
 | 
					      if (dirgen.find(' ') < 0)
 | 
				
			||||||
      if (dirgen.exist())
 | 
					      {
 | 
				
			||||||
        sht.add(f);
 | 
					        dirgen.add("com/dir.gen");
 | 
				
			||||||
 | 
					        if (dirgen.exist())
 | 
				
			||||||
 | 
					          sht.add(f);
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    xvt_slist_destroy(dirs);
 | 
					    xvt_slist_destroy(dirs);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -321,8 +321,12 @@ bool TManutenzione_app::create() // initvar e arrmask
 | 
				
			|||||||
  _superprassi = user() == ::dongle().administrator();
 | 
					  _superprassi = user() == ::dongle().administrator();
 | 
				
			||||||
  if (_superprassi)
 | 
					  if (_superprassi)
 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    TConfig ini(CONFIG_INSTALL, "Main");
 | 
					    TConfig campo_ini(CONFIG_INSTALL, "Main");
 | 
				
			||||||
    _superprassi = ini.get_bool("TestDatabase");
 | 
					    const int type = campo_ini.get_int("Type");
 | 
				
			||||||
 | 
					    if (type == 1 || type == 2)
 | 
				
			||||||
 | 
					      _superprassi = true;
 | 
				
			||||||
 | 
					    else
 | 
				
			||||||
 | 
					      _superprassi = campo_ini.get_bool("TestDatabase");
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
  if (argc() > 2 && sw == "-C")
 | 
					  if (argc() > 2 && sw == "-C")
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										108
									
								
								ba/ba1700.cpp
									
									
									
									
									
								
							
							
						
						
									
										108
									
								
								ba/ba1700.cpp
									
									
									
									
									
								
							@ -5,6 +5,7 @@
 | 
				
			|||||||
#include <execp.h>
 | 
					#include <execp.h>
 | 
				
			||||||
#include <isamrpc.h>
 | 
					#include <isamrpc.h>
 | 
				
			||||||
#include <modaut.h>
 | 
					#include <modaut.h>
 | 
				
			||||||
 | 
					#include <prefix.h>
 | 
				
			||||||
#include <progind.h>
 | 
					#include <progind.h>
 | 
				
			||||||
#include <sheet.h>
 | 
					#include <sheet.h>
 | 
				
			||||||
#include <utility.h>
 | 
					#include <utility.h>
 | 
				
			||||||
@ -99,6 +100,7 @@ protected: // TSheet
 | 
				
			|||||||
  bool is_zip_file(const TFilename& n) const;
 | 
					  bool is_zip_file(const TFilename& n) const;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  void create_dirs(const char* path) const;
 | 
					  void create_dirs(const char* path) const;
 | 
				
			||||||
 | 
					  bool copy_tree(const char* src_study, const char* dst_study) const;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
protected:
 | 
					protected:
 | 
				
			||||||
  static bool path_handler(TMask_field& fld, KEY key);
 | 
					  static bool path_handler(TMask_field& fld, KEY key);
 | 
				
			||||||
@ -132,6 +134,8 @@ public:
 | 
				
			|||||||
	bool modules_pending() const { return _modules_pending && sys_installed();}
 | 
						bool modules_pending() const { return _modules_pending && sys_installed();}
 | 
				
			||||||
  bool autoload();
 | 
					  bool autoload();
 | 
				
			||||||
  bool install(const TString& module, int patch);
 | 
					  bool install(const TString& module, int patch);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  void backup() const;
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
  bool run_conversion() const 
 | 
					  bool run_conversion() const 
 | 
				
			||||||
  { return installed() && !sys_installed() && (_reboot_program & NEW_TRR) != 0; } 
 | 
					  { return installed() && !sys_installed() && (_reboot_program & NEW_TRR) != 0; } 
 | 
				
			||||||
@ -571,14 +575,15 @@ bool TInstaller_mask::can_install(const char* module, TInstall_ini& ini)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  const TString& version = ini.version(module);
 | 
					  const TString& version = ini.version(module);
 | 
				
			||||||
  const word year = version2year(version);
 | 
					  const word year = version2year(version);
 | 
				
			||||||
  if (year < 2006)
 | 
					  if (year < 2007)
 | 
				
			||||||
    return error_box(FR("Il modulo '%s' non ha una versione valida."), module);
 | 
					    return error_box(FR("Il modulo '%s' non ha una versione valida."), module);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifndef _DEMO_
 | 
					#ifndef _DEMO_
 | 
				
			||||||
  if (year > dongle().year_assist())
 | 
					  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."),
 | 
					    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));
 | 
					                (const char*)version, module, split_ass(year));*/
 | 
				
			||||||
    if (!update_assistance_year())
 | 
					    if (!update_assistance_year())
 | 
				
			||||||
      return false;
 | 
					      return false;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
@ -636,6 +641,8 @@ int TInstaller_mask::needs_reboot(const TFilename& file) const
 | 
				
			|||||||
  return underscore;
 | 
					  return underscore;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Controlla se un file puo' essere scompattato.
 | 
				
			||||||
 | 
					// Attenzione: dninst.zip e' un falso zip
 | 
				
			||||||
bool TInstaller_mask::is_zip_file(const TFilename& n) const
 | 
					bool TInstaller_mask::is_zip_file(const TFilename& n) const
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	bool yes = xvt_str_compare_ignoring_case(n.ext(), "zip") == 0 && 
 | 
						bool yes = xvt_str_compare_ignoring_case(n.ext(), "zip") == 0 && 
 | 
				
			||||||
@ -726,12 +733,92 @@ bool TInstaller_mask::move_module(const TString& module, TInstall_ini& ini, bool
 | 
				
			|||||||
  return ok;
 | 
					  return ok;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					bool TInstaller_mask::copy_tree(const char* src_study, const char* dst_study) const
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  xvt_fsys_save_dir();
 | 
				
			||||||
 | 
					  TFilename mask(src_study); mask.add("*.");
 | 
				
			||||||
 | 
					  SLIST dlist = xvt_fsys_list_files(DIR_TYPE, mask, TRUE);
 | 
				
			||||||
 | 
					  xvt_fsys_restore_dir();
 | 
				
			||||||
 | 
					  TProgind pd(xvt_slist_count(dlist), TR("Copia cartelle"), true, true);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  TString msg; // Messaggio di progresso
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  bool go_on = true;
 | 
				
			||||||
 | 
					  for (SLIST_ELT d = xvt_slist_get_first(dlist); d && go_on; d = xvt_slist_get_next(dlist, d))
 | 
				
			||||||
 | 
					  { 
 | 
				
			||||||
 | 
					    if (!pd.addstatus(1))
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      go_on = false;
 | 
				
			||||||
 | 
					      break;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    const TFilename dir = xvt_slist_get(dlist, d, NULL);
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    TString name = dir.name(); name.lower();
 | 
				
			||||||
 | 
					    if (name == "cesp")
 | 
				
			||||||
 | 
					      continue;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    msg.cut(0) << TR("Copia di ") << name;
 | 
				
			||||||
 | 
					    pd.set_text(msg);
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					    mask = dir; mask.add("*.*");
 | 
				
			||||||
 | 
					    TString_array files; list_files(mask, files);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    TProgind pi(files.items(), "Copia file", true, true);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    TFilename dst;
 | 
				
			||||||
 | 
					    FOR_EACH_ARRAY_ROW(files, i, f)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      if (!pi.addstatus(1))
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        go_on = false;
 | 
				
			||||||
 | 
					        break;
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					      TFilename src(*f);
 | 
				
			||||||
 | 
					      TString16 ext(src.ext()); ext.lower();
 | 
				
			||||||
 | 
					      if (ext != "zip" && ext != "rar" && ext != "mdb" && ext != "inf") 
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        msg.cut(0) << TR("Copia di ") << src;
 | 
				
			||||||
 | 
					        pi.set_text(msg);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        dst = dst_study;
 | 
				
			||||||
 | 
					        dst.add(name);
 | 
				
			||||||
 | 
					        dst.add(src.name());
 | 
				
			||||||
 | 
					        create_dirs(dst);
 | 
				
			||||||
 | 
					        fcopy(src, dst);
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  xvt_slist_destroy(dlist);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  return go_on;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
					void TInstaller_mask::backup() const
 | 
				
			||||||
 | 
					{ 
 | 
				
			||||||
 | 
					  TFilename src = firm2dir(-1);
 | 
				
			||||||
 | 
					  if (!isalnum(src.right(1)[0]))
 | 
				
			||||||
 | 
					    src.rtrim(1);
 | 
				
			||||||
 | 
					  TFilename dst(src); 
 | 
				
			||||||
 | 
					  dst << ' ' << TDate(TODAY).date2ansi(); // Lo spazio rende inutilizzabile lo studio
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  TToken_string msg(256, '\n');
 | 
				
			||||||
 | 
					  msg.add(TR("Si consiglia creare una copia dello studio ")); msg << src.name(); 
 | 
				
			||||||
 | 
					  msg.add(TR("nella cartella ")); msg << dst; 
 | 
				
			||||||
 | 
					  msg.add(TR("L'operazione potrebbe richiedere alcuni minuti."));
 | 
				
			||||||
 | 
					  msg.add("");
 | 
				
			||||||
 | 
					  msg.add(TR("Si desidera effetture la copia?"));
 | 
				
			||||||
 | 
					  if (yesno_box(msg))
 | 
				
			||||||
 | 
					    copy_tree(src, dst);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
KEY TInstaller_mask::askdisk(TString & path, TFilename & cmdline, int d, int dischi, const char * modulo)
 | 
					KEY TInstaller_mask::askdisk(TString & path, TFilename & cmdline, int d, int dischi, const char * modulo)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  TMask retry_mask(TR("Inserimento disco"),1,80,10);
 | 
					  TMask retry_mask(TR("Inserimento disco"),1,80,10);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  retry_mask.add_static((F_PATH==101 ? 102:101),0,
 | 
					  retry_mask.add_static((F_PATH==101 ? 102:101),0,
 | 
				
			||||||
    format(FR("Inserire il disco %d di %d del modulo'%s' nell'unità"), d, dischi, modulo)
 | 
					    format(FR("Inserire il disco %d di %d del modulo '%s' nell'unità"), d, dischi, modulo)
 | 
				
			||||||
      ,2,2);
 | 
					      ,2,2);
 | 
				
			||||||
  retry_mask.add_static(F_PATH+3,0,TR("oppure indicare un percorso diverso"),2,3);
 | 
					  retry_mask.add_static(F_PATH+3,0,TR("oppure indicare un percorso diverso"),2,3);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -1429,6 +1516,7 @@ protected:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  bool testdatabase() const; 
 | 
					  bool testdatabase() const; 
 | 
				
			||||||
  bool testprograms() const;
 | 
					  bool testprograms() const;
 | 
				
			||||||
 | 
					  int testtype() const;
 | 
				
			||||||
  void convert_archives();
 | 
					  void convert_archives();
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -1445,6 +1533,11 @@ bool TInstaller::testprograms() const
 | 
				
			|||||||
  return  c == 'X' || c == 'Y';
 | 
					  return  c == 'X' || c == 'Y';
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int TInstaller::testtype() const
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  return 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
bool TInstaller::test_assistance_year() const
 | 
					bool TInstaller::test_assistance_year() const
 | 
				
			||||||
{  
 | 
					{  
 | 
				
			||||||
  // Per il momento lascia continuare: ci pensa poi la create
 | 
					  // Per il momento lascia continuare: ci pensa poi la create
 | 
				
			||||||
@ -1482,6 +1575,7 @@ void TInstaller::convert_archives()
 | 
				
			|||||||
    conv = yesno_box(TR("Si desidera convertire gli archivi ora?"));
 | 
					    conv = yesno_box(TR("Si desidera convertire gli archivi ora?"));
 | 
				
			||||||
  if (conv)
 | 
					  if (conv)
 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
 | 
					    _m->backup();
 | 
				
			||||||
    // Lancia conversione: ba1 -0 -C -uADMIN
 | 
					    // Lancia conversione: ba1 -0 -C -uADMIN
 | 
				
			||||||
    TExternal_app conversion("ba1 -0 -C");
 | 
					    TExternal_app conversion("ba1 -0 -C");
 | 
				
			||||||
    conversion.run();
 | 
					    conversion.run();
 | 
				
			||||||
@ -1491,7 +1585,7 @@ void TInstaller::convert_archives()
 | 
				
			|||||||
void TInstaller::main_loop()
 | 
					void TInstaller::main_loop()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  _m->run();
 | 
					  _m->run();
 | 
				
			||||||
  if (_m->run_conversion() && testdatabase()) // Almeno 1 trr installato ?
 | 
					  if (_m->run_conversion() && testdatabase()) // Almeno un trr installato ?
 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    convert_archives();
 | 
					    convert_archives();
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
@ -1523,11 +1617,9 @@ bool TExtendedInstaller::create()
 | 
				
			|||||||
void TExtendedInstaller::main_loop()
 | 
					void TExtendedInstaller::main_loop()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  _m->run();
 | 
					  _m->run();
 | 
				
			||||||
  if (_m->run_conversion() && testdatabase()) // Almeno 1 modulo installato ?
 | 
					  if (_m->run_conversion() && testdatabase()) // Almeno un modulo installato ?
 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    // Lancia conversione: ba1 -0 -C -uADMIN
 | 
					    convert_archives();
 | 
				
			||||||
    TExternal_app conversion("ba1 -0 -C");
 | 
					 | 
				
			||||||
    conversion.run();
 | 
					 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
  const bool pending = _m->modules_pending();
 | 
					  const bool pending = _m->modules_pending();
 | 
				
			||||||
 | 
				
			|||||||
@ -383,7 +383,11 @@ bool TInstallmodule_app::create()
 | 
				
			|||||||
    _m = NULL;
 | 
					    _m = NULL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  TConfig praw(CONFIG_INSTALL, "Main");
 | 
					  TConfig praw(CONFIG_INSTALL, "Main");
 | 
				
			||||||
  _test_database = praw.get("TestDatabase","Main",-1,"Y")  != "N";
 | 
					  const int type = praw.get_int("Type");
 | 
				
			||||||
 | 
					  if (type == 1 || type == 2)
 | 
				
			||||||
 | 
					   _test_database = true;
 | 
				
			||||||
 | 
					  else
 | 
				
			||||||
 | 
					    _test_database = prawin.get_bool("TestDatabase");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  return TSkeleton_application::create();
 | 
					  return TSkeleton_application::create();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user