From 2f90ce3bc626e0e95f4f505d8c856050773f2a51 Mon Sep 17 00:00:00 2001 From: augusto Date: Thu, 29 Jan 1998 09:22:06 +0000 Subject: [PATCH] ./ : aggiunti i pif e gli exe per l'installazione moduli src/aga : aggiunti i .rul e la lista per l'installazionecon InstallShield3 git-svn-id: svn://10.65.10.50/trunk@6061 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- support/interni/src/aga/declare.rul | 167 +++++ support/interni/src/aga/setup.lst | 11 + support/interni/src/aga/setup.rul | 174 ++++++ support/interni/src/aga/setup1.rul | 443 ++++++++++++++ support/interni/src/aga/setup2.rul | 525 ++++++++++++++++ support/interni/src/aga/setup3.rul | 387 ++++++++++++ support/interni/src/aga/setup4.rul | 163 +++++ support/interni/src/aga/winsub.rul | 917 ++++++++++++++++++++++++++++ support/interni/unzip.pif | Bin 0 -> 995 bytes support/interni/unzip32.exe | Bin 0 -> 71872 bytes support/interni/zip.pif | Bin 0 -> 995 bytes support/interni/zip386.bat | 2 + support/interni/zip386.exe | Bin 0 -> 121555 bytes support/interni/zipsplit.pif | Bin 0 -> 995 bytes 14 files changed, 2789 insertions(+) create mode 100755 support/interni/src/aga/declare.rul create mode 100755 support/interni/src/aga/setup.lst create mode 100755 support/interni/src/aga/setup.rul create mode 100755 support/interni/src/aga/setup1.rul create mode 100755 support/interni/src/aga/setup2.rul create mode 100755 support/interni/src/aga/setup3.rul create mode 100755 support/interni/src/aga/setup4.rul create mode 100755 support/interni/src/aga/winsub.rul create mode 100755 support/interni/unzip.pif create mode 100755 support/interni/unzip32.exe create mode 100755 support/interni/zip.pif create mode 100755 support/interni/zip386.bat create mode 100755 support/interni/zip386.exe create mode 100755 support/interni/zipsplit.pif diff --git a/support/interni/src/aga/declare.rul b/support/interni/src/aga/declare.rul new file mode 100755 index 000000000..4236721a6 --- /dev/null +++ b/support/interni/src/aga/declare.rul @@ -0,0 +1,167 @@ + +// File di include con le dichiarazioni per DECLARE.RUL + +declare + #define TITLE_FONTSIZE_USE 64 + + // Dichiarazione di variabili + NUMBER nInstallBA; + NUMBER nFileSpaceBA; + + BOOL bInstPresente, bNuovaInst, bDatiPresenti; + BOOL bIsNet; + BOOL bProgrammiServer; + NUMBER nSystemFileModified; + // szAppPath e' la directory dove la applicazione verra' installata + STRING szAppPath[ _MAX_LENGTH ]; + // szDataPath e' la directory dove risiederanno i dati + STRING szDataPath[ _MAX_LENGTH ]; + STRING szDisk [_MAX_LENGTH]; + STRING szBitmapFile [_MAX_LENGTH]; + STRING szTmp[_MAX_LENGTH]; + STRING szTmp2[_MAX_LENGTH]; + STRING szRunProgram[_MAX_LENGTH]; + NUMBER nTmp; + NUMBER nInstallDiskSpace; + NUMBER nDataDiskSpace; + // szGroupName e' il nome del gruppo + STRING szGroupName[ _MAX_LENGTH]; + STRING szOSName; + BOOL bSCREENSAVER; + +#define STR_ERR_DLG "Errore di sistema. Impossibile visualizzare una finestra di dialogo." +#define STR_ERR_STRING "Errore di sistema. Impossibile ultimare l'installazione.\n\nRimuovere la causa dell'errore e ripetere l'installazione." +#define STR_BMP_FILE "PRASSI.BMP" + +// #define STR_ERR_DLG "Errore di sistema. Impossibile visualizzare una finestra di dialogo." +#define STR_INVALID_PATH "Il percorso indicato non e' valido.\nIndicare un altro percorso.\n" +#define STR_TEXT1 "I programmi PR.A.S.S.I. verranno installati nella directory :" +#define STR_TEXTSER1 "I programmi PR.A.S.S.I. sono installati nella directory :" +#define STR_DATATEXT1 "I dati verranno installati nella directory :" +#define STR_ENT_DISK "Inserire il disco " +#define STR_TAGDISK1 "BA" + +#define STR_DIR_READONLY "Impossibile scrivere nella directory scelta per i programmi." +#define STR_DIR_NOTCREATED "Impossibile creare la directory specificata per i programmi." +#define STR_NOTENUFROOM "Lo spazio su disco e' insufficiente per l'installazione dei programmi." +#define STR_DATA_DIR_READONLY "Impossibile scrivere nella directory scelta per i dati." +#define STR_DATA_DIR_NOTCREATED "Impossibile creare la directory specificata per i dati." +#define STR_DATA_NOTENUFROOM "Lo spazio su disco e' insufficiente per l'installazione dei dati." +#define STR_ERR_DECOMPRESS "E' stato riscontrato un errore cercando di decomprimere " +#define STR_INSERTDISK "Inserire il disco etichettato :\n" +#define STR_NOTENUFEXMEM "Memoria estesa insufficiente.\nNon e' possibile installare l'applicazione su macchine con meno di 4 Mb di memoria.\n" +#define STR_NOTHINGTOINSTALL "Non e' stato selezionato alcun modulo." +#define STR_NOTFIRST1 "Esiste una versione precedente nella directory %s. Confermando l'installazione nella directory indicata, la versione precedente sara' aggiornata. " +#define STR_NOTFIRST2 "Si desidera cambiare directory e mantenere inalterata tale versione ?" +#define STR_UPDATESPACE "Lo spazio potrebbe non essere sufficiente per effettuare l'aggiornamento del programma. Continuare ?" +#define STR_DATA_UPDATESPACE "Lo spazio potrebbe non essere sufficiente per effettuare l'aggiornamento dei dati. Continuare ?" + +#define STR_NET "Si desidera utilizzare il programma in rete ?" + +#define STR_FILE_MODIFIED "I files di sistema AUTOEXEC.BAT, CONFIG.SYS e WIN.INI sono stati modificati. Copie di backup di tali files sono state create nella directory %s, chiamate AUTOEXEC.PRA, CONFIG.PRA. e WIN.PRA" +#define STR_FILE_NOTMODIFIED "I files AUTOEXEC.PRA, CONFIG.PRA e WIN.PRA sono stati creati nella directory %s." + +#define BA_MODULENUM 0 + +#define STR_SHARE "SHARE /F:5100 /L:500" +#define STR_TEMP "SET TEMP=C:\\TMP" +#define STR_MODSYSFILES "I file CONFIG.SYS, AUTOEXEC.BAT e WIN.INI devono essere modificati." +#define STR_MODIFY "Modifica automatica" +#define STR_NOTMODIFY "Modifica manuale. Seguire l'esempio dei file CONFIG.PRA, AUTOEXEC.PRA e WIN.PRA" +#define STR_INFOMODIFY "Visualizzazione delle modifiche." +#define NUM_FILES_IN_CONFIG 100 +#define STR_PATHFILE "PATHPREF.INI" + +#define INST_ENVIRONMENT "DITTA" +#define INST_DEMO "DEMO" +#define INST_AUTOFORM "AUTOFORM" +#define INST_WORKPLACE "WORKPLACE" + +#define ZIP_DIRECTORY "ZIP" +#define ZIPDEMO_DIRECTORY "ZIPDEMO" +#define DEFAULT_LOCALPATH "C:\\PRASSI" +#define DEFAULT_NETPATH "F:\\PRASSI" +// Prototipo delle funzioni +// main +prototype _ProgramPrologue( ); +prototype _ProgramEpilogue( ); +prototype _Benvenuto( ); +prototype _FindExistingInst(BYREF STRING);// controlla la presenza dell'applicazione +prototype _CheckExistingInst(STRING);// controlla la presenza dell'applicazione +prototype _CheckExistingData(STRING);// controlla la presenza dell'applicazione + +prototype _SelectInstall(); // sceglie cosa installare +prototype _AddOrOverwrite(); +prototype _SelectComponents(); +prototype _SelectDataType( ); +prototype _ChiediDestinazione(); +prototype _ChiediDestDati(); +prototype _InstallazioneMinima(); +prototype _InstallazioneDati(); +prototype _Ask4Purchase(); +prototype _NewNetWorkPlace(); +// first level +prototype _ExitOnConfirm( ); + +prototype _PerformSet(STRING); +prototype _TrovaPrgSuRete( ); +prototype _DeleteFilesMinima(); +prototype _InstallaFilesMinima(); +prototype _UpdateRegistry( ); + + +// 2nd level + +prototype _CanOverwrite( ); +prototype _FilesDiSistema( ); +prototype _CambiaDirectory( ); +prototype _CreateDLG( STRING, INT, LONG ); + +prototype _FineInstallazione( ); +prototype _RemoveHDLOCK( ); +prototype _UpdateSysFiles( ); + +prototype _SetPathpref(); +prototype _CopiaPRASSIINI( ); +prototype _CopiaINSTALLINI( ); +prototype _CopiaRESETHL( ); +prototype _SettaFlagNet(); +prototype _PrimaInstallazione( STRING, BYREF NUMBER, BYREF STRING ); +// ************** +// utility +prototype _ShowExitDialog( NUMBER ); +prototype _ForceAttrib4Dll( ); +prototype _PreviewBatch( ); +prototype _CercaFileOvunque( STRING ,BYREF STRING ); +// ************** +// utility +prototype _Verifica( STRING ); +prototype _Errore( STRING ); +prototype _Attenzione( STRING ); +prototype _DeSlash( STRING, BYREF STRING ); +prototype _GetOSName( ); +prototype _DisattivaScreenSaver( ); +prototype _RiattivaScreenSaver( ); +prototype _Cambia_Attributi(STRING); +prototype _Check_Disk(STRING, STRING); +prototype _MostraModelessDialog( ); +prototype _SettaModelessDialog( STRING ); +prototype _NascondiModelessDialog( ); +prototype _RichiediMemoria( NUMBER ); +prototype _NToStringKB( NUMBER, BYREF STRING ); + +/* +prototype _InstallaFiles( ); +prototype _GetAut( NUMBER ); +prototype _SpazioRichiesto( ); +prototype _SpazioRichiestoDati( ); +prototype _InstallaDati( ); +prototype _ControlloSpazio( ); +prototype _CheckNet( ); +prototype _DeleteFiles( ); + + + +prototype _FinalChecks( ); + +*/ diff --git a/support/interni/src/aga/setup.lst b/support/interni/src/aga/setup.lst new file mode 100755 index 000000000..b33a8ceb7 --- /dev/null +++ b/support/interni/src/aga/setup.lst @@ -0,0 +1,11 @@ +1; +sys.z +winsys.z +winsyscg.z +bademo.z +ba.z +std.z +com.z +cm770.z +datidemo.z +datiauto.z diff --git a/support/interni/src/aga/setup.rul b/support/interni/src/aga/setup.rul new file mode 100755 index 000000000..bbc997b32 --- /dev/null +++ b/support/interni/src/aga/setup.rul @@ -0,0 +1,174 @@ +// File principale della installazione EASY CAMPO +declare + // Dichiarazioni di costanti per questo script + #include "DECLARE.RUL" + // Windows API + #include "WINSUB.H" + // File di include con gli ID dei dialog usati in questo script + #include "PRADIAGS.H" + NUMBER nHandle; + NUMBER nTerminatedConv, nResult; + STRING szSXTR1,szSXTR2, szDoMnu, szText, szModifiedPath, szBaCnv; + STRING sInstType; + BOOL bPurchase, bInstallModules, bInstallAutoform, bInstallEnv, bInstallFirm, bInstallDemo, bInstallDemoData, bInstallNetWrk; + BOOL bInstallData, bInstallPrg, bInstallManual; + // Function declarations. + prototype _SetupScreen(); + prototype _CheckRequirements(); + + + +//---------------------------------- + NUMBER nDirection; +program + + +Step_start: +//---------------------------------- defaults + bInstallPrg = TRUE; + bInstallData = FALSE; + _ProgramPrologue(); + +#define SPACE_REQUIRED 3000 // Disk space in bytes. +#define APP_NAME "Easy Campo" +#define PROGRAM_FOLDER_NAME "PRASSI" +#define APPBASE_PATH "\\" +#define COMPANY_NAME "A.G.A. Informatica" +#define PRODUCT_NAME "EasyCampo" +#define PRODUCT_VERSION "1.0 beta" +#define DEINSTALL_KEY "SampleDeinstKey" +#define PRODUCT_KEY "ba0.exe" +#define DATATYPE_FILE "datatype." + + Disable( BACKGROUND ); + // Set installation info., which is required for registry entries. + InstallationInfo( COMPANY_NAME, PRODUCT_NAME, PRODUCT_VERSION, PRODUCT_KEY ); + // Set up the installation screen. + _SetupScreen(); + Enable( DIALOGCACHE ); + _CheckRequirements(); + +Step_welcome: + Disable( BACKBUTTON ); + Welcome( "", 0 ); + Enable( BACKBUTTON ); + +Step_chooseinst: + // sceglie cosa installare + nDirection=_SelectInstall(); + if (nDirection=BACK) then + goto Step_welcome; + endif ; + if nDirection=NEXT then + if bInstallNetWrk then + goto Step_installnet; + endif; + endif; + +Step_choosewhere: + nDirection= _ChiediDestinazione(); + if nDirection=BACK then + goto Step_chooseinst; + endif; + if bInstallDemo then + bInstallPrg = TRUE; + bInstallData = TRUE; + bInstallDemoData=TRUE; + goto Step_choosewhereD; + endif; + +Step_choosecomp: + if nDirection=BACK && bInstallDemo then + goto Step_choosewhere; + endif; + nDirection= _SelectComponents( ); + if nDirection=BACK then + goto Step_choosewhere; + endif; + +Step_choosewhereD: + nDirection= _ChiediDestDati(); + if nDirection=BACK then + goto Step_choosecomp; + endif; + +Step_choosedata: + if bInstallData then + nDirection= _SelectDataType(); + if nDirection=BACK then + if bInstallDemo then + goto Step_choosewhere; + else + goto Step_choosewhereD; + endif; + endif; + endif; + +Step_fromnet: + nDirection = _SettaFlagNet(); + if nDirection=BACK then + if bInstallDemo then + goto Step_choosewhere; + elseif !bInstallData then + goto Step_choosewhereD; + else + goto Step_choosedata; + endif; + endif; + +Step_newORupdate: + if (bInstallPrg || bNuovaInst) && nDirection=BACK then + goto Step_fromnet; + endif; + if bInstallPrg then + nDirection=_AddOrOverwrite(); + endif; + if nDirection=BACK then + goto Step_fromnet; + endif; + +Step_installData: + if bInstallData then + nDirection = _InstallazioneDati(); + if (nDirection=BACK) then + goto Step_newORupdate; + endif; + endif; + +Step_installPrg: + if bInstallPrg then + if bInstallEnv || bInstallDemo then + nDirection = _InstallazioneMinima(); + if (nDirection=BACK) then + goto Step_newORupdate; + endif; + endif; + endif; + +Step_purchase: + if bPurchase then + ChangeDirectory(szAppPath); + LaunchAppAndWait("ba1.exe","-4 -uPRASSI",WAIT); + endif; + if bInstallModules then + ChangeDirectory(szAppPath); + LaunchAppAndWait("ba1.exe","-6 -uPRASSI",WAIT); + endif; + + _ProgramEpilogue(); + exit; + +Step_installnet: + nDirection = _NewNetWorkPlace(); + if (nDirection=BACK) then + goto Step_chooseinst; + endif; + + _ProgramEpilogue(); + exit; + + #include "winsub.rul" + #include "setup1.rul" + #include "setup2.rul" + #include "setup3.rul" + #include "setup4.rul" diff --git a/support/interni/src/aga/setup1.rul b/support/interni/src/aga/setup1.rul new file mode 100755 index 000000000..5f80de18e --- /dev/null +++ b/support/interni/src/aga/setup1.rul @@ -0,0 +1,443 @@ +//---------------------------------------------------------------------------- +// **** Selezione del tipo di installazione +// **** (programmi o postazione di rete) +function _SelectInstall( ) + NUMBER nRetv; + STRING szMsg[512]; +begin + szMsg = "Setup puo' essere utilizzato per installare "; + szMsg=szMsg + "EasyCampo in versione normale o demo, oppure per installare "; + szMsg=szMsg + "una postazione di lavoro che sfrutta una precedente intallazione su disco di rete"; + nRetv = AskOptions(EXCLUSIVE,szMsg, + "&Installazione EasyCAMPO", + bInstallEnv, + "Installazione EasyCAMPO &Demo", + bInstallDemo, + "Installazione nuova postazione di lavoro in &rete", + bInstallNetWrk + ); + return nRetv; +end; + +//---------------------------------------------------------------------------- +// **** Selezione del tipo di installazione +// **** +function _SelectComponents() + NUMBER nRetv; + BOOL bJunk; + STRING szMsg[512]; +begin + repeat + szMsg= "E' possibile installare i programmi (ambiente e moduli) e/o l'area dati. "; + szMsg=szMsg + "\nSelezionare almeno una delle componenti"; + nRetv = AskOptions(NONEXCLUSIVE,szMsg, + "Installa i programmi", bInstallPrg, + "Installa l'area dati", bInstallData + ); + until nRetv!=NEXT || bInstallData || bInstallPrg; + return nRetv; +end; + +// **** Selezione del tipo di installazione +// **** +function _SelectDataType( ) + NUMBER nRetv; + BOOL bJunk; + STRING szMsg[512]; +begin + szMsg= "Si e' selezionato di installare gli archivi. \n"; + szMsg= szMsg + "L'area dati deve contenere:"; + repeat + nRetv = AskOptions(EXCLUSIVE,szMsg, + "gli archivi di &ditta", + bInstallFirm, + "gli archivi De&mo", + bInstallDemoData, + "gli archivi di Auto&formazione", + bInstallAutoform + ); + if nRetv=BACK then + return BACK; + endif; + sInstType = INST_ENVIRONMENT; + if bInstallDemoData then + sInstType = INST_DEMO; + elseif bInstallAutoform then + sInstType = INST_AUTOFORM; + endif; + + until nRetv=NEXT; + return nRetv; +end; + +//---------------------------------- +// chiede la directory dell'applicazione e dei dati; +// l'installazione dei soli dati ha bisogno di dir_applicaz (per settare pathpref) +// l'installazione dei soli programmi ha bisogno di dir_dati (per sapere se esiste un direttorio dati) +function _ChiediDestinazione() + BOOL bReenterPath, bConfirmdatapath; + NUMBER nRetv; +begin + // ricontrolla la presenza di una installazione + // e determina la posizione della directory "DATI" + + if szAppPath="" then + szAppPath= "c:\prassi"; + bNuovaInst = _FindExistingInst(szAppPath); + endif; + if (AskDestPath( "", "", szAppPath, 0 )=BACK) then + return BACK; + endif; + bNuovaInst = ! _CheckExistingInst(szAppPath); + szTmp = szAppPath ^ "PATHPREF.INI"; + if ( ! Is( FILE_EXISTS, szTmp ) ) then + szDataPath = szAppPath ^ "DATI\\"; + else + OpenFileMode( FILE_MODE_NORMAL ); + OpenFile( nTmp, szAppPath, "PATHPREF.INI"); + if GetLine( nTmp, szTmp ) = 0 then + StrSub( szTmp2, szTmp, 1, 1 ); + if ( szTmp2 = ":" ) then + szDataPath = szTmp; + else + StrSub( szTmp2, szTmp, 0, 1 ); + if ( szTmp2 = "." ) then + szDataPath = szTmp; + else + if ( szTmp2 = "\\" ) then + szDataPath = szTmp; + else + szDataPath = szAppPath ^ szTmp; + endif; + endif; + endif; + else + MessageBox( "Errore nel file PATHPREF.INI" ,SEVERE); + szDataPath = szAppPath ^ "DATI\\"; + endif; + CloseFile( nTmp ); + endif; + return nRetv; +end; + +//---------------------------------- +function _ChiediDestDati() + BOOL bConfirmdatapath; + STRING szChangedPath[256] + STRING sMsg[256] +begin +// ricontrolla la presenza di una installazione +// e determina la posizione della directory "DATI" +// step 2: data path + if bInstallData then + sMsg = "I dati verranno installati nel seguente direttorio."; + else + sMsg = "I dati sono installati nel seguente direttorio."; + endif; + sMsg = sMsg + "\nE' possibile cambiare il direttorio digitando il nuovo nome o scegliendo il pulsante "; + repeat + bConfirmdatapath=TRUE; + if (AskPath(sMsg ,szDataPath, szChangedPath)=BACK) then + return BACK; + endif; + szDataPath=szChangedPath; + bDatiPresenti = _CheckExistingData(szDataPath); + if (bDatiPresenti && bInstallData) then + bConfirmdatapath=_CanOverwrite(); + endif; + if ((! bDatiPresenti) && (! bInstallData)) then + MessageBox( "La cartella indicata non contiene dati. \nSe si desidera davvero utilizzare questa cartella, \nabilitare l'installazione dell'area dati" ,SEVERE); + bConfirmdatapath=FALSE; + endif; + until (bConfirmdatapath); + + return NEXT; +end; + + + + +//---------------------------------------------------------------------------- +// **** Installi o aggiungi moduli ? + +function _AddOrOverwrite() + STRING szMsg[512]; + BOOL bJunk; + NUMBER nRet; +begin + if bNuovaInst then + szMsg= "Setup procedera' con l'installazione dei programmi di ambiente."; + szMsg=szMsg + "Si desidera acquistare e abilitare nuovi moduli prima di installarli?"; + bInstallModules=TRUE; + nRet = AskOptions(NONEXCLUSIVE,szMsg, + "&Acquisto e abilitazione nuovi moduli", + bPurchase + ); + else + szMsg= "Si sta aggiornando una precedente installazione. Si desidera aggiornare i moduli gia' acquistati "; + szMsg=szMsg + "o acquistarne e abilitarne dei nuovi prima di installarli ?"; + nRet = AskOptions(NONEXCLUSIVE,szMsg, + "&Acquisto e abilitazione nuovi moduli", + bPurchase, + "Installazione o aggiornamento nuovi &moduli", + bInstallModules + ); + endif; + return nRet; +end; + +//----------------------------------------------------------------------------- +// **** +// **** +function _TrovaPrgSuRete( ) + STRING szText[ _MAX_LENGTH ], szModifiedPath[ _MAX_LENGTH ], szTemp[ _MAX_LENGTH ]; + NUMBER nHandle; +begin + szText = "E' stata scelta l'installazione di una postazione di lavoro."; + szText =szText + "\nInserire il nome del direttorio di rete che contiene l'installazione di EasyCAMPO"; + szAppPath = DEFAULT_NETPATH; + while ( TRUE ) + if ( AskPath( szText , szAppPath, szModifiedPath ) = NEXT ) then + if ( _CheckExistingInst(szModifiedPath) ) then + szAppPath = szModifiedPath; + szTmp = szAppPath ^ "PATHPREF.INI"; + if ( ! Is( FILE_EXISTS, szTmp ) ) then + szDataPath = szAppPath ^ "DATI\\"; + else + OpenFileMode( FILE_MODE_NORMAL ); + OpenFile( nTmp, szAppPath, "PATHPREF.INI"); + if GetLine( nTmp, szTmp ) = 0 then + StrSub( szTmp2, szTmp, 1, 1 ); + if ( szTmp2 = ":" ) then + szDataPath = szTmp; + else + StrSub( szTmp2, szTmp, 0, 1 ); + if ( szTmp2 = "." ) then + szDataPath = szTmp; + else + if ( szTmp2 = "\\" ) then + szDataPath = szTmp; + else + szDataPath = szAppPath ^ szTmp; + endif; + endif; + endif; + else + _Attenzione( "Errore nel file PATHPREF.INI" ); + szDataPath = szAppPath ^ "DATI\\"; + endif; + CloseFile( nTmp ); + endif; + StrToUpper( szAppPath, szAppPath ); + StrToUpper( szDataPath, szDataPath ); + bProgrammiServer = TRUE; + szTemp = DEFAULT_LOCALPATH ^ "\\PREFIX.TXT"; + if ( ! Is( FILE_EXISTS, szTemp ) ) then + CreateDir( DEFAULT_LOCALPATH ); + CreateFile( nHandle, DEFAULT_LOCALPATH, "PREFIX.TXT" ); + WriteLine( nHandle, "COM" ); + CloseFile( nHandle ); + endif; + _UpdateRegistry( ); + return NEXT; + else + _Attenzione( "Impossibile trovare i programmi di EasyCAMPO in " + szModifiedPath ); + endif; + else + return BACK; + endif; + endwhile; +end; +//----------------------------------------------------------------------------- +// **** installazione postazione di rete +// **** +function _NewNetWorkPlace( ) + STRING szText[ _MAX_LENGTH ]; + NUMBER nGoOut, nRet, nResult, nDisk; + BOOL bRet; +begin + if (_TrovaPrgSuRete() =BACK) then + return BACK; + endif; + + bRet = _Verifica("Installare anche le librerie di CG ? "); + + FileSetBeginDefine ( "SYS"); + SetColor(STATUSBAR,BLUE); + Enable(FEEDBACK_OPERATION); + Enable(STATUS); + SetStatusWindow( 0, "Scompattamento in corso..." ); + TARGETDIR = WINDIR ^ "SYSTEM"; + + if ( CompressGet( "WINSYS.Z", "*.*", INCLUDE_SUBDIR ) < 0) then + szText = STR_ERR_DECOMPRESS + " la libreria WINSYS."; + _Errore( szText ); + endif; + if (bRet) then + if ( CompressGet( "WINSYSCG.Z", "*.*", INCLUDE_SUBDIR ) < 0) then + szText = STR_ERR_DECOMPRESS + " la libreria WINSYSCG."; + _Errore( szText ); + endif; + ChangeDirectory( szAppPath); + szText = szAppPath ^ "\\cgpostIN.EXE"; + LaunchAppAndWait( szText , szAppPath, WAIT ); + endif; + FileSetEndDefine ( "SYS"); + StatusUpdate( ON, 100 ); + repeat + nRet=FileSetPerformEz ("SYS", nDisk ); + until nRet = FS_DONE; + Delay(1); + FileSetEndPerform ( "SYS" ); + + + + _UpdateSysFiles(); + _SetPathpref(); + ChangeDirectory( szAppPath); + _RemoveHDLOCK(); + + Disable( FEEDBACK_FULL ); + Disable(STATUS); + return NEXT; +end; + + +//---------------------------------- +function _InstallazioneDati() + BOOL bReenterPath, bConfirmdatapath; + STRING szTitle[_MAX_LENGTH]; + STRING szPath[_MAX_LENGTH]; + STRING szTemp[_MAX_LENGTH]; + NUMBER nTmp; +begin + + + 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 e com770 , + // demo o autoformazione ? + + SetColor(STATUSBAR,BLUE); + Enable(FEEDBACK_OPERATION); + Enable(STATUS); + SetStatusWindow( 0, "Installazione dati in corso..." ); + // ******** installa dati DEMO ? + if bInstallDemoData then + szTitle = "Installazione dati dimostrativi su " + szDataPath; + SetStatusWindow( 0, szTitle ); + 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 ); + _PerformSet ( "DDEMO"); + + // ******** installa dati autoformazione ? + elseif bInstallAutoform then + szTitle = "Installazione dati di autoformazione su " + szDataPath; + SetStatusWindow( 0, szTitle ); + FileSetBeginDefine ( "DAUTO"); + if ( CompressGet( "DATIAUTO.Z", "*.*", INCLUDE_SUBDIR ) < 0) then + szText = STR_ERR_DECOMPRESS + " il modulo Dati di autoformazione."; + _Attenzione( szText ); + endif; + FileSetEndDefine ( "DAUTO"); + StatusUpdate( ON, 100 ); + _PerformSet ( "DAUTO"); + + // ******** installa dati iniziali ditte + elseif bInstallFirm then + szTitle = "Installazione dati comuni e standard su " + szDataPath; + SetStatusWindow( 0, szTitle ); + FileSetBeginDefine ( "DATI"); + if ( CompressGet( "STD.Z", "*.*", INCLUDE_SUBDIR ) < 0) then + szText = STR_ERR_DECOMPRESS + " il modulo Dati standard."; + _Attenzione( szText ); + endif; + if ( CompressGet( "COM.Z", "*.*", INCLUDE_SUBDIR ) < 0) then + szText = STR_ERR_DECOMPRESS + " il modulo Dati comuni."; + _Attenzione( szText ); + endif; + if ( CompressGet( "CM770.Z", "*.*", INCLUDE_SUBDIR ) < 0) then + szText = STR_ERR_DECOMPRESS + " il modulo Dati comuni (M770)."; + _Attenzione( szText ); + endif; + FileSetEndDefine ( "DATI"); + + StatusUpdate( ON, 100 ); + _PerformSet ( "DATI"); + endif; + + + Disable(STATUS); + + // **************** + _CopiaPRASSIINI( ); + _SetPathpref(); + // **************** + // 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,sInstType); + CloseFile( nTmp ); + +end; + +//---------------------------------- +function _InstallazioneMinima() + BOOL bReenterPath, bConfirmdatapath; + STRING sTmp[32],sPath[64]; +begin + + _ForceAttrib4Dll( ); + // Effettua la vera e propria installazione minima + _DeleteFilesMinima( ); + _InstallaFilesMinima( ); + + Disable( FEEDBACK_FULL ); + Disable( STATUS ); + // Ripristina il valore di TARGETDIR + VarRestore( SRCTARGETDIR ); + _UpdateRegistry( ); + _UpdateSysFiles( ); + + ChangeDirectory( szAppPath); + + _CopiaINSTALLINI( ); + _CopiaRESETHL( ); + _RemoveHDLOCK( ); + + _SetPathpref(); + +// IlMiticoINST.EXE: //( Trice.exe cb0000.exe ): +// E' stato spostato come post-process della CG +// if bNuovaInst then +// if nInstallCG then +// ChangeDirectory( szAppPath); +// szRunProgram = szAppPath ^ "\\INST.EXE"; +// LaunchAppAndWait( szRunProgram , szAppPath, WAIT ); +// endif; +// endif; + return NEXT; +end; + +function _Ask4Purchase() +begin + if (AskYesNo("Vuoi acquistare nuovi moduli",NO)) then + // lancia il programma ''enabler'' + endif; + return NEXT; +end; + diff --git a/support/interni/src/aga/setup2.rul b/support/interni/src/aga/setup2.rul new file mode 100755 index 000000000..02934e1b8 --- /dev/null +++ b/support/interni/src/aga/setup2.rul @@ -0,0 +1,525 @@ +function _SetPathpref( ) + STRING szTmpPath[_MAX_LENGTH]; +begin + // Setto il Pathpref in modo da poter eseguire BA1 o BACNV, + // anche in prima installazione su rete (mancando set PREFPATH) + + ChangeDirectory( szAppPath); + if (Is( FILE_EXISTS, "PATHPREF.INI" )) then + DeleteFile("PATHPREF.INI" ); + endif; + CreateFile( nHandle, szAppPath, "PATHPREF.INI" ); + WriteLine( nHandle, szDataPath ); + CloseFile( nHandle ); + + ChangeDirectory( szAppPath); + if ( Is( FILE_EXISTS, "PREFIX.TXT" )) then + DeleteFile("PREFIX.TXT" ); + endif; + CreateFile( nHandle, szAppPath, "PREFIX.TXT" ); + WriteLine( nHandle, "COM" ); + CloseFile( nHandle ); + // scrive le stesse cose nel file unico prawin.ini , se esiste + szTmpPath=szAppPath ^ "PRAWIN.INI"; + WriteProfString(szTmpPath, "Main", "Program",szAppPath); + WriteProfString(szTmpPath, "Main", "Study",szDataPath); + WriteProfString(szTmpPath, "Main", "Firm","COM"); +end; + +//----------------------------------------------------------------------------- +// **** Funzione per aggiornare i files di sistema +// **** +function _UpdateSysFiles( ) + NUMBER nNotModify, nGoOut, nRet, nInfo, nCurFiles, nLen, nNr; + STRING szTemp[_MAX_LENGTH], szWin_Ini[_MAX_LENGTH], szSaveDir[_MAX_LENGTH]; +begin + if !bNuovaInst then + return; + endif; + + nSystemFileModified = TRUE; + nNotModify = FALSE; + nInfo = FALSE; + nGoOut = FALSE; + SetDialogTitle(DLG_ASK_OPTIONS, "Modifica ai files di sistema" ); + Disable( BACKBUTTON ); + SetDialogTitle(DLG_CANCEL, "Uscita" ); + SetDialogTitle(DLG_OK, "Conferma" ); + + while ! nGoOut + nRet = AskOptions(EXCLUSIVE, STR_MODSYSFILES, STR_MODIFY, nSystemFileModified, STR_NOTMODIFY, nNotModify, STR_INFOMODIFY, nInfo ); + if nInfo then + // Mostra le informazioni + if _PreviewBatch( ) then + nSystemFileModified = TRUE; + else + nSystemFileModified = FALSE; + endif; + endif; + nGoOut = TRUE; + endwhile; + + // Modifiche per installare BAFAX & FAXMAN (30 settembre 1996) + if (bProgrammiServer) then + szSaveDir = DEFAULT_LOCALPATH; + else + szSaveDir = szAppPath; + endif; + + VarSave(SRCTARGETDIR); + SRCDIR = WINDIR; + TARGETDIR = szSaveDir; + CopyFile( "WIN.INI", "WIN.PRA" ); + VarRestore(SRCTARGETDIR); + // Fine modifiche del 30 settembre 1996 + VarSave(SRCTARGETDIR); + SRCDIR = "C:\\"; + TARGETDIR = szSaveDir; + CopyFile( "AUTOEXEC.BAT", "AUTOEXEC.PRA" ); + CopyFile( "CONFIG.SYS", "CONFIG.PRA" ); + VarRestore(SRCTARGETDIR); + if nSystemFileModified then + BatchSetFileName( "C:\\AUTOEXEC.BAT" ); + ConfigSetFileName( "C:\\CONFIG.SYS" ); + szWin_Ini = WINDIR ^ "WIN.INI"; + else + szTemp = szSaveDir ^ "AUTOEXEC.PRA"; + BatchSetFileName( szTemp ); + szTemp = szSaveDir ^ "CONFIG.PRA"; + ConfigSetFileName( szTemp ); + szWin_Ini = szSaveDir ^ "WIN.PRA"; + endif; + if (szOSName != "3.95") then + EzBatchReplace( STR_SHARE ); + endif; + EzBatchReplace( STR_TEMP ); + if bProgrammiServer then + EzBatchReplace("SET PREFPATH=C:\\PRASSI\\PREFIX.TXT"); + endif; + szTemp = "C:\\RESET_HL.EXE"; + EzBatchReplace( szTemp ); + nLen = StrLength( szAppPath ); + StrSub( szTemp, szAppPath, 0, nLen - 1); + EzBatchAddPath( "PATH", szTemp, "", AFTER ); + EzConfigGetValue( "FILES", nCurFiles ); + if nCurFiles < NUM_FILES_IN_CONFIG then + EzConfigSetValue( "FILES", NUM_FILES_IN_CONFIG ); + endif; + + // ***************** + // Modifiche per installare BAFAX & FAXMAN + + nNr = GetProfString(szWin_Ini,"FaxMan,EASYFAX","Application",szTemp); + if (nNr <0 || szTemp = "") then + WriteProfString(szWin_Ini,"ports","EASYFAX"," "); + szTemp = szAppPath ^ "bafax.exe"; + WriteProfString(szWin_Ini,"FaxMan,EASYFAX","Application",szTemp); + WriteProfString(szWin_Ini,"PrinterPorts","FaxMan","fmfaxdrv,EASYFAX,5,5"); + WriteProfString(szWin_Ini,"devices","FaxMan","fmfaxdrv,EASYFAX"); + endif; + // ***************** + if nSystemFileModified then + SprintfBox( WARNING, "Attenzione", STR_FILE_MODIFIED, szSaveDir ); + else + SprintfBox( WARNING, "Attenzione", STR_FILE_NOTMODIFIED, szSaveDir ); + endif; +end; + +//----------------------------------------------------------------------------- +// **** Funzione per cancellare i files minimi per il fascicolatore +function _DeleteFilesMinima( ) + NUMBER pDataList, pProgramList, nFile, nFlag, nLen; + STRING szPath [ _MAX_LENGTH ], szFileName [ _MAX_LENGTH ], szFC [ 2 ], szLine [ _MAX_LENGTH ]; + +begin + + if !bNuovaInst then + szPath=szAppPath ^ "install.ini"; + GetProfString(szPath,"Main","Demo",szFC); + if szFC = "X" then + // cancella tutti gli eseguibili per evitare sovrapposizioni tra versione demo e normale + szPath=szAppPath; + nLen=FindAllFiles(szAppPath, "*.EXE", szFileName, RESET); + while (nLen=0 ) + DeleteFile(szFileName); + nLen=FindAllFiles(szAppPath, "*.EXE", szFileName, CONTINUE); + endwhile; + endif; + endif; + + //************ + // ????????? + // + pDataList = ListCreate( STRINGLIST ); + if ( pDataList = LIST_NULL ) then + _Errore( "Errore in ListCreate ( DataList )" ); + exit; + endif; + pProgramList = ListCreate( STRINGLIST ); + if ( pProgramList = LIST_NULL ) then + _Errore( "Errore in ListCreate ( ProgramList )" ); + exit; + endif; + OpenFileMode( FILE_MODE_NORMAL ); + szPath = SRCDIR; + szFileName = "FTODEL.DAT"; + OpenFile( nFile, szPath, szFileName ); + nFlag = GetLine( nFile, szLine ); + while( nFlag = 0 ) + StrSub( szFC, szLine, 0, 1 ); + nLen = StrLength( szLine); + StrSub( szFileName, szLine, 1, nLen - 1 ); + if ( szFC != "#" ) then + if ( szFC = "D" ) then + ListAddString( pDataList, szFileName, AFTER ); + else + ListAddString( pProgramList, szFileName, AFTER ); + endif; + endif; + nFlag = GetLine( nFile, szLine ); + endwhile; + CloseFile( nFile ); + VarSave( SRCTARGETDIR ); + TARGETDIR = szDataPath; + nFlag = ListGetFirstString( pDataList, szLine ); + while ( nFlag = 0 ) + DeleteFile( szLine ); + nFlag = ListGetNextString( pDataList, szLine ); + endwhile; + ListDestroy( pDataList ); + nFlag = ListGetFirstString( pProgramList, szLine ); + TARGETDIR = szAppPath; + while ( nFlag = 0 ) + DeleteFile( szLine ); + nFlag = ListGetNextString( pProgramList, szLine ); + endwhile; + ListDestroy( pProgramList ); + VarRestore( SRCTARGETDIR ); +end; + + +// **** +function _InstallaFilesMinima ( ) + NUMBER nRet, ntDisk, nHandle; + BOOL bRightDisk; + STRING szTemp [_MAX_LENGTH]; + STRING szStatusText [_MAX_LENGTH]; +begin + + + // Backup TARGETDIR to local variable + // Define fileset items + // --------------------- // + + SetColor(STATUSBAR,BLUE); + Enable(FEEDBACK_OPERATION); + Enable(STATUS); + + SetStatusWindow( 0, "Installazione programmi di ambiente in corso..." ); + + FileSetBeginDefine ( "WIN"); + TARGETDIR = WINDIR ^ "SYSTEM"; + if ( CompressGet( "WINSYS.Z", "*.*", INCLUDE_SUBDIR ) < 0) then + szText = STR_ERR_DECOMPRESS + " la libreria WINSYS."; + _Errore( szText ); + endif; + if ( CompressGet( "WINSYSCG.Z", "*.*", INCLUDE_SUBDIR ) < 0) then + szText = STR_ERR_DECOMPRESS + " la libreria WINSYSCG."; + _Errore( szText ); + endif; + FileSetEndDefine ( "WIN"); + + FileSetBeginDefine ( "BA"); + TARGETDIR = szAppPath; + if ( CreateDir( TARGETDIR ) < 0 ) then + _Errore( STR_DIR_NOTCREATED ); + else + if ( CompressGet( "SYS.Z", "*.*", INCLUDE_SUBDIR ) < 0) then + szText = STR_ERR_DECOMPRESS + " la libreria SYS."; + _Errore( szText ); + endif; + if bInstallDemo then + szText = "BADEMO.Z"; + else + szText = "BA.Z"; + endif; + if ( CompressGet( szText, "*.*", INCLUDE_SUBDIR ) < 0) then + szText = STR_ERR_DECOMPRESS + " il programma installatore"; + _Errore( szText ); + endif; + endif; + FileSetEndDefine ( "BA"); + + StrToUpper( szAppPath, szAppPath ); + szStatusText = "Installazione su " + szAppPath; + StatusUpdate( ON, 50 ); + _PerformSet ( "WIN"); + StatusUpdate( ON, 100 ); + _PerformSet ( "BA"); + + szTemp = szAppPath ^ "RECDESC"; + CreateDir(szTemp); + Disable(STATUS); + +end; + +function _PerformSet ( sFileset) + NUMBER nDisk; + BOOL bDone; + NUMBER nRet, ntDisk, nHandle; + BOOL bRightDisk; + STRING szTemp [_MAX_LENGTH]; + STRING szTmp [_MAX_LENGTH]; + STRING szFileName [_MAX_LENGTH]; + STRING szExt [_MAX_LENGTH]; + STRING szText [_MAX_LENGTH]; + STRING szEntDisk [_MAX_LENGTH]; + STRING szMsg [_MAX_LENGTH]; +begin + bDone = FALSE; + nDisk = 1; + while ( !bDone ) + + nRet = FileSetPerform ( sFileset, nDisk ); + switch ( nRet ) + case FS_TONEXTDISK: + if nDisk > 0 then + NumToStr( szExt, nDisk ); + szTemp = szTemp + szExt ; + switch( nDisk ) + case 1 : szEntDisk = STR_INSERTDISK + STR_TAGDISK1; + szTemp = "diskid.1"; + endswitch; + SetDialogTitle ( DLG_ENTER_DISK, "Cambio disco" ); + SetDialogTitle ( DLG_CANCEL, "Uscita" ); + Suppress( ENTERDISK_ERRMSG, DISABLE ); + bRightDisk = FALSE; + while( !bRightDisk ) + nRet = EnterDisk( szEntDisk, szTemp ); + switch( nRet ) + case DISKID: + _Attenzione( "Indicazione di unita' non valida." ); + case BADPATH: + _Attenzione( "Indicazione di sentiero non valida." ); + case DRIVEOPEN: + _Attenzione( "Inserire un dischetto nella unita' indicata!" ); + case BADTAGFILE: + _Attenzione( "Il disco inserito non e' corretto. Inserire il disco richiesto." ); + case CANCEL: + _ExitOnConfirm( ); + case OK: + bRightDisk = TRUE; + endswitch; + endwhile; + endif; + case FS_OPERROR: + Sprintf( szMsg, "E' stato rilevato un errore copiando il file %s. Il file non e' stato copiato.\n\nErrore FS_OPERROR.", ERRORFILENAME ); + _Errore( szMsg ); + case FS_GENERROR: + Sprintf( szMsg, "E' stato rilevato un errore copiando il file %s. Il file non e' stato copiato.\n\nErrore FS_GENERROR.", ERRORFILENAME ); + _Errore( szMsg ); + case FS_TARGETREADONLY: + szMsg="Impossibile scrivere nella directory di destinazione."; + _Errore( szMsg ); + case FS_INCORRECTDISK: + _Attenzione( "Disco non valido.\n\nInserire il disco corretto." ); + case FS_DISKONEREQUIRED: + szEntDisk = STR_INSERTDISK + STR_TAGDISK1; + _Attenzione( szEntDisk ); + case FS_RESETREQUIRED: + _Errore( "Impossibile copiare il file a causa di un errore interno." ); + case FS_OUTOFSPACE: + szMsg= "Lo spazio su disco non e' stato sufficiente per completare la copia dei files.\n\nErrore FS_OUTOFSPACE."; + _Errore( szMsg ); + case FS_DONE: + bDone = TRUE; + default : + if ( nRet < 0 ) then + szMsg = "Si e' verificato un errore copiando e decomprimendo il file " ^ ERRORFILENAME; + _Errore( szMsg ); + endif; + endswitch; + endwhile; + FileSetEndPerform ( sFileset); +end; + +// aggiorna il registry (o il ProgramManager) +function _UpdateRegistry( ) + STRING szItemName [_MAX_LENGTH], + szFolder [_MAX_LENGTH], + szCmdLine [_MAX_LENGTH], + szIconPath [_MAX_LENGTH], + szWorkingDir[_MAX_LENGTH]; +begin + Enable( HOURGLASS ); + // Mostra Program Manager + AppCommand( PROGMAN, CMD_RESTORE ); + // Aggiunge il gruppo di programmi ed i programmi + szFolder="EasyCAMPO"; + ShowGroup (szFolder , SW_NORMAL ); + if ( TRUE) then + // Aggiunge EasyCAMPO Program Manager + szItemName = "EasyCAMPO"; + szCmdLine = szAppPath ^ "\\BA0.EXE"; + szIconPath = szCmdLine; + AddFolderIcon( szFolder, szItemName, szCmdLine, "", szIconPath, 0, "", REPLACE ); + //AddProgItemEx ( szFolder, szItemName, szCmdLine, "", szIconPath, 0, "", REPLACE ); + endif; + AppCommand( PROGMAN, CMD_MINIMIZE ); + Disable( HOURGLASS ); +end; + +//----------------------------------------------------------------------------- +function _CambiaDirectory( ) + STRING szText[ _MAX_LENGTH ]; + STRING szModifiedPath[ _MAX_LENGTH ]; + STRING szUserSelectedDrive[ _MAX_LENGTH ]; + STRING szIncorrectPath[ _MAX_LENGTH ]; +begin + szText = STR_TEXT1; + SetDialogTitle( DLG_ASK_PATH, "Directory per installare i programmi" ); + if ( AskPath( szText , szAppPath, szModifiedPath ) = OK ) then + StrToUpper( szModifiedPath, szModifiedPath ); + GetDisk( szModifiedPath, szUserSelectedDrive ); + if ( Is ( VALID_PATH, szModifiedPath ) = 1 ) then + if szAppPath != szModifiedPath then + szAppPath = szModifiedPath; + szDataPath = szAppPath ^ "DATI\\"; + endif; + szText = STR_DATATEXT1; + SetDialogTitle( DLG_ASK_PATH, "Directory per installare i dati" ); + if ( AskPath( szText , szDataPath, szModifiedPath ) = OK ) then + StrToUpper( szModifiedPath, szModifiedPath ); + GetDisk( szModifiedPath, szUserSelectedDrive ); + if ( Is ( VALID_PATH, szModifiedPath ) = 1 ) then + szDataPath = szModifiedPath; + else + szIncorrectPath = STR_INVALID_PATH + "\n" + szModifiedPath; + _Attenzione( szIncorrectPath ); + endif; + endif; + endif; + endif; +end; + +//----------------------------------------------------------------------------- +// copia il file PRASSI.INI +function _CopiaPRASSIINI( ) + STRING szPath[_MAX_LENGTH], szFileName[_MAX_LENGTH], szLine[ _MAX_LENGTH], szFC[ 2 ], szTmp[ _MAX_LENGTH]; + NUMBER nFlag, nFileIn, nFileOut, nLoop; + +begin + szPath = szDataPath ^ "CONFIG"; + szTmp = szPath ^ "PRASSI.INI"; + if ( ! Is( FILE_EXISTS, szTmp ) ) then + if ExistsDir( szPath ) = NOTEXISTS then + if ( CreateDir( szPath ) < 0 ) then + _Errore( "Impossibile creare la directory CONFIG sotto i dati!" ); + endif; + endif; + szFileName = "PRASSI.INI"; + OpenFileMode( FILE_MODE_APPEND ); + CreateFile( nFileOut, szPath, szFileName ); + OpenFileMode( FILE_MODE_NORMAL ); + szPath = szAppPath; + OpenFile( nFileIn, szPath, szFileName ); + nFlag = GetLine( nFileIn, szLine ); + while( nFlag = 0 ) + if szLine = "[Colors]" then + nLoop = 0; + while( nLoop = 0 ) + WriteLine( nFileOut, szLine ); + nFlag = GetLine( nFileIn, szLine ); + nLoop = nFlag; + if ( nLoop = 0 ) then + StrSub( szFC, szLine, 0, 1 ); + if ( szFC != "[" ) then + nFlag = GetLine( nFileIn, szLine ); + else + nLoop = 1; + endif; + endif; + endwhile; + else + if szLine = "[Font]" then + nLoop = 0; + while( nLoop = 0 ) + WriteLine( nFileOut, szLine ); + nFlag = GetLine( nFileIn, szLine ); + nLoop = nFlag; + if ( nLoop = 0 ) then + StrSub( szFC, szLine, 0, 1 ); + if ( szFC != "[" ) then + nFlag = GetLine( nFileIn, szLine ); + else + nLoop = 1; + endif; + endif; + endwhile; + else + nFlag = GetLine( nFileIn, szLine ); + endif; + endif; + endwhile; + CloseFile( nFileIn ); + CloseFile( nFileOut ); + endif; +end; + +//----------------------------------------------------------------------------- +// copia il file INSTALL.INI +function _CopiaINSTALLINI( ) + STRING szPath[_MAX_LENGTH], szFileName[_MAX_LENGTH], szLine[ _MAX_LENGTH], szFC[ 2 ], szTmp[ _MAX_LENGTH]; + STRING szSrcPath[_MAX_LENGTH]; + NUMBER nFlag, nFileOut, nLoop; +begin + if bInstallDemo then + szSrcPath= SRCDIR ^ ZIPDEMO_DIRECTORY; + else + szSrcPath= SRCDIR ^ ZIP_DIRECTORY; + endif; + szFileName = SRCDIR ^ "INSTALL.INI"; + szPath= szAppPath ^ "INSTALL.INI"; + + WriteProfString(szPath,"Main","DiskPath",szSrcPath); + GetProfString(szFileName,"Main","DiskSize",szTmp); + WriteProfString(szPath,"Main","DiskSize",szTmp); + // ****** + if bInstallDemo then + szTmp = "X"; + else + szTmp = " "; + endif; + szPath=szAppPath ^ "install.ini"; + if WriteProfString(szPath,"Main","Demo",szTmp) < 0 then + _Attenzione("Impossibile scrivere il tipo della versione su install.ini"); + endif; +end; + +//----------------------------------------------------------------------------- +function _ProgramPrologue() +begin + // setta lo sfondo + // Abilita il pulsante Exit + // Disabilita lo screen-saver + // Mostra una immagine nell'angolo in alto a destra + _GetOSName( ); // Reperisce il nome del sistema operativo in szOSName + SetDialogTitle (DLG_ASK_OPTIONS, "Seleziona i componenti"); + SetDialogTitle (DLG_ASK_TEXT, ""); + SetDialogTitle (DLG_ASK_YESNO, "Domanda"); + SetDialogTitle (DLG_ENTER_DISK, "Setup ha bisogni del prossimo disco"); + SetDialogTitle (DLG_MSG_INFORMATION, "Messaggio"); + SetDialogTitle (DLG_MSG_SEVERE, "Errore fatale"); + SetDialogTitle (DLG_MSG_WARNING, "Attenzione"); + SetDialogTitle( DLG_ASK_PATH, "Scelta direttorio" ); + +end; + +function _ProgramEpilogue() +begin + _FineInstallazione( ); + _RiattivaScreenSaver( ); +end; + + + diff --git a/support/interni/src/aga/setup3.rul b/support/interni/src/aga/setup3.rul new file mode 100755 index 000000000..5dba9ab5b --- /dev/null +++ b/support/interni/src/aga/setup3.rul @@ -0,0 +1,387 @@ +//----------------------------------------------------------------------------- +//----------------------------------------------------------------------------- +//----------------------------------------------------------------------------- +// funzioni specifiche di basso livello +/*---------------------------------------------------------------------------*\ + * + * Function: CheckRequirements + * + * Purpose: This function will check all minimum requirements for the + * application being installed. If any fail, then the user + * is informed and the installation is terminated. + * + * + * Input: + * + * Returns: + * + * Comments: +\*---------------------------------------------------------------------------*/ + +function _CheckRequirements() +number nvDx, nvDy; +number nvVersion; +STRING szResult; +begin + // Check screen resolution. + GetExtents( nvDx, nvDy ); + if (nvDy < 480) then + MessageBox( "Questo programma richiede un video VGA o superiore.", WARNING ); + exit; + endif; +end; + +//----------------------------------------------------------------------------- +function _SetupScreen() + number nDx, nDy; +begin + GetExtents( nDx, nDy ); + + Enable( FULLWINDOWMODE ); + + Enable( INDVFILESTATUS ); + Enable( BITMAP256COLORS ); + Enable( DIALOGCACHE ); + + SetTitle( "Installazione di " + APP_NAME, 24, WHITE ); + + SetColor( BACKGROUND, BK_BLUE ); // Dark blue. + SetColor( STATUSBAR, BLUE ); // Bright blue. + + SetTitle( "Setup", 0, BACKGROUNDCAPTION ); // Caption bar text. + + Enable( BACKGROUND ); + + Delay( 1 ); + +end; + + +//----------------------------------------------------------------------------- +function _ShowExitDialog( nDLGID ) + NUMBER nGoOut, nRet, nHwnd; +begin + _CreateDLG ( "DLG_TMP", nDLGID, HWND_INSTALL ); + nGoOut = FALSE; + while nGoOut = FALSE + nRet = WaitOnDialog( "DLG_TMP"); + if ( nRet = DLG_ERR ) then + _Attenzione( STR_ERR_DLG ); + nGoOut = TRUE; + endif; + switch( nRet ) + case IDD_CONTINUE: + nGoOut = TRUE; + case DLG_CLOSE: + nGoOut = TRUE; + endswitch; + endwhile; + EndDialog( "DLG_TMP" ); + ReleaseDialog( "DLG_TMP" ); +end; + +//----------------------------------------------------------------------------- +function _SettaFlagNet( ) +begin + return AskOptions(EXCLUSIVE, "L'installazione sul PC puo' essere indipendente o basarsi su una installazione su server di rete. \n I programmi di EasyCAMPO ", + "vanno installati sul disco locale", bProgrammiServer, + "si trovano sul server di rete", bProgrammiServer ); +end; + +//----------------------------------------------------------------------------- +// +function _FindExistingInst(szPrevPath ) +begin + _CercaFileOvunque( "PRASSI.AUT",szPrevPath); + if (szPrevPath!="") then + ParsePath(szPrevPath,szPrevPath,PATH); + return TRUE; + else + return FALSE; + endif; +end; + +function _CheckExistingInst(szPrevPath ) +begin + szPrevPath = szPrevPath ^ "PRASSI.AUT"; + return Is( FILE_EXISTS, szPrevPath ); +end; + +function _CheckExistingData(szDataPath ) +begin + szDataPath = szDataPath ^ "COM\\"; + return Is( PATH_EXISTS, szDataPath ); +end; +//----------------------------------------------------------------------------- +// determina la presenza di una installazione ricercando il file passato +function _PrimaInstallazione( szTagFile, nPrimaInst, szPrevPath ) + STRING szTmp[512]; +begin + nPrimaInst = 0; + _CheckExistingInst(szPrevPath ); + + if szPrevPath != "" then + ParsePath( szPrevPath, szPrevPath, PATH ); + Sprintf( szTmp, STR_NOTFIRST1, szPrevPath ); + szTmp = szTmp + STR_NOTFIRST2; + SetDialogTitle(DLG_ASK_YESNO, "Attenzione" ); + if AskYesNo( szTmp, NO ) then + nPrimaInst = 2; + else + nPrimaInst = 1; + endif; + endif; + + if nPrimaInst = 2 then + _CambiaDirectory( ); // richiede di cambiare directory o confermare la sovrascrittura + endif; + +end; + +//----------------------------------------------------------------------------- +function _PreviewBatch( ) + NUMBER nFile, nGoOut, nRet, pList, nFlag, nCurFiles, nNr; + STRING szAuto, szConf, szWinIni, szTemp, szTemp1; +begin + _CreateDLG( "DLG_BATCH", 110, HWND_INSTALL ); + szAuto = ""; + szConf = ""; + szWinIni = ""; + if (szOSName != "3.95") then + szAuto = szAuto + STR_SHARE; + szAuto = szAuto + "\n"; + endif; + szAuto = szAuto + STR_TEMP; + szAuto = szAuto + "\n"; + if bProgrammiServer then + szAuto = szAuto + "SET PREFPATH=" + DEFAULT_LOCALPATH + "\\PREFIX.TXT"; + szAuto = szAuto + "\n"; + endif; + szTemp = "C:\RESET_HL.EXE"; + szAuto = szAuto + szTemp; + szAuto = szAuto + "\n"; + EzConfigGetValue( "FILES", nCurFiles ); + if nCurFiles < NUM_FILES_IN_CONFIG then + szConf = szConf + "FILES="; + NumToStr( szTemp, NUM_FILES_IN_CONFIG ); + szConf = szConf + szTemp; + szConf = szConf + "\n"; + endif; + szTemp1 = WINDIR ^ "WIN.INI"; + nNr = GetProfString(szTemp1,"FaxMan,EASYFAX","Application",szTemp); + if (nNr < 0 || szTemp = "") then + szWinIni = "[ports]\n"; + szWinIni = szWinIni + "EASYFAX=\n"; + szWinIni = szWinIni + "[FaxMan,EASYFAX]\n"; + szTemp = szAppPath+"bafax.exe"; + szWinIni = szWinIni + "Application=" + szTemp + "\n"; + szWinIni = szWinIni + "[PrinterPorts]\n"; + szWinIni = szWinIni + "FaxMan=fmfaxdrv,EASYFAX,5,5\n"; + szWinIni = szWinIni + "[devices]\n"; + szWinIni = szWinIni + "FaxMan=fmfaxdrv,EASYFAX\n"; + endif; + if szAuto = "" then + szAuto = "Nessuna modifica."; + endif; + if szConf = "" then + szConf = "Nessuna modifica."; + endif; + if szWinIni = "" then + szWinIni = "Nessuna modifica."; + endif; + nGoOut = FALSE; + while nGoOut = FALSE + nRet = WaitOnDialog( "DLG_BATCH"); + if ( nRet = DLG_ERR ) then + _Attenzione( STR_ERR_DLG ); + nGoOut = TRUE; + endif; + switch( nRet ) + case DLG_INIT: + CtrlSetText( "DLG_BATCH", 10, szAuto ); + CtrlSetText( "DLG_BATCH", 20, szConf ); + CtrlSetText( "DLG_BATCH", 30, szWinIni ); + case IDD_CONTINUE: + nRet = TRUE; + nGoOut = TRUE; + case 2: + nRet = FALSE; + nGoOut = TRUE; + case DLG_CLOSE: + nGoOut = TRUE; + endswitch; + endwhile; + EndDialog( "DLG_BATCH" ); + ReleaseDialog( "DLG_BATCH" ); + return nRet; +end; + + +//----------------------------------------------------------------------------- +// Funzione che mostra un dialog box di benvenuto +function _Benvenuto( ) + NUMBER nGoOut, nRet, nHwnd; +begin + _CreateDLG( "DLG_WELCOME", DLG_WELCOME, HWND_INSTALL ); + nGoOut = FALSE; + while nGoOut = FALSE + nRet = WaitOnDialog( "DLG_WELCOME"); + if ( nRet = DLG_ERR ) then + _Attenzione( STR_ERR_DLG ); + nGoOut = TRUE; + endif; + switch( nRet ) + case IDD_EXIT: + _ExitOnConfirm( ); + case IDD_CONTINUE: + nGoOut = TRUE; + case DLG_CLOSE: + nGoOut = TRUE; + endswitch; + endwhile; + EndDialog( "DLG_WELCOME" ); + ReleaseDialog( "DLG_WELCOME" ); +end; +//----------------------------------------------------------------------------- +function _CopiaRESETHL( ) +begin + VarSave(SRCTARGETDIR); + TARGETDIR = "C:\\"; + SRCDIR = szAppPath; + CopyFile( "RESET_HL.EXE", "RESET_HL.EXE" ); + VarRestore(SRCTARGETDIR); +end; +//----------------------------------------------------------------------------- +function _RemoveHDLOCK( ) +begin + // HARDLOCK.VXD e' necessario solo su Win95, +// si è scoperto che è sempre necessario +// if (szOSName != "3.95") then +// DeleteFile("HARDLOCK.VXD"); +// endif; +end; +//----------------------------------------------------------------------------- +function _ForceAttrib4Dll( ) +begin + // Forza gli attributi di alcuni file per evitare che siano a sola lettura: + szTmp = szAppPath ^ "HARDLOCK.FLL"; + _Cambia_Attributi(szTmp); + szTmp = szAppPath ^ "AGA.FLL"; + _Cambia_Attributi(szTmp); + szTmp = szAppPath ^ "AGALIGHT.FLL"; + _Cambia_Attributi(szTmp); + szTmp = szAppPath ^ "FOXW2600.ESL"; + _Cambia_Attributi(szTmp); + szTmp = szAppPath ^ "AL100.DLL"; // Da cambiare se cambia versione + _Cambia_Attributi(szTmp); + szTmp = szAppPath ^ "CB5.DLL"; + _Cambia_Attributi(szTmp); + szTmp = szAppPath ^ "DEVPRN.DLL"; + _Cambia_Attributi(szTmp); + szTmp = szAppPath ^ "DLLGFM.DLL"; + _Cambia_Attributi(szTmp); + szTmp = szAppPath ^ "MSAES110.DLL"; + _Cambia_Attributi(szTmp); + szTmp = szAppPath ^ "MSAJT112.DLL"; + _Cambia_Attributi(szTmp); + szTmp = szAppPath ^ "MSAJT200.DLL"; + _Cambia_Attributi(szTmp); + szTmp = szAppPath ^ "VBDB300.DLL"; + _Cambia_Attributi(szTmp); + szTmp = szAppPath ^ "VBRUN300.DLL"; + _Cambia_Attributi(szTmp); + szTmp = szAppPath ^ "XBS200.DLL"; + _Cambia_Attributi(szTmp); +end; + +//----------------------------------------------------------------------------- +// chiede conferma per l'uscita ed esce +function _ExitOnConfirm( ) +begin + if ! _Verifica( "Desideri veramente terminare la installazione ?" ) then + return; + endif; + _ShowExitDialog( DLG_EXITQUIT ); + exit; +end; +//----------------------------------------------------------------------------- +function _FineInstallazione( ) + STRING szRunProgram[ _MAX_LENGTH ]; + LONG lGoOut, lRet, lHwnd, lFlag; +begin + _CreateDLG( "DLG098", ID_DLG098, HWND_INSTALL ); + lGoOut = FALSE; + while lGoOut = FALSE + lRet = WaitOnDialog("DLG098"); + if ( lRet = DLG_ERR ) then + _Attenzione( STR_ERR_DLG ); + lGoOut = TRUE; + endif; + switch( lRet ) + case DLG_INIT: + lHwnd = CmdGetHwndDlg( "DLG098" ); + if nSystemFileModified then + CtrlSetText( "DLG098", ID_DLG098_RUN, "Riavvia il computer" ); + CtrlSetText( "DLG098", 1004, "I files di sistema sono cambiati.\nOccorrera' riavviare il computer perche' le modifiche siano attive." ); + endif; + case ID_DLG098_RUN: + lFlag = FALSE; + lGoOut = TRUE; + case ID_DLG098_EXIT: + lFlag = TRUE; + lGoOut = TRUE; + case DLG_CLOSE: + lGoOut = TRUE; + endswitch; + endwhile; + EndDialog( "DLG098" ); + ReleaseDialog( "DLG098" ); + if ( lFlag = FALSE ) then + if nSystemFileModified then + System( SYS_BOOTMACHINE ); + else + // ChangeDirectory(szAppPath); + // szRunProgram = szAppPath ^ "\\BA1.EXE -0 C"; + // LaunchApp( szRunProgram , "" ); + endif; + return TRUE; + else + return FALSE; + endif; +end; + +function _CanOverwrite( ) + BOOL bRetv; + NUMBER nTemp; + STRING szPath[256],szTemp[80],szJunk[80]; +begin + bRetv=FALSE; + szPath=szDataPath ^ "\\CONFIG"; + szTemp=szPath ^ DATATYPE_FILE; + if ( Is( FILE_EXISTS, szTemp ) ) then + OpenFileMode( FILE_MODE_NORMAL ); + OpenFile( nTmp, szPath, DATATYPE_FILE); + if GetLine( nTmp, szTemp ) = 0 then + if szTemp = INST_DEMO then + bRetv=_Verifica("Il direttorio indicato contiene dati \ndi una precedente installazione demo.\n\nConfermi la sovrascrittura"); + + elseif szTemp = INST_AUTOFORM then + if sInstType = INST_ENVIRONMENT || sInstType = INST_AUTOFORM then + bRetv=_Verifica("Il direttorio indicato contiene i dati \ndi una precedente installazione di autoformazione.\n\nConfermi la sovrascrittura"); + else + MessageBox("Impossibile scrivere i dati nel direttorio indicato.\nIl direttorio contiene gia' i dati di una precedente installazione \ndi autoformazione.",SEVERE); + endif; + + elseif szTemp = INST_ENVIRONMENT then + MessageBox("Impossibile scrivere i dati nel direttorio indicato.\nIl direttorio contiene gia' i dati di una precedente installazione.",SEVERE); + endif; + else + MessageBox( "Il direttorio indicato contiene dati \ndi una precedente installazione.",SEVERE); + endif; + CloseFile( nTmp ); + else + MessageBox( "Impossibile installare. Il direttorio indicato contiene dati \ndi una precedente installazione.",SEVERE); + endif; + + return bRetv; +end; diff --git a/support/interni/src/aga/setup4.rul b/support/interni/src/aga/setup4.rul new file mode 100755 index 000000000..51d74105b --- /dev/null +++ b/support/interni/src/aga/setup4.rul @@ -0,0 +1,163 @@ +//----------------------------------------------------------------------------- +//----------------------------------------------------------------------------- +//----------------------------------------------------------------------------- +// UTILITY VARIE +//----------------------------------------------------------------------------- +function _Errore( szErrorString ) +begin + SetDialogTitle( DLG_MSG_SEVERE, "Errore fatale!" ); + MessageBox( szErrorString, SEVERE ); + _ShowExitDialog( DLG_EXITFAILURE ); + exit; +end; +//----------------------------------------------------------------------------- +function _Attenzione( szWarningString ) +begin + SetDialogTitle( DLG_MSG_WARNING, "Attenzione!" ); + MessageBox( szWarningString, WARNING ); +end; + +//----------------------------------------------------------------------------- +function _Verifica( szQuestion ) + NUMBER nRet; +begin + SetDialogTitle( DLG_ASK_YESNO, "Verifica" ); + nRet = AskYesNo( szQuestion, NO ); + return nRet; +end; +//----------------------------------------------------------------------------- +function _MostraModelessDialog( ) + NUMBER nHwnd, nRet, nMess; +begin + _CreateDLG ( "DLG_PLEASEWAIT", DLG_PLEASEWAIT, HWND_INSTALL ); + nMess = WaitOnDialog( "DLG_PLEASEWAIT" ); + if ( nMess = DLG_ERR ) then + _Attenzione( STR_ERR_DLG ); + endif; + nHwnd = CmdGetHwndDlg( "DLG_PLEASEWAIT" ); + nRet = ShowWindow ( nHwnd, 1 ); + if ( nRet = -1 ) then + _Attenzione( "Errore in ShowWindow" ); + endif; +end; +//----------------------------------------------------------------------------- +function _SettaModelessDialog( szText ) +begin + CtrlSetText( "DLG_PLEASEWAIT", IDD_MLTEXT, szText ); +end; +//----------------------------------------------------------------------------- +function _NascondiModelessDialog( ) +begin + EndDialog( "DLG_PLEASEWAIT" ); + ReleaseDialog( "DLG_PLEASEWAIT" ); +end; + +//----------------------------------------------------------------------------- +// Funzione che termina se la quantità di memoria è minore di quella richiesta +function _RichiediMemoria( nReq ) + NUMBER nExMem; + STRING szExMem[_MAX_LENGTH]; +begin + GetSystemInfo( EXTENDEDMEMORY, nExMem, szExMem ); + if nReq >= nExMem then + _Errore( STR_NOTENUFEXMEM ); + endif; +end; +//----------------------------------------------------------------------------- +function _NToStringKB( nKB, szValue ) +begin + NumToStr( szValue, nKB ); + szValue = szValue + " Kb"; +end; + +//----------------------------------------------------------------------------- +function _DeSlash( szSource, szDest ) + NUMBER nLen; + STRING szTemp; +begin + nLen = StrLength( szSource ); + StrSub( szTemp, szSource, nLen - 1, 1 ); + if szTemp = "\\" then + StrSub( szDest, szSource, 0, nLen - 1 ); + else + szDest = szSource; + endif; +end; +//----------------------------------------------------------------------------- +function _CercaFileOvunque( szNomeFile, szRet ) + NUMBER nRet1, nRet2, listDirs, listDrive; + STRING szDir[_MAX_LENGTH], szMLText[_MAX_LENGTH], szDrive[_MAX_LENGTH]; +begin + _MostraModelessDialog( ); + listDrive = ListCreate( STRINGLIST ); + if ( listDrive = LIST_NULL ) then + _Errore( "Errore fatale in ListCreate(listDrive)" ); + _NascondiModelessDialog( ); + endif; + if ( GetValidDrivesList( listDrive, FIXED_DRIVE, 0 ) < 0 ) then + _Errore( "Errore fatale in GetValidDriveList" ); + _NascondiModelessDialog( ); + endif; + nRet1 = ListGetFirstString( listDrive, szDrive ); + while ( nRet1 != END_OF_LIST ) + szMLText = "Verifica di una precedente installazione sul drive " + szDrive + ": ..."; + // szMLText = szMLText; + _SettaModelessDialog( szMLText ); + szDrive = szDrive + ":\\"; + if ( FindAllFiles( szDrive, szNomeFile, szRet, RESET ) = 0 ) then + _NascondiModelessDialog( ); + return; + endif; + nRet1 = ListGetNextString( listDrive, szDrive ); + endwhile; + ListDestroy( listDrive ); + _NascondiModelessDialog( ); + szRet = ""; + return; +end; +//----------------------------------------------------------------------------- +function _DisattivaScreenSaver( ) +begin + bSCREENSAVER = _WinSubCheckScreenSaver( ); + _WinSubScreenSaver( FALSE ); +end; +//----------------------------------------------------------------------------- +function _RiattivaScreenSaver( ) +begin + if bSCREENSAVER then + _WinSubScreenSaver( TRUE ); + endif; +end; +//----------------------------------------------------------------------------- +// Reperisce il nome del sistema operativo +function _GetOSName( ) + NUMBER nResult; +begin + VarSave(SRCTARGETDIR); + TARGETDIR = WINDIR ^ "SYSTEM"; + GetSystemInfo(WINMAJOR,nResult,szOSName); + VarRestore(SRCTARGETDIR); +end; + +//----------------------------------------------------------------------------- +function _CreateDLG( szDLG, iDLG_ID, lHwnd ) + STRING szSupportDLL [ _MAX_LENGTH ]; +begin + szSupportDLL = SUPPORTDIR ^ "\\PSETUP.DLL"; + if ( DefineDialog( szDLG, 0 , szSupportDLL, iDLG_ID, "", HWND_DESKTOP, lHwnd, DLG_MSG_STANDARD | DLG_CENTERED ) ) then + _Errore( "Errore interno. Impossibile creare una finestra di dialogo.\nInstallazione terminata." ); + endif; +end; + +//----------------------------------------------------------------------------- +function _Cambia_Attributi(szS0) + STRING szS1[_MAX_LENGTH]; +begin + if ( Is( FILE_EXISTS, szS0 ) ) then + if (SetFileInfo(szS0,FILE_ATTRIBUTE,FILE_ATTR_NORMAL|FILE_ATTR_ARCHIVED,"") < 0) then + szS1 = "Impossibile cambiare i permessi ad " ^ szS0; + MessageBox(szS1,WARNING); + endif; + endif; +end; + diff --git a/support/interni/src/aga/winsub.rul b/support/interni/src/aga/winsub.rul new file mode 100755 index 000000000..ee21ea2a5 --- /dev/null +++ b/support/interni/src/aga/winsub.rul @@ -0,0 +1,917 @@ +//----------------------------------------------------------------------------- +// InstallSHIELD Sample Files +// Copyright (c) 1990-1994, Stirling Technologies, Inc. All Rights Reserved +//----------------------------------------------------------------------------- + +//----------------------------------------------------------------------------- +// FILE: WINSUB.RUL +// +// PURPOSE: +// This script interfaces to several Windows APIs. +// For example, WinSubIsWindow (hWnd) interfaces to Windows +// IsWindow API. Please refer to IsWindow API in Windows +// Programmer's Manual for the detailed description. +// +// RESOURCE: NONE +// +// RELATED FILES: WINSUB.H +// +// MAIN FUNCTION CALLS: +// _WinSubGetModuleHandle ( szModule ); +// Retrieves the handle of the specified module. +// +// _WinSubShowCursor ( nShow ); +// This function shows or hides the cursor. +// +// _WinSubShowWindow ( hWnd, nShow ); +// This function sets the given window's visibility state. +// +// _WinSubFocusControl ( hWnd, nBtnId ); +// This function sets the input focus to the given child window. +// all subsequent keyboard input is directed to this child window. +// The child window, if any, that previously had the input focus +// loses it. +// +// _WinSubFocusWindow ( hWnd ); +// This function sets the input focus to the given window. +// all subsequent keyboard input is directed to this window. The +// window, if any, that previously had the input focus loses it. +// +// _WinSubEnableControl ( hWnd, nBtnID, nEnable ); +// This function enables or disables mouse and keyboard input to +// the given window or control. When input is disabled, the window +// ignores input such as mouse clicks and key presses. When input +// is enabled, the window processes all input. +// +// _WinSubGetChildWindow ( hWnd, nBtnID ); +// This function retrieves the handle of a control that is in the +// given dialog box. +// +// _WinSubEnableWindow ( INT, INT ); +// This function enables or disables mouse and keyboard input to +// the given window or control. When input is disabled, the window +// ignores input such as mouse clicks and key presses. When input +// is enabled, the window processes all input. +// +// _WinSubSetWindowTitle ( hWnd, szText ); +// This function sets the given window's title to the specified text. +// +// _WinSubCenterWindow ( hWnd ); +// This function changes the position and dimensions to be the center +// of the screen. +// +// _WinSubIsWindow ( hWnd ); +// This function determines whether the given window handle is valid. +// +// _WinSubGetWindowRect ( hWnd, nOX, nOY, nSX, nSY ); +// This function retrieves the dimensions of the bounding rectangle +// of a given window. +// +// _WinSubGetClientRect ( hWnd, nOX, nOY, nSX, nSY ) +// This function retrieves the client coordinates of a window's client +// area. +// +// _WinSubSetWindowPos ( hWnd, nNX, nNY, nSX, nSY, sFlags ) +// This function changes the size, position, and Z-order of child, +// pop-up, and top-level windows. +// +// _WinSubMoveWindow ( hWnd, nNX, nNY, nSX, nSY, sFlags ) +// This function changes the position and dimensions of a window. +// +// _WinSubPostMessage ( hWnd, nCmd, sParam1, lParam2 ) +// This function posts a message in a window's message queue and +// then returns without waiting for the corresponding window to process +// the message. +// +// _WinSubScreenSaver ( TurnOnOff ); +// This function checks to see the global variable SCREENSAVER. If it +// is true then sets the state of the screen saver otherwise does nothing. +// +// _WinSubCheckScreenSaver ( ) +// This function sets a bool value SCREENSAVER global variable +// that indicates whether a screen saver is on or off. +// +// +//----------------------------------------------------------------------------- + + +//----------------------------------------------------------------------------- +// PARAMETERS +// szModules specifies module name to be tested. +// +// DESCRIPTION +// The routine returns 0 if module is not found, otherwise return -1. +// +// PURPOSE +// Retrieves the handle of the specified module. +//----------------------------------------------------------------------------- + +function _WinSubGetModuleHandle ( szModule ) + +STRING szString [255]; +NUMBER hInst; + +begin + + // Retrieve module handle + hInst = GetModuleHandle (szModule); + + if ( hInst = -1 ) then + _WinSubErrDLLFunc ( "GetModuleHandle" ); + return -1; + endif; + + hInst = hInst & 0x0000FFFF; + + if (hInst = 0) then + return 0; + else + return 1; + endif; + +end; + +//----------------------------------------------------------------------------- +// PARAMETER: +// nShow specifies whether the display count to be increased +// or decreased. The display count is increased if nShow is +// nonzero. Otherwise, it is decreased. The cusor is displayed +// only if the display count is greater than or equal to zero. +// PURPOSE +// This function shows or hides the cursor. +// +//----------------------------------------------------------------------------- +function _WinSubShowCursor ( nShow ) + +NUMBER nRet; + +begin + // Check if the given window handle is valid? + nRet = ShowCursor ( nShow ); + if ( nRet = -1 ) then + + _WinSubErrDLLFunc ( "ShowCursor" ); + nRet = -1; + + else + + // Need to mark out the higher 2 bytes + nRet = nRet & 0x0000FFFF; + if ( nRet != 0 ) then + nRet = 1; + endif; + + endif; + + return nRet; +end; + +//----------------------------------------------------------------------------- +// PARAMETERS: +// hWnd specifies the window +// nShow specifies how the window is to be shown which +// supports all SWP_* flags under Windows. +// PURPOSE +// This function sets the given window's visibility state. +// +//----------------------------------------------------------------------------- +function _WinSubShowWindow ( hWnd, nShow ) + +NUMBER nRet; + +begin + // Check if the given window handle is valid? + nRet = ShowWindow ( hWnd, nShow ); + if ( nRet = -1 ) then + + _WinSubErrDLLFunc ( "ShowWindow" ); + nRet = -1; + + else + + // Need to mark out the higher 2 bytes + nRet = nRet & 0x0000FFFF; + if ( nRet != 0 ) then + nRet = 1; + endif; + + endif; + + return nRet; +end; + +//----------------------------------------------------------------------------- +// PARAMETERS: +// hWnd specifies the window or the dialogbox. +// nBtnId specifies the identifier of the control. +// PURPOSE +// This function sets the input focus to the given child window. +// all subsequent keyboard input is directed to this child window. +// The child window, if any, that previously had the input focus +// loses it. +// +//----------------------------------------------------------------------------- +function _WinSubFocusControl ( hWnd, nBtnID ) + +INT hCtrl; +INT nRet; + +begin + + // Check window handle + if ( _WinSubIsWindow ( hWnd ) <= 0 ) then + return -1; + endif; + + // Retrieve child window handle + hCtrl = _WinSubGetChildWindow ( hWnd, nBtnID ); + if ( hCtrl <= 0 ) then + return -1; + endif; + + // Enable/disable the window + nRet = _WinSubFocusWindow ( hCtrl ); + + return nRet; +end; + +//----------------------------------------------------------------------------- +// PARAMETER: +// hWnd specifies the window +// PURPOSE +// This function sets the input focus to the given window. +// all subsequent keyboard input is directed to this window. The +// window, if any, that previously had the input focus loses it. +// +//----------------------------------------------------------------------------- +function _WinSubFocusWindow ( hWnd ) + +INT nRet; + +begin + + // Check window handle + if ( _WinSubIsWindow ( hWnd ) <= 0 ) then + return -1; + endif; + + // Check if the given window handle is valid? + nRet = SetFocus ( hWnd ); + if ( nRet = -1 ) then + + _WinSubErrDLLFunc ( "SetFocus" ); + nRet = -1; + + else + + // Need to mark out the higher 2 bytes + nRet = nRet & 0x0000FFFF; + if ( nRet != 0 ) then + nRet = 1; + endif; + + endif; + + return nRet; +end; + + +//----------------------------------------------------------------------------- +// PARAMETERS: +// hWnd specifies the window or the dialogbox. +// nBtnID specifies the identifier of the control. +// nEnable specifies to enable or to disable the control. +// PURPOSE +// This function enables or disables mouse and keyboard input to +// the given window or control. When input is disabled, the window +// ignores input such as mouse clicks and key presses. When input +// is enabled, the window processes all input. +// +//----------------------------------------------------------------------------- +function _WinSubEnableControl ( hWnd, nBtnID, nEnable ) + +INT hCtrl; +INT nRet; + +begin + + // Check window handle + if ( _WinSubIsWindow ( hWnd ) <= 0 ) then + return -1; + endif; + + // Retrieve child window handle + hCtrl = _WinSubGetChildWindow ( hWnd, nBtnID ); + if ( hCtrl <= 0 ) then + return -1; + endif; + + // Enable/disable the window + nRet = _WinSubEnableWindow ( hCtrl, nEnable ); + + return nRet; +end; + + +//----------------------------------------------------------------------------- +// PARAMETERS: +// hWnd specifies the window or the dialogbox. +// nBtnID specifies the identifier of the child window. +// PURPOSE +// This function retrieves the handle of a control that is in the +// given dialog box. +// +//----------------------------------------------------------------------------- +function _WinSubGetChildWindow ( hWnd, nBtnID ) + +INT hCtrl; + +begin + + // Check window handle + if ( _WinSubIsWindow ( hWnd ) <= 0 ) then + return -1; + endif; + + // Check if the given window handle is valid? + hCtrl = GetDlgItem ( hWnd, nBtnID ); + if ( hCtrl = -1 ) then + + _WinSubErrDLLFunc ( "GetDlgItem" ); + hCtrl = -1; + + else + + // Need to mark out the higher 2 bytes + hCtrl = hCtrl & 0x0000FFFF; + + endif; + + return hCtrl; + +end; + + +//----------------------------------------------------------------------------- +// PARAMETERS: +// hWnd specifies the window. +// nBtnID specifies to enable or to disable the window. +// PURPOSE +// This function enables or disables mouse and keyboard input to +// the given window or control. When input is disabled, the window +// ignores input such as mouse clicks and key presses. When input +// is enabled, the window processes all input. +// +//----------------------------------------------------------------------------- +function _WinSubEnableWindow ( hWnd, nEnable ) + +SHORT sFlag; +INT nRet; + +begin + + // Check window handle + if ( _WinSubIsWindow ( hWnd ) <= 0 ) then + return -1; + endif; + + // Setup flag + if ( nEnable = 0 ) then + sFlag = 0; + else + sFlag = 1; + endif; + + + // Check if the given window handle is valid? + nRet = EnableWindow ( hWnd, sFlag ); + if ( nRet = -1 ) then + + _WinSubErrDLLFunc ( "Enable" ); + nRet = -1; + + else + + // Need to mark out the higher 2 bytes + nRet = nRet & 0x0000FFFF; + if ( nRet != 0 ) then + nRet = 1; + endif; + + endif; + + return nRet; + +end; + + +//----------------------------------------------------------------------------- +// PARAMETERS: +// hWnd specifies the window. +// szText specifies the new caption text. +// PURPOSE +// This function sets the given window's title to the specified text. +// +//----------------------------------------------------------------------------- +function _WinSubSetWindowTitle ( hWnd, szText ) + +INT nRet; + +begin + + // Check window handle + if ( _WinSubIsWindow ( hWnd ) <= 0 ) then + return -1; + endif; + + + // Set window title + nRet = _WinSubSetWindowText ( hWnd, szText ); + + return nRet; +end; + + +//----------------------------------------------------------------------------- +// PARAMETER: +// hWnd is the window or the dialogbox to be centered. +// PURPOSE +// This function changes the position and dimensions to be the center +// of the screen. +// +//----------------------------------------------------------------------------- +function _WinSubCenterWindow ( hWnd ) + +INT nRet; +INT nOX, nOY, nSX, nSY; +INT nNX, nNY; +SHORT sFlags; + +begin + +// ## remove this line when hide/show dialogbox are supported + return 0; + + // Check window handle + if ( _WinSubIsWindow ( hWnd ) <= 0 ) then + return -1; + endif; + + // Retrieve window rect + _WinSubGetWindowRect ( hWnd, nOX, nOY, nSX, nSY ); + + // Retrieve screen extent + GetExtents ( nNX, nNY ); + + // Calculate new orig + nSX = nSX - nOX + 1; + nSY = nSY - nOY + 1; + nNX = ( nNX - nSX ) / 2; + nNY = ( nNY - nSY ) / 2; + + // Move the window + sFlags = 1; + nRet = _WinSubMoveWindow ( hWnd, nNX, nNY, nSX, nSY, sFlags ); + + return nRet; +end; + + +//----------------------------------------------------------------------------- +// PARAMETERS: +// hWnd specifies the window. +// szText specifies the new caption text. +// PURPOSE +// +//----------------------------------------------------------------------------- +function _WinSubSetWindowText ( hWnd, szText ) + +INT nRet; +POINTER pszText; + +begin + + // Check window handle + if ( _WinSubIsWindow ( hWnd ) <= 0 ) then + return -1; + endif; + + // Check if the given window handle is valid? + pszText = AddressString ( szText ); + nRet = SetWindowText ( hWnd, pszText ); + if ( nRet = -1 ) then + + _WinSubErrDLLFunc ( "SetWindowText" ); + nRet = -1; + + else + + nRet = 0 ; + + endif; + + return nRet; + +end; + + +//----------------------------------------------------------------------------- +// PARAMETER: +// hWnd is the window or the dialogbox to be centered. +// PURPOSE +// This function determines whether the given window handle is valid. +// +//----------------------------------------------------------------------------- +function _WinSubIsWindow ( hWnd ) + +INT nRet; + +begin + + // Check if the given window handle is valid? + nRet = IsWindow ( hWnd ); + if ( nRet = -1 ) then + + _WinSubErrDLLFunc ( "IsWindow" ); + nRet = -1; + + else + + // Need to mark out the higher 2 bytes + nRet = nRet & 0x0000FFFF; + if ( nRet != 0 ) then + nRet = 1; + endif; + + endif; + + return nRet; +end; + + +//----------------------------------------------------------------------------- +// PARAMETERS: +// (INPUT) +// hWnd specifies the window. +// (OUTPUT) +// nOX receives the X-coord. of the upper-left corner. +// nOY receives the Y-coord. of the upper-left corner. +// nSX receives the X-coord. of the lower-right corner. +// nSY receives the Y-coord. of the lower-right corner. +// PURPOSE +// This function retrieves the dimensions of the bounding rectangle +// of a given window. +// +//----------------------------------------------------------------------------- +function _WinSubGetWindowRect ( hWnd, nOX, nOY, nSX, nSY ) + +NUMBER nRet; +POINTER pRect; +WINRECTSTRUCT rect; +STRING szTemp [MAX_WINSUB_TMPSTRING_LENGTH]; + +begin + + // Check window handle + if ( _WinSubIsWindow ( hWnd ) <= 0 ) then + return -1; + endif; + + // Retrieve the address of the structure + pRect = AddressStruct ( rect ); + + // Retrieve window rect + nRet = GetWindowRect ( hWnd, pRect ); + if ( nRet = -1 ) then + + // Can not locate the function? + _WinSubErrDLLFunc ( "GetWindowRect" ); + nRet = -1; + + else + + // Separate each field of the rect structure + StructGet ( rect, "WINRECTSTRUCT", "origX", nOX, szTemp ); + StructGet ( rect, "WINRECTSTRUCT", "origY", nOY, szTemp ); + StructGet ( rect, "WINRECTSTRUCT", "relX" , nSX, szTemp ); + StructGet ( rect, "WINRECTSTRUCT", "relY" , nSY, szTemp ); + nRet = 0; + + endif; + + return nRet; +end; + + +//----------------------------------------------------------------------------- +// PARAMETERS: +// (INPUT) +// hWnd specifies the window. +// (OUTPUT) +// nOX receives 0. +// nOY receives 0. +// nSX receives the width of the window. +// nSY receives the height of the window. +// PURPOSE +// This function retrieves the client coordinates of a window's client +// area. +// +//----------------------------------------------------------------------------- +function _WinSubGetClientRect ( hWnd, nOX, nOY, nSX, nSY ) + +NUMBER nRet; +POINTER pRect; +WINRECTSTRUCT rect; +STRING szTemp [MAX_WINSUB_TMPSTRING_LENGTH]; + +begin + + // Check window handle + if ( _WinSubIsWindow ( hWnd ) <= 0 ) then + return -1; + endif; + + // Retrieve the address of the structure + pRect = AddressStruct ( rect ); + + // Retrieve window rect + nRet = GetClientRect ( hWnd, pRect ); + if ( nRet = -1 ) then + + // Can not locate the function? + _WinSubErrDLLFunc ( "GetClientRect" ); + nRet = -1; + + else + + // Separate each field of the rect structure + StructGet ( rect, "WINRECTSTRUCT", "origX", nOX, szTemp ); + StructGet ( rect, "WINRECTSTRUCT", "origY", nOY, szTemp ); + StructGet ( rect, "WINRECTSTRUCT", "relX" , nSX, szTemp ); + StructGet ( rect, "WINRECTSTRUCT", "relY" , nSY, szTemp ); + nRet = 0; + + endif; + + return nRet; +end; + + +//----------------------------------------------------------------------------- +// PARAMETERS: +// hWnd specifies the window. +// nNX specifies X-coord. of the new upper-left corner. +// nNY specifies Y-coord. of the new upper-left corner. +// nSX specifies the width of the window. +// nSY specifies the height of the window. +// sFlags supports all SWP_* available in SetWindowPos API. +// PURPOSE +// This function changes the size, position, and Z-order of child, +// pop-up, and top-level windows. +// +//----------------------------------------------------------------------------- +function _WinSubSetWindowPos ( hWnd, nNX, nNY, nSX, nSY, sFlags ) + +NUMBER nRet; + +begin + + // Check window handle + if ( _WinSubIsWindow ( hWnd ) <= 0 ) then + return -1; + endif; + + // Move window + nRet = SetWindowPos ( hWnd, 0, nNX, nNY, nSX, nSY, sFlags ); + if ( nRet = -1 ) then + + _WinSubErrDLLFunc ( "SetWindowPos" ); + nRet = -1; + + else + + nRet = 0; + + endif; + + return nRet; +end; + + +//----------------------------------------------------------------------------- +// PARAMETERS: +// hWnd specifies the window. +// nNX specifies X-coord. of the new upper-left corner. +// nNY specifies Y-coord. of the new upper-left corner. +// nSX specifies the width of the window. +// nSY specifies the height of the window. +// sFlags specifies whether to redraw the window. +// PURPOSE +// This function changes the position and dimensions of a window. +// +//----------------------------------------------------------------------------- +function _WinSubMoveWindow ( hWnd, nNX, nNY, nSX, nSY, sFlags ) + +NUMBER nRet; + +begin + +#ifdef CHECKWINDOW=1 + if ( _WinSubIsWindow ( hWnd ) <= 0 ) then + return -1; + endif; +#endif + + // Move window + nRet = MoveWindow ( hWnd, nNX, nNY, nSX, nSY, sFlags ); + if ( nRet = -1 ) then + + _WinSubErrDLLFunc ( "MoveWindow" ); + nRet = -1; + + else + + nRet = 0; + + endif; + + return nRet; +end; + + +//----------------------------------------------------------------------------- +// PARAMETERS: +// hWnd specifies the window. +// nCmd specifies the type of message posted. +// sParam1 specifies additional message information. +// lParam2 specifies additional message information. +// PURPOSE +// This function posts a message in a window's message queue and +// then returns without waiting for the corresponding window to process +// the message. +// +//----------------------------------------------------------------------------- +function _WinSubPostMessage ( hWnd, nCmd, sParam1, lParam2 ) + +NUMBER nRet; + +begin + + // Move window + nRet = PostMessage ( hWnd, nCmd, sParam1, lParam2 ); + if ( nRet = -1 ) then + + _WinSubErrDLLFunc ( "PostMessage" ); + nRet = -1; + + else + + nRet = 0; + + endif; + + return nRet; +end; + +//----------------------------------------------------------------------------- +// PARAMETERS: +// TurnOnOff Specifies whether to turn it on or off +// 1 implies TURNON +// 0 implies TURNOFF +// PURPOSE +// This function checks to see the global variable SCREENSAVER. If it +// is true then sets the state of the screen saver otherwise does nothing. +// +//----------------------------------------------------------------------------- +function _WinSubScreenSaver ( TurnOnOff ) + +NUMBER nRet; +NUMBER nTemp; + +begin + + nTemp = SPIF_UPDATEINIFILE | SPIF_SENDWININICHANGE ; + + if ( TurnOnOff = 1 ) then + + if ( bSCREENSAVER = 1 ) then + nRet = SystemParametersInfo ( + SPI_SETSCREENSAVEACTIVE, + TRUE, + NULL , + nTemp ); + endif; + + + elseif (TurnOnOff = 0) then + + if ( bSCREENSAVER = 1 ) then + nRet = SystemParametersInfo ( + SPI_SETSCREENSAVEACTIVE, + FALSE, + NULL , + nTemp ); + endif; + + endif; + + if ( nRet = -1 ) then + + _WinSubErrDLLFunc ( "ShowWindow" ); + nRet = -1; + + else + + // Need to mark out the higher 2 bytes + nRet = nRet & 0x0000FFFF; + if ( nRet != 0 ) then + nRet = 1; + endif; + + endif; + + return nRet; +end; + +//----------------------------------------------------------------------------- +// PURPOSE: +// Check to see if the screen saver is activated if it is then set the +// global variable SCREENSAVER to 1 if it is not then set the global +// variable SCREENSAVER to 0 +// PURPOSE +// This function sets a bool value SCREENSAVER global variable +// that indicates whether screen saving is on or off. +// +//----------------------------------------------------------------------------- + +function _WinSubCheckScreenSaver ( ) + +NUMBER nRet; +NUMBER nTemp; +INT nCheckScreenSaver; +POINTER pCheckScreenSaver; + +begin + + nTemp = SPIF_UPDATEINIFILE | SPIF_SENDWININICHANGE ; + + pCheckScreenSaver = AddressNumber( nCheckScreenSaver ); + + nRet = SystemParametersInfo ( + SPI_GETSCREENSAVEACTIVE, + 0 , + pCheckScreenSaver , + nTemp ); + + // check if the ScreenSaver is on or off + + + + if ( nCheckScreenSaver = TRUE ) then + + return 1; + + elseif ( nCheckScreenSaver = FALSE ) then + + return 0; + + endif; + + + if ( nRet = -1 ) then + + _WinSubErrDLLFunc ( "ShowWindow" ); + nRet = -1; + + else + + // Need to mark out the higher 2 bytes + nRet = nRet & 0x0000FFFF; + if ( nRet != 0 ) then + nRet = 1; + endif; + + endif; + + return nRet; +end; + +//----------------------------------------------------------------------------- +// PARAMETERS: +// szDLLFuncName specifies the DLL function name which returns -1. +// PURPOSE +// +//----------------------------------------------------------------------------- +function _WinSubErrDLLFunc ( szDLLFuncName ) + +STRING szMsg [MAX_WINSUB_MSGSTRING_LENGTH]; + +begin + + szMsg = "InstallSHIELD can not call DLL function: " + szDLLFuncName; + MessageBox ( szMsg, SEVERE ); + +end; + + + diff --git a/support/interni/unzip.pif b/support/interni/unzip.pif new file mode 100755 index 0000000000000000000000000000000000000000..adbcbd1c0ae5c2e675d6446cf21272f7a2abefa8 GIT binary patch literal 995 zcmZR08k$#?S)hOmG%z$U=*5KkMR^7o8|k@5xH8~UiBnvFL63AzD5fz`2lrYxGRT9lia zmzV=L1dZWSnw*)EsNkHRSDc@diY5u>G6T&G0NP`~q{C>#l+Gvy6a^+oC}?45VK~6_ O8r@;o3?fU6kpTd16;ogU literal 0 HcmV?d00001 diff --git a/support/interni/unzip32.exe b/support/interni/unzip32.exe new file mode 100755 index 0000000000000000000000000000000000000000..90c392e15bd4ac54b0911d6751a61e69ac53bdb6 GIT binary patch literal 71872 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 Q4Enb|l)VCWF#=Hk2hTjdWdHyG literal 0 HcmV?d00001 diff --git a/support/interni/zip.pif b/support/interni/zip.pif new file mode 100755 index 0000000000000000000000000000000000000000..1e0833798641bb97bc2162b13cdce1fa61357e30 GIT binary patch literal 995 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 S^VA1f!4}tD!_W7v@cb*?7@|4= literal 0 HcmV?d00001 diff --git a/support/interni/zipsplit.pif b/support/interni/zipsplit.pif new file mode 100755 index 0000000000000000000000000000000000000000..7e04f6eb91a553e8308ff5d7c1c8187e6e3c57c6 GIT binary patch literal 995 zcmZR08kJcPT#%DlqJR}NFf=ekc?JXr_;`lsxkk7$U{!@zP=G;?3|+`ZGEfNW85#ad z1~4$NQ)mw5+8-$RdO8RB2m8B)CMD>6wlu|e&D$%Xm)DwqIW_W!>* z(;A?gX#;>^;_Duy=i=i-E%Sk)2L~w(=niLPkYr$HIKl9OnTdf5E-S(UN-I2I9Fkg; zo0*rG12+VX;ZvHNnUbjBoS#>mpOcCv3Fa~b%?$wBW5A@tXv37wC