a0a36d6b33
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
153 lines
3.5 KiB
C++
Executable File
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;
|
|
}
|