800 lines
23 KiB
Plaintext
800 lines
23 KiB
Plaintext
|
//________________________________________________________________________________________________________________________
|
|||
|
// **** Selezione del tipo di installazione (1st level)
|
|||
|
// **** Aggiornamento,installazione standard,installazione avanzata
|
|||
|
|
|||
|
function _SelectSetupType(nRetv )
|
|||
|
|
|||
|
STRING szMsg[512];
|
|||
|
BOOL bJunk,bReinstall;
|
|||
|
begin
|
|||
|
|
|||
|
#ifdef __DEMO__
|
|||
|
bSetupStandard=TRUE;
|
|||
|
#else
|
|||
|
bJunk = !bSetupStandard;
|
|||
|
|
|||
|
//cerca il file con eventuali precedenti installazioni (Atwin.stp)
|
|||
|
if (Is( FILE_EXISTS, "C:\\Atwin.stp" )) then
|
|||
|
bSetupStandard = FALSE;
|
|||
|
bReinstall = TRUE;
|
|||
|
nRetv = AskOptions(EXCLUSIVE,"Si desidera effettuare:",
|
|||
|
"Aggiornamento di una precedente installazione",bReinstall,
|
|||
|
"Installazione &STANDARD",bSetupStandard,
|
|||
|
"Installazione &personalizzata e/o di rete",bJunk);
|
|||
|
if (nRetv != BACK && bReinstall) then
|
|||
|
_ChooseReinstall(nRetv);
|
|||
|
endif;
|
|||
|
|
|||
|
else
|
|||
|
nRetv = AskOptions(EXCLUSIVE,"Si desidera effettuare:",
|
|||
|
"Installazione &STANDARD (scelta consigliata)",bSetupStandard,
|
|||
|
"Installazione &personalizzata e/o di rete",bJunk);
|
|||
|
endif;
|
|||
|
|
|||
|
#endif
|
|||
|
end;
|
|||
|
|
|||
|
//________________________________________________________________________________________________________________________
|
|||
|
// **** Selezione del tipo di installazione (2nd level)
|
|||
|
// **** (programmi o postazione di rete)
|
|||
|
|
|||
|
function _SelectSetupMode(nRetv )
|
|||
|
|
|||
|
STRING szMsg[512];
|
|||
|
BOOL zInstallDemo,zInstallNetWrkChk;
|
|||
|
begin
|
|||
|
|
|||
|
zInstallDemo = bInstallDemo;
|
|||
|
zInstallNetWrkChk = bInstallNetWrkChk;
|
|||
|
|
|||
|
#ifdef __DEMO__
|
|||
|
bInstallDemo=TRUE;
|
|||
|
#else
|
|||
|
//caso della reinstallazione su precedente versione: tutto quanto segue e' inutile quindi esce
|
|||
|
if (nReinstall > 0) then
|
|||
|
return;
|
|||
|
endif;
|
|||
|
//caso di installazione nuova...
|
|||
|
if bInstallNetWrkChk then
|
|||
|
bInstallEnv=FALSE;
|
|||
|
endif;
|
|||
|
if bSetupStandard then
|
|||
|
bInstallEnv=TRUE;
|
|||
|
else
|
|||
|
szMsg = "Il programma puo' essere installato in ";
|
|||
|
szMsg=szMsg + "modalita' postazione singola, postazione di rete su disco locale, ";
|
|||
|
szMsg=szMsg + "postazione di rete su disco di rete. Si desidera installare:";
|
|||
|
nRetv = AskOptions(EXCLUSIVE,szMsg,
|
|||
|
"&in postazione singola (o server)",
|
|||
|
bInstallEnv,
|
|||
|
"in rete con &programmi su disco &locale",
|
|||
|
bInstallNetWrkChk
|
|||
|
);
|
|||
|
endif;
|
|||
|
if bInstallNetWrkChk then
|
|||
|
bInstallEnv=TRUE;
|
|||
|
endif;
|
|||
|
#endif
|
|||
|
|
|||
|
if (( zInstallDemo!=bInstallDemo) || (zInstallNetWrkChk!=bInstallNetWrkChk) ) then
|
|||
|
if bInstallDemo then
|
|||
|
bInstallPrg = TRUE;
|
|||
|
bInstallData=TRUE;
|
|||
|
bInstallDemoData=TRUE;
|
|||
|
else
|
|||
|
bInstallPrg = TRUE;
|
|||
|
endif;
|
|||
|
endif;
|
|||
|
end;
|
|||
|
|
|||
|
//________________________________________________________________________________________________________________________
|
|||
|
// *** Chiede la directory ove installare i programmi;
|
|||
|
|
|||
|
function _SelectProgramDestination(nRetv)
|
|||
|
|
|||
|
BOOL bReenterPath, bConfirmdatapath, bFoundInst, bRemoteExe, bRemoteData,bOk;
|
|||
|
STRING szPar, szInst;
|
|||
|
NUMBER nPar, nNextFree;
|
|||
|
|
|||
|
begin
|
|||
|
// ricontrolla la presenza di una installazione
|
|||
|
// e determina la posizione della directory "DATI"
|
|||
|
|
|||
|
//aggiornamento di una precedente installazione
|
|||
|
if (nReinstall > 0 ) then
|
|||
|
szConfigPath = szReinstallPath;
|
|||
|
bNuovaInst = FALSE;
|
|||
|
bInstallData = FALSE;
|
|||
|
endif;
|
|||
|
|
|||
|
//se non esiste una precedente installazione->nuova installazione;necessiter<65> di un path di default per l'installazione
|
|||
|
if (szConfigPath = "") then
|
|||
|
bNuovaInst = TRUE; //se non e' stato scelto un aggiornamento e' comunque una nuova installazione!
|
|||
|
bInstallData = TRUE;
|
|||
|
szConfigPath = DEFAULT_LOCALPATH;
|
|||
|
endif;
|
|||
|
|
|||
|
if (nReinstall = 0) then
|
|||
|
nRetv=AskDestPath( "", "", szConfigPath, 0 );
|
|||
|
StrRemoveLastSlash(szConfigPath);
|
|||
|
if (nRetv=BACK) then
|
|||
|
return;
|
|||
|
endif;
|
|||
|
endif;
|
|||
|
|
|||
|
bNuovaInst = ! _CheckExistingInst(szConfigPath);
|
|||
|
if (bNuovaInst && (! ExistsDir(szConfigPath))) then
|
|||
|
CreateDir(szConfigPath);
|
|||
|
endif;
|
|||
|
|
|||
|
//per una nuova installazione:aggiunge un paragrafo relativo nel Atwin.stp
|
|||
|
nNextFree = 0;
|
|||
|
nPar = 1;
|
|||
|
szPar = "1";
|
|||
|
bFoundInst = FALSE;
|
|||
|
while (GetProfString("C:\\Atwin.stp", szPar, "Program", szInst) = 0 && ! bFoundInst)
|
|||
|
if (_CheckExistingInst(szInst)) then
|
|||
|
bOk = szInst = szConfigPath;
|
|||
|
if (! bOk) then
|
|||
|
GetProfString("C:\\Atwin.stp", szPar, "CampoIni", szInst);
|
|||
|
bOk = szInst = szConfigPath ^ "\\campo.ini";
|
|||
|
endif;
|
|||
|
if (bOk) then
|
|||
|
bFoundInst = TRUE;
|
|||
|
nReinstall = nPar;
|
|||
|
bSetupStandard = FALSE; //non puo' essere una installazione standard, sta sovrascrivendo una precedente installazione
|
|||
|
endif;
|
|||
|
|
|||
|
else
|
|||
|
|
|||
|
if (nNextFree = 0) then
|
|||
|
nNextFree = nPar;
|
|||
|
endif;
|
|||
|
|
|||
|
endif;
|
|||
|
|
|||
|
nPar = nPar + 1;
|
|||
|
NumToStr(szPar, nPar);
|
|||
|
|
|||
|
endwhile;
|
|||
|
|
|||
|
if (! bFoundInst) then
|
|||
|
if (nNextFree > 0) then
|
|||
|
nPar = nNextFree;
|
|||
|
endif;
|
|||
|
NumToStr(szPar, nPar);
|
|||
|
WriteProfString("C:\\Atwin.stp", szPar, "Program", szConfigPath);
|
|||
|
nNewInstall = nPar;
|
|||
|
endif;
|
|||
|
|
|||
|
if (nReinstall > 0) then
|
|||
|
NumToStr(szPar, nReinstall);
|
|||
|
GetProfString("C:\\Atwin.stp", szPar, "CampoIni", szCampoIni);
|
|||
|
GetProfString("C:\\Atwin.stp", szPar, "Program", szAppPath);
|
|||
|
endif;
|
|||
|
|
|||
|
if ( (szCampoIni = "") || (! Is (FILE_EXISTS, szCampoIni))) then
|
|||
|
szCampoIni = szConfigPath ^ "campo.ini";
|
|||
|
endif;
|
|||
|
|
|||
|
//esiste campo.ini -> e' una reinstallazione
|
|||
|
if ( Is (FILE_EXISTS, szCampoIni ) ) then
|
|||
|
|
|||
|
GetProfString(szCampoIni, "Main", "Program",szAppRefPath );
|
|||
|
GetProfString(szCampoIni, "Main", "Study",szDataPath );
|
|||
|
|
|||
|
_IsNetworkDrive(szAppPath, bRemoteExe);
|
|||
|
_IsNetworkDrive(szDataPath, bRemoteData);
|
|||
|
|
|||
|
bInstallNetWrkChk = FALSE;
|
|||
|
bInstallEnv = ! bRemoteExe;
|
|||
|
|
|||
|
//distingue tra dati in remoto e campo wst
|
|||
|
if (bRemoteData) then
|
|||
|
bInstallNetWrkChk = !bRemoteExe;
|
|||
|
endif;
|
|||
|
|
|||
|
//non esiste campo.ini -> e' una installazione
|
|||
|
else
|
|||
|
szDataPath = szConfigPath ^ "DATI\\";
|
|||
|
|
|||
|
endif;
|
|||
|
|
|||
|
if ( nReinstall > 0 ) then
|
|||
|
NumToStr(szPar, nReinstall);
|
|||
|
else
|
|||
|
NumToStr(szPar, nNewInstall);
|
|||
|
endif;
|
|||
|
|
|||
|
//scrive su campo.stp..
|
|||
|
WriteProfString("C:\\Atwin.stp", szPar, "CampoIni", "");
|
|||
|
//..e l'application path e' lo stesso del campo.ini (ovvio,ba0.exe e' assieme a campo.ini)
|
|||
|
szAppPath = szConfigPath;
|
|||
|
|
|||
|
return;
|
|||
|
end;
|
|||
|
|
|||
|
|
|||
|
//________________________________________________________________________________________________________________________
|
|||
|
// *** Selezione dei componenti da installare (area dati, server chiave e master server)
|
|||
|
|
|||
|
function _SelectWhatToInstall(nRetv)
|
|||
|
|
|||
|
BOOL bJunk;
|
|||
|
STRING szMsg[512], szPar;
|
|||
|
NUMBER nServers;
|
|||
|
begin
|
|||
|
|
|||
|
bInstallPrg=TRUE;
|
|||
|
bInstallData = (szDataPath != '')&&(! _CheckExistingData(szDataPath));
|
|||
|
bInstallServer = FALSE;
|
|||
|
|
|||
|
if (nReinstall > 0) then
|
|||
|
bInstallData = FALSE;
|
|||
|
NumToStr(szPar, nReinstall);
|
|||
|
GetProfInt("C:\\Atwin.stp", szPar, "Servers", nServers);
|
|||
|
bInstallServer = nServers != 0;
|
|||
|
endif;
|
|||
|
|
|||
|
//installazione standard per utente basico; finisce qui
|
|||
|
if bSetupStandard then
|
|||
|
return;
|
|||
|
endif;
|
|||
|
|
|||
|
//installazione avanzata
|
|||
|
repeat
|
|||
|
|
|||
|
// Windows 95/98/ME or NT/2000/XP platforms
|
|||
|
if (bInstallNetWrkChk) then
|
|||
|
szMsg= "Setup installera' la postazione di lavoro.\nE' possibile installare anche l'area dati, il server di rete per le chiavi di protezione.";
|
|||
|
nRetv = AskOptions(NONEXCLUSIVE,szMsg,
|
|||
|
"Installa l'area dati", bInstallData ,
|
|||
|
"Installa i servizi avanzati di rete (Lerch)", bInstallServer
|
|||
|
);
|
|||
|
else
|
|||
|
szMsg= "E' possibile installare i programmi (ambiente e moduli), l'area dati, il server di rete per le chiavi di protezione. ";
|
|||
|
szMsg=szMsg + "\nSelezionare almeno una delle componenti";
|
|||
|
nRetv = AskOptions(NONEXCLUSIVE,szMsg,
|
|||
|
"Installa i programmi", bInstallPrg,
|
|||
|
"Installa l'area dati", bInstallData ,
|
|||
|
"Installa i servizi avanzati di rete (Lerch)", bInstallServer
|
|||
|
);
|
|||
|
endif;
|
|||
|
|
|||
|
until nRetv!=NEXT || bInstallData || bInstallPrg || bInstallServer;
|
|||
|
|
|||
|
//viene aggiornato il file Atwin.stp con i valori relativi all'installazione del master server e del server di chiavi
|
|||
|
if (nReinstall > 0) then
|
|||
|
NumToStr(szPar, nReinstall);
|
|||
|
else
|
|||
|
NumToStr(szPar, nNewInstall);
|
|||
|
endif;
|
|||
|
|
|||
|
nServers = 0;
|
|||
|
if (bInstallServer) then
|
|||
|
nServers = 1;
|
|||
|
endif;
|
|||
|
|
|||
|
NumToStr(szTmp, nServers);
|
|||
|
WriteProfString("C:\\Atwin.stp", szPar, "Servers", szTmp);
|
|||
|
|
|||
|
return ;
|
|||
|
end;
|
|||
|
|
|||
|
|
|||
|
//________________________________________________________________________________________________________________________
|
|||
|
// *** In caso venga selezionata una installazione di rete, richiede i parametri necessari
|
|||
|
|
|||
|
function _SelectNetConfig(nDirection )
|
|||
|
|
|||
|
STRING szText[ _MAX_LENGTH ], szModifiedPath[ _MAX_LENGTH ], szTemp[ _MAX_LENGTH ];
|
|||
|
STRING szNetAppPath[ _MAX_LENGTH ], szPar[ _MAX_LENGTH ];
|
|||
|
NUMBER nHandle;
|
|||
|
BOOL ok;
|
|||
|
begin
|
|||
|
if (!(bInstallNetWrkChk && bInstallPrg)) then
|
|||
|
return;
|
|||
|
endif;
|
|||
|
|
|||
|
if (szAppRefPath = "") then
|
|||
|
GetProfString(szCampoIni, "Main", "Program", szAppRefPath);
|
|||
|
endif;
|
|||
|
szNetAppPath=szAppRefPath;
|
|||
|
|
|||
|
szText = szText + "Inserire il percorso completo del direttorio di rete che contiene i files del programma. ";
|
|||
|
szText = szText + "Se tali files mancano, installarli secondo la modalita' 'postazione singola'. ";
|
|||
|
szText = szText + "Ogni postazione di rete verifichera' eventuali aggiornamenti di questa installazione ";
|
|||
|
szText = szText + "aggiornandosi automaticamente.";
|
|||
|
|
|||
|
if (szNetAppPath = "") then
|
|||
|
szNetAppPath = DEFAULT_NETPATH;
|
|||
|
endif;
|
|||
|
ok=FALSE;
|
|||
|
while (!ok)
|
|||
|
nDirection = AskPath( szText , szNetAppPath, szModifiedPath );
|
|||
|
if ( nDirection = NEXT ) then
|
|||
|
if ( _CheckExistingInst(szModifiedPath) ) then
|
|||
|
szNetAppPath = szModifiedPath;
|
|||
|
StrToUpper( szNetAppPath, szNetAppPath );
|
|||
|
if szDataPath = "" then
|
|||
|
StrToUpper(szDataPath ,szModifiedPath);
|
|||
|
endif;
|
|||
|
bProgrammiServer = TRUE;
|
|||
|
ok = TRUE;
|
|||
|
else
|
|||
|
_Attenzione( "Impossibile trovare i files del programma in " + szModifiedPath );
|
|||
|
endif;
|
|||
|
else
|
|||
|
ok = TRUE;
|
|||
|
endif;
|
|||
|
endwhile;
|
|||
|
|
|||
|
szAppRefPath =szNetAppPath;
|
|||
|
StrRemoveLastSlash(szAppRefPath);
|
|||
|
|
|||
|
end;
|
|||
|
|
|||
|
//________________________________________________________________________________________________________________________
|
|||
|
// *** Chiede dove sono i dati da utilizzare; se esistono gia' o vanno creati
|
|||
|
|
|||
|
function _SelectDataDestination(nRetv)
|
|||
|
|
|||
|
BOOL bConfirmdatapath;
|
|||
|
STRING szChangedPath[256]
|
|||
|
STRING sMsg[256]
|
|||
|
begin
|
|||
|
// ricontrolla la presenza di una installazione
|
|||
|
// e determina la posizione della directory "DATI"
|
|||
|
if bInstallData || bInstallPrg then
|
|||
|
if bInstallData then
|
|||
|
sMsg = "Setup installer<65> l'area dati nel seguente direttorio.";
|
|||
|
else
|
|||
|
sMsg = "Verr<72> utilizzata l'area dati che si trova nel seguente direttorio.";
|
|||
|
endif;
|
|||
|
sMsg = sMsg + "\nE' possibile cambiare il direttorio digitando il nuovo nome o scegliendo il pulsante <Sfoglia>";
|
|||
|
repeat
|
|||
|
bConfirmdatapath=TRUE;
|
|||
|
nRetv=AskPath(sMsg ,szDataPath, szChangedPath);
|
|||
|
if (nRetv=BACK) then
|
|||
|
return ;
|
|||
|
endif;
|
|||
|
szDataPath=szChangedPath;
|
|||
|
bDatiPresenti = _CheckExistingData(szDataPath);
|
|||
|
if (bDatiPresenti && bInstallData) then
|
|||
|
bConfirmdatapath=_CanOverwrite();
|
|||
|
endif;
|
|||
|
if ((! bDatiPresenti) && (! bInstallData)) then
|
|||
|
if (bSetupStandard) then
|
|||
|
bInstallData=TRUE;
|
|||
|
else
|
|||
|
MessageBox( "La cartella indicata non contiene dati. \nSe si desidera davvero utilizzare questa cartella, \nabilitare l'installazione dell'area dati" ,SEVERE);
|
|||
|
bConfirmdatapath=FALSE;
|
|||
|
endif;
|
|||
|
endif;
|
|||
|
until (bConfirmdatapath);
|
|||
|
endif;
|
|||
|
return ;
|
|||
|
end;
|
|||
|
|
|||
|
//________________________________________________________________________________________________________________________
|
|||
|
// **** Selezione del tipo di installazione dati
|
|||
|
|
|||
|
function _SelectDataType( nRetv)
|
|||
|
|
|||
|
BOOL bJunk;
|
|||
|
STRING szMsg[512];
|
|||
|
begin
|
|||
|
if ( (!bInstallData) || (nReinstall > 0) ) then
|
|||
|
return;
|
|||
|
endif;
|
|||
|
#ifdef __DEMO__
|
|||
|
bInstallDemoData=TRUE;
|
|||
|
#else
|
|||
|
szMsg= "Verranno installati nuovi archivi nell'area dati. \n";
|
|||
|
szMsg= szMsg + "Si desidera precaricarli con dati dimostrativi ?";
|
|||
|
repeat
|
|||
|
nRetv = AskOptions(NONEXCLUSIVE,szMsg, "carica i dati dimostrativi", bInstallDemoData);
|
|||
|
if nRetv=BACK then
|
|||
|
return ;
|
|||
|
endif;
|
|||
|
|
|||
|
if bInstallDemoData then
|
|||
|
szInstType = INST_DEMO;
|
|||
|
else
|
|||
|
szInstType = INST_ENVIRONMENT;
|
|||
|
bInstallFirm = TRUE;
|
|||
|
endif;
|
|||
|
until nRetv=NEXT;
|
|||
|
#endif
|
|||
|
return ;
|
|||
|
end;
|
|||
|
|
|||
|
|
|||
|
//________________________________________________________________________________________________________________________
|
|||
|
// *** sceglie la locazione della chiave (locale o server)
|
|||
|
|
|||
|
function _SelectDongleServer(nRetv)
|
|||
|
|
|||
|
STRING msg;
|
|||
|
BOOL bJunk;
|
|||
|
begin
|
|||
|
|
|||
|
if (bInstallDemo || bSetupStandard) then
|
|||
|
bUseDongleServer=FALSE;
|
|||
|
|
|||
|
else
|
|||
|
|
|||
|
msg = "I programmi sono protetti da una chiave hardware.\n";
|
|||
|
|
|||
|
//se installi il server (quindi chiave in locale) lo usi
|
|||
|
if (bInstallServer) then
|
|||
|
bUseDongleServer=TRUE;
|
|||
|
msg = msg + "Su questa macchina sta per essere installato un server di autorizzazioni:";
|
|||
|
nRetv = AskOptions(EXCLUSIVE,msg,
|
|||
|
"utilizza il server per il controllo delle autorizzazioni",bJunk);
|
|||
|
else
|
|||
|
if (_TCPIPPresent()) then
|
|||
|
// e' installato il TCP/IP o verra' installato; posso fare uso delle chiavi di rete
|
|||
|
msg = msg + "Il controllo delle autorizzazioni va effettuato:";
|
|||
|
if (nReinstall > 0 ) then
|
|||
|
GetProfString(szCampoIni, "Server", "Dongle", szTmp);
|
|||
|
bJunk = (szTmp = "");
|
|||
|
bUseDongleServer = ! bJunk;
|
|||
|
endif;
|
|||
|
nRetv = AskOptions(EXCLUSIVE,msg,
|
|||
|
"tramite chiave locale", bJunk,
|
|||
|
"tramite un server di chiavi", bUseDongleServer
|
|||
|
);
|
|||
|
else
|
|||
|
bUseDongleServer=FALSE;
|
|||
|
nRetv = AskOptions(EXCLUSIVE, msg, "effettuare il controllo tramite chiave locale", bJunk);
|
|||
|
endif;
|
|||
|
endif;
|
|||
|
endif;
|
|||
|
|
|||
|
return nRetv;
|
|||
|
end;
|
|||
|
|
|||
|
|
|||
|
//________________________________________________________________________________________________________________________
|
|||
|
// *** Mette in Avvio Automatico il collegamento al server della chiave
|
|||
|
|
|||
|
function _FindAutoStartFolder(nDirection)
|
|||
|
|
|||
|
NUMBER nItems;
|
|||
|
NUMBER lResult;
|
|||
|
NUMBER listID;
|
|||
|
NUMBER nRetv;
|
|||
|
STRING szTempore,szStartFolder;
|
|||
|
BOOL bJunk;
|
|||
|
|
|||
|
begin
|
|||
|
if (!bInstallServer) then
|
|||
|
return;
|
|||
|
endif;
|
|||
|
RegDBSetDefaultRoot(HKEY_CURRENT_USER);
|
|||
|
|
|||
|
if RegDBGetKeyValueEx("\\.Default\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders","Startup",lResult,szAutoRunFolder,nItems) < 0 then
|
|||
|
// Registry access failed (16 bit DLL?)
|
|||
|
szAutoRunFolder="";
|
|||
|
// try to determine the folder by names...
|
|||
|
listID = ListCreate(STRINGLIST);
|
|||
|
if (GetGroupNameList(listID)<0) then
|
|||
|
MessageBox("Impossibile leggere la lista delle cartelle dei programmi",SEVERE);
|
|||
|
endif;
|
|||
|
lResult= ListGetFirstString(listID,szTempore);
|
|||
|
while (lResult != END_OF_LIST)
|
|||
|
lResult = ListGetNextString(listID,szTempore);
|
|||
|
if szTempore = "Esecuzione Automatica" then
|
|||
|
szAutoRunFolder=szTempore;
|
|||
|
endif;
|
|||
|
if szTempore = "Startup" then
|
|||
|
szAutoRunFolder=szTempore;
|
|||
|
endif;
|
|||
|
endwhile;
|
|||
|
|
|||
|
if szAutoRunFolder="" then
|
|||
|
_Attenzione("Non riesco a determinare la cartella di Esecuzione Automatica di Windows");
|
|||
|
repeat
|
|||
|
szStartFolder="";
|
|||
|
nDirection=SelectFolder("Cartella di Esecuzione Automatica",szAutoRunFolder,szAutoRunFolder);
|
|||
|
if nDirection = BACK then
|
|||
|
return;
|
|||
|
endif;
|
|||
|
if QueryProgGroup(szAutoRunFolder,szStartFolder,nItems) then
|
|||
|
_Attenzione("La cartella indicata non fa parte delle cartelle programmi di Windows");
|
|||
|
nDirection=BACK;
|
|||
|
endif;
|
|||
|
until nDirection=NEXT;
|
|||
|
endif;
|
|||
|
|
|||
|
endif;
|
|||
|
return ;
|
|||
|
end;
|
|||
|
|
|||
|
//________________________________________________________________________________________________________________________
|
|||
|
//*** setta il nome del server di autorizzazioni
|
|||
|
|
|||
|
function _SelectDongleServerDestination(nDirection)
|
|||
|
|
|||
|
NUMBER lResult;
|
|||
|
NUMBER listID;
|
|||
|
NUMBER nRetv;
|
|||
|
STRING szTempore[_MAX_LENGTH];
|
|||
|
BOOL bJunk;
|
|||
|
begin
|
|||
|
if !bUseDongleServer then
|
|||
|
return;
|
|||
|
endif;
|
|||
|
if (nReinstall > 0 ) then
|
|||
|
GetProfString(szCampoIni, "Server", "Dongle", szDongleServerName);
|
|||
|
endif;
|
|||
|
|
|||
|
// propone il nome dell'ultimo server di autorizzazioni (in caso si sia ritornati indietro nel corso
|
|||
|
// dell'installazione
|
|||
|
szTempore = szDongleServerName;
|
|||
|
// se l'installazione e' del tipo avanzata/installazione locale server e si vuole installare il server
|
|||
|
// di autorizzazioni, propone di default localhost, in quanto il server autorizzazioni e' in locale
|
|||
|
if ((!bInstallNetWrkChk) && (nReinstall <= 0) ) then
|
|||
|
szTempore = "localhost";
|
|||
|
endif;
|
|||
|
|
|||
|
SetDialogTitle(DLG_ASK_TEXT,"Server di autorizzazioni");
|
|||
|
nDirection = AskText("L'installazione attuale far<61> riferimento ad un server di autorizzazioni. Inserire il nome del computer (NON preceduto da '\\\\') su cui <20> stato installato il server delle chiavi di protezione.",szTempore,szDongleServerName);
|
|||
|
if nDirection=BACK then
|
|||
|
szDongleServerName=szTempore;
|
|||
|
endif;
|
|||
|
return ;
|
|||
|
end;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
//________________________________________________________________________________________________________________________
|
|||
|
// *** Mostra le opzioni scelte per l'installazione
|
|||
|
|
|||
|
function _ConfirmInstallation(nDirection)
|
|||
|
|
|||
|
STRING Msg,szInfo;
|
|||
|
NUMBER listInfo;
|
|||
|
|
|||
|
begin
|
|||
|
|
|||
|
//crea la lista delle informazioni
|
|||
|
listInfo = ListCreate(STRINGLIST);
|
|||
|
|
|||
|
Msg = "Si e' scelto di installare ";
|
|||
|
if bInstallPrg then
|
|||
|
if bInstallDemo then
|
|||
|
Msg =Msg +"il programma in versione demo";
|
|||
|
else
|
|||
|
Msg =Msg +"il programma in versione commerciale";
|
|||
|
endif;
|
|||
|
else
|
|||
|
Msg =Msg +"l'area dati";
|
|||
|
endif;
|
|||
|
Msg = Msg + " con le opzioni seguenti. \nPremendo <Avanti> Setup procedera' con l'installazione del programma.";
|
|||
|
|
|||
|
|
|||
|
// directory dei programmi (locale o di rete)
|
|||
|
if (bInstallNetWrkChk) then
|
|||
|
szInfo="Installazione di rete di riferimento:";
|
|||
|
ListAddString(listInfo, szInfo, AFTER);
|
|||
|
szInfo=" " + szAppRefPath;
|
|||
|
ListAddString(listInfo, szInfo, AFTER);
|
|||
|
szInfo="Direttorio dei programmi locali: ";
|
|||
|
else
|
|||
|
szInfo="Direttorio dei programmi: ";
|
|||
|
endif;
|
|||
|
|
|||
|
ListAddString(listInfo, szInfo, AFTER);
|
|||
|
szInfo=" " + szAppPath;
|
|||
|
ListAddString(listInfo, szInfo, AFTER);
|
|||
|
|
|||
|
|
|||
|
|
|||
|
// directory dei dati (esistente o da creare)
|
|||
|
szInfo="Area dati ";
|
|||
|
if !bInstallData then
|
|||
|
szInfo=szInfo + "pre-esistente";
|
|||
|
else
|
|||
|
if bInstallDemoData then
|
|||
|
szInfo=szInfo + "da installare (precaricata con archivi dimostrativi)";
|
|||
|
else
|
|||
|
szInfo=szInfo + "da installare";
|
|||
|
endif;
|
|||
|
endif;
|
|||
|
szInfo=szInfo + " in: ";
|
|||
|
ListAddString(listInfo, szInfo, AFTER);
|
|||
|
szInfo=" " + szDataPath;
|
|||
|
ListAddString(listInfo, szInfo, AFTER);
|
|||
|
|
|||
|
|
|||
|
// chiave di protezione (locale o con dongle server)
|
|||
|
#ifndef __DEMO__
|
|||
|
szInfo="Controllo protezione: ";
|
|||
|
ListAddString(listInfo, szInfo, AFTER);
|
|||
|
if bUseDongleServer then
|
|||
|
szInfo=" attraverso il server '" + szDongleServerName +"'";
|
|||
|
else
|
|||
|
szInfo=" attraverso chiave locale";
|
|||
|
endif;
|
|||
|
ListAddString(listInfo, szInfo, AFTER);
|
|||
|
#endif
|
|||
|
|
|||
|
|
|||
|
// Mostra a video la lista
|
|||
|
nDirection = SdShowInfoList( "Conferma installazione", Msg, listInfo );
|
|||
|
|
|||
|
end;
|
|||
|
|
|||
|
|
|||
|
//________________________________________________________________________________________________________________________
|
|||
|
// *** Installazione dell'area dati
|
|||
|
|
|||
|
function _InstallData(nDirection)
|
|||
|
|
|||
|
BOOL bReenterPath, bConfirmdatapath;
|
|||
|
STRING szTitle[_MAX_LENGTH];
|
|||
|
STRING szPath[_MAX_LENGTH];
|
|||
|
STRING szTemp[_MAX_LENGTH];
|
|||
|
NUMBER nTmp;
|
|||
|
|
|||
|
begin
|
|||
|
|
|||
|
if (!bInstallData) then
|
|||
|
return;
|
|||
|
endif;
|
|||
|
nDirection=BACK;
|
|||
|
TARGETDIR = szDataPath; // i .z hanno gia' il sottodirettorio nel nome di file
|
|||
|
if ( CreateDir( TARGETDIR ) < 0 ) then
|
|||
|
_Attenzione( STR_DATA_DIR_NOTCREATED );
|
|||
|
return;
|
|||
|
endif;
|
|||
|
// ****************
|
|||
|
// copia dati comuni, std, 770 o demo?
|
|||
|
|
|||
|
SetColor(STATUSBAR,BLUE);
|
|||
|
Enable(FEEDBACK_OPERATION);
|
|||
|
Enable(STATUS);
|
|||
|
// ******** installa dati DEMO ?
|
|||
|
if bInstallDemoData then
|
|||
|
szTitle = "Installazione dati dimostrativi su " + szDataPath;
|
|||
|
FileSetBeginDefine ( "DDEMO");
|
|||
|
if ( CompressGet( "DATIDEMO.Z", "*.*", INCLUDE_SUBDIR ) < 0) then
|
|||
|
szText = STR_ERR_DECOMPRESS + " il modulo Dati dimostrativi.";
|
|||
|
_Attenzione( szText );
|
|||
|
endif;
|
|||
|
FileSetEndDefine ( "DDEMO");
|
|||
|
StatusUpdate( ON, 100 );
|
|||
|
SetStatusWindow( 0, szTitle );
|
|||
|
_PerformSet ( "DDEMO");
|
|||
|
|
|||
|
// ******** installa dati iniziali ditte
|
|||
|
elseif bInstallFirm then
|
|||
|
szTitle = "Installazione dati comuni e standard su " + szDataPath;
|
|||
|
FileSetBeginDefine ( "DATI");
|
|||
|
if ( CompressGet( "DATISTD.Z", "*.*", INCLUDE_SUBDIR ) < 0) then
|
|||
|
szText = STR_ERR_DECOMPRESS + " il modulo Dati ditta.";
|
|||
|
_Attenzione( szText );
|
|||
|
endif;
|
|||
|
|
|||
|
FileSetEndDefine ( "DATI");
|
|||
|
SetStatusWindow( 0, szTitle );
|
|||
|
StatusUpdate( ON, 100 );
|
|||
|
_PerformSet ( "DATI");
|
|||
|
|
|||
|
endif;
|
|||
|
|
|||
|
|
|||
|
Disable(STATUS);
|
|||
|
|
|||
|
// ****************
|
|||
|
_CopiaADMININI( );
|
|||
|
_SetCampoIni();
|
|||
|
// ****************
|
|||
|
|
|||
|
// marca l'installazione dati con il tipo giusto
|
|||
|
szPath=szDataPath ^ "\\CONFIG";
|
|||
|
szTemp=szPath ^ DATATYPE_FILE;
|
|||
|
if ( Is( FILE_EXISTS, szTemp ) ) then
|
|||
|
DeleteFile(szTemp);
|
|||
|
endif;
|
|||
|
OpenFileMode( FILE_MODE_APPEND );
|
|||
|
CreateFile( nTmp, szPath, DATATYPE_FILE);
|
|||
|
WriteLine(nTmp,szInstType);
|
|||
|
CloseFile( nTmp );
|
|||
|
nDirection=NEXT;
|
|||
|
end;
|
|||
|
|
|||
|
//________________________________________________________________________________________________________________________
|
|||
|
// *** Installa le dll, i programmi, aggiorna i registry ed i files di sistema; si sposta poi nella directory di
|
|||
|
// *** destinazione dell'installazione,copia l'install.ini
|
|||
|
|
|||
|
function _InstallInitialFiles(nRetv)
|
|||
|
|
|||
|
BOOL bReenterPath, bConfirmdatapath;
|
|||
|
STRING sTmp[32],sPath[64];
|
|||
|
NUMBER direction;
|
|||
|
|
|||
|
begin
|
|||
|
|
|||
|
if (bInstallPrg) then
|
|||
|
|
|||
|
if (bInstallEnv || bInstallDemo) then
|
|||
|
_ForceAttrib4Dll( );
|
|||
|
// Effettua la vera e propria installazione di: dll,vxd,parte base necessaria installazione c++
|
|||
|
_DeleteFilesMinima( );
|
|||
|
_InstallFilesMinima( );
|
|||
|
|
|||
|
Disable( FEEDBACK_FULL );
|
|||
|
Disable( STATUS );
|
|||
|
|
|||
|
VarRestore( SRCTARGETDIR ); // Ripristina il valore di TARGETDIR
|
|||
|
|
|||
|
_UpdateStartMenu( ); // aggiorna il menu di avvio di windows
|
|||
|
|
|||
|
ChangeDirectory(szAppPath);
|
|||
|
|
|||
|
_CopiaINSTALLINI( );
|
|||
|
|
|||
|
_SetCampoIni();
|
|||
|
|
|||
|
nRetv=NEXT;
|
|||
|
endif;
|
|||
|
|
|||
|
endif;
|
|||
|
end;
|
|||
|
|
|||
|
|
|||
|
//________________________________________________________________________________________________________________________
|
|||
|
// *** installa il collegamento al master server nel menu autostart di windows
|
|||
|
|
|||
|
function _InstallServerAutoStart(nDirection)
|
|||
|
|
|||
|
STRING szTempore;
|
|||
|
|
|||
|
begin
|
|||
|
|
|||
|
if ( ! bInstallServer ) then
|
|||
|
return;
|
|||
|
endif;
|
|||
|
|
|||
|
//server di controllo dei vari servers possibili
|
|||
|
szTempore = szAppPath ^ "\\servers\\lerch.exe";
|
|||
|
AddFolderIcon( szAutoRunFolder, "Lerch", szTempore, "", szTempore, 0, "", REPLACE );
|
|||
|
end;
|
|||
|
|
|||
|
//________________________________________________________________________________________________________________________
|
|||
|
// *** memorizza e resetta un eventuale valore di server di chiavi
|
|||
|
|
|||
|
function _ResetDongleServer(szDongle)
|
|||
|
STRING szCampoIni;
|
|||
|
begin
|
|||
|
if ((! bUseDongleServer ) || (bInstallServer)) then
|
|||
|
szCampoIni = szConfigPath ^ "campo.ini";
|
|||
|
if ( Is( FILE_EXISTS, szCampoIni ) ) then
|
|||
|
GetProfString(szCampoIni, "Server", "Dongle",szDongle );
|
|||
|
WriteProfString(szCampoIni, "Server", "Dongle", "");
|
|||
|
endif;
|
|||
|
endif;
|
|||
|
end;
|
|||
|
|
|||
|
//________________________________________________________________________________________________________________________
|
|||
|
// *** ripristina un eventuale valore di server di chiavi
|
|||
|
|
|||
|
function _RestoreDongleServer(szDongle)
|
|||
|
STRING szCampoIni;
|
|||
|
begin
|
|||
|
if ((! bUseDongleServer) || (bInstallServer)) then
|
|||
|
szCampoIni = szConfigPath ^ "CAMPO.INI";
|
|||
|
if ( Is( FILE_EXISTS, szCampoIni ) ) then
|
|||
|
WriteProfString(szCampoIni, "Server", "Dongle", szDongle);
|
|||
|
endif;
|
|||
|
endif;
|
|||
|
end;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|