campo-sirio/ba/cgdll.cpp
alex a0a36d6b33 Patch level : XX.282
Files correlati     :
Ricompilazione Demo : [ ]
Commento            : Riportata la versione 01.05 patch 282


git-svn-id: svn://10.65.10.50/trunk@8019 c028cbd2-c16b-5b4b-a496-9718f37d4682
1999-04-06 15:34:39 +00:00

153 lines
3.5 KiB
C++
Executable File

#include <applicat.h>
#include <execp.h>
#include <config.h>
#include <utility.h>
#include "cgdll.h"
class TInstall_dll : public TSkeleton_application
{
private:
bool _copy_dll, _makeini, _del_dll;
bool CopiaDll(const char * dllname);
bool CreaExeIni(const char * exename);
protected:
virtual void main_loop() ;
virtual bool create();
bool CopiaDlls();
bool InstallaExeIni();
bool RemoveDlls();
public:
virtual ~TInstall_dll () {}
virtual const char * extra_modules() const
{return "BA";}
virtual bool check_autorization() const
{return FALSE;}
};
bool TInstall_dll ::CopiaDll(const char * dllname)
{
bool ok;
TFilename from("C:\\windows\\system"),to(".");
from.add(dllname);
to.add(dllname);
if (fexist(from))
ok = fcopy(from, to);
else
warning_box("Copia impossibile : %s non è presente in %s", dllname, from.path());
return ok;
}
// crea il .ini in \WINDOWS per i files exe copiati nella directory di EASYCAMPO
bool TInstall_dll ::CreaExeIni(const char * exename)
{
TFilename ininame("C:\\WINDOWS");
ininame.add(exename);
TFilename dllname;
ininame.ext("ini");
TConfig ini(ininame);
dllname.currdir();
dllname.add("xbs200.dll");
ini.set_paragraph("Installable ISAMs");
ini.set("FoxPro 2.0" ,dllname );
ini.set("FoxPro 2.5" ,dllname );
ini.set("dBASE III" ,dllname );
ini.set("dBASE IV" ,dllname );
ini.set("Deleted","On","dBase ISAM");
ini.set("ParadoxNetStyle","3.x","Paradox ISAM" );
return TRUE;
}
//
bool TInstall_dll ::CopiaDlls()
{
bool ok=TRUE;
ok &= CopiaDll("MSAES110.DLL" );
ok &= CopiaDll("MSAJT112.DLL");
ok &= CopiaDll("MSAJT200.DLL");
ok &= CopiaDll("VBDB300.DLL");
ok &= CopiaDll("VBRUN300.DLL");
ok &= CopiaDll("XBS200.DLL");
return ok;
}
// cancella le dll dal WINDOws
bool TInstall_dll ::RemoveDlls()
{
bool ok=TRUE;
ok &= (remove("c:\\windows\\system\\MSAES110.DLL" ) == 0);
ok &= (remove("c:\\windows\\system\\MSAJT112.DLL")== 0);
ok &= (remove("c:\\windows\\system\\MSAJT200.DLL")== 0);
ok &= (remove("c:\\windows\\system\\VBDB300.DLL")== 0);
ok &= (remove("c:\\windows\\system\\VBRUN300.DLL")== 0);
ok &= (remove("c:\\windows\\system\\XBS200.DLL")== 0);
return ok;
}
bool TInstall_dll ::InstallaExeIni()
{
bool ok;
ok = fexist("MSAES110.DLL" );
ok &= fexist("MSAJT112.DLL");
ok &= fexist("MSAJT200.DLL");
ok &= fexist("VBDB300.DLL");
ok &= fexist("VBRUN300.DLL");
ok &= fexist("XBS200.DLL");
if (!ok)
error_box("Le DLL non sono presenti nel direttorio corrente");
else
{
// copia dll (ex file PRASSI.PR inst.exe
ok &= CreaExeIni("CB0000.EXE");
ok &= CreaExeIni("TRRICE.EXE");
ok &= CreaExeIni("VCOPIA.EXE");
}
return ok;
}
bool TInstall_dll ::create()
{
_copy_dll=TRUE,
_makeini=TRUE,
_del_dll=TRUE;
int c = argc();
while (c>1) {
c--;
if (strcmp(argv(c),"-d")==0)
_del_dll=FALSE;
else if (strcmp(argv(c),"-c")==0)
_copy_dll=FALSE;
else if (strcmp(argv(c),"-i")==0)
_makeini=FALSE;
else if (strcmp(argv(c),"-h")==0)
warning_box("Parametri di lancio: \n -i non crea i .ini per i programmi di CG \n -c non copia le DLL nella directory corrente \n -d non cancella le DLL su windows\\system ");
}
return TSkeleton_application::create();
}
void TInstall_dll ::main_loop()
{
if (_copy_dll)
CopiaDlls();
if (_makeini)
InstallaExeIni();
if (_del_dll)
RemoveDlls();
}
int main(int argc,char** argv)
{
TInstall_dll app;
app.run(argc, argv, "Installazione DLL per contabilita' generale");
return TRUE;
}