Patch level :

Files correlati     :
Ricompilazione Demo : [ ]
Commento            :


git-svn-id: svn://10.65.10.50/trunk@15574 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
luca 2007-08-23 13:18:25 +00:00
parent 30441f5706
commit 0c889d778e

View File

@ -398,6 +398,7 @@ CampoWizardPage1::CampoWizardPage1(wxWizard* parent) : CampoWizardPage(parent)
wxString strBody = wxT("<p>Questo programma vi guiderà passo a passo nell'installazione / aggiornamento del software.</p>"); wxString strBody = wxT("<p>Questo programma vi guiderà passo a passo nell'installazione / aggiornamento del software.</p>");
strBody += wxT("<p><u><b>Leggere attentamente le istruzioni</u> che saranno visualizzate nelle finestre di questo programma di installazione!</b></p>"); strBody += wxT("<p><u><b>Leggere attentamente le istruzioni</u> che saranno visualizzate nelle finestre di questo programma di installazione!</b></p>");
strBody += wxT("<p>Prima di proseguire con l'installazione / aggiornamento <u>assicurarsi di avere effettuato il login a Windows con un utente di tipo 'Amministratore' di sistema.</u></p>"); strBody += wxT("<p>Prima di proseguire con l'installazione / aggiornamento <u>assicurarsi di avere effettuato il login a Windows con un utente di tipo 'Amministratore' di sistema.</u></p>");
strBody += wxT("<p>In caso si desideri aggiornare una postazione tipo server di APPNAME su cui sia attivo il gestore dei servizi di APPNAME, arrestare prima tale gestore dei servizi.</p>");
SetHTMLText(strTitle, strBody); SetHTMLText(strTitle, strBody);
} }
@ -2015,8 +2016,13 @@ void CampoSetup::AssociateExtension(const wxFileName& strExeFile, const wxString
bool CampoSetup::CreateAutostartMode(const int iSrvAutostartMode, const wxString& strPath) bool CampoSetup::CreateAutostartMode(const int iSrvAutostartMode, const wxString& strPath)
{ {
//creazione dei filenames e dei path necessari in giro per la funzione
//filename (con path quindi) di Lurch.exe
wxFileName strExe(strPath, wxT("lurch.exe")); wxFileName strExe(strPath, wxT("lurch.exe"));
strExe.AppendDir("servers"); strExe.AppendDir("servers");
//stringa path della cartella Servers in base alle scelte dell'utente
const wxString strSrvPath = strPath + "\\servers";
switch (iSrvAutostartMode) switch (iSrvAutostartMode)
{ {
//esecuzione server come servizi (magia!) //esecuzione server come servizi (magia!)
@ -2027,12 +2033,18 @@ bool CampoSetup::CreateAutostartMode(const int iSrvAutostartMode, const wxString
wxString strValue = ReadLocalMachineRegistryKey("SYSTEM\\CurrentControlSet\\Services\\Lurch\\Parameters\\Application"); wxString strValue = ReadLocalMachineRegistryKey("SYSTEM\\CurrentControlSet\\Services\\Lurch\\Parameters\\Application");
//elimina un eventuale servizio precedente (senno' col cavolo che lo riesce a modificare!) //elimina un eventuale servizio precedente (senno' col cavolo che lo riesce a modificare!)
wxString strRemove = "instsrv Lurch REMOVE"; //utilizza il programma instsrv.exe dentro la cartella servers installata
const long lRemove = wxExecute(strRemove, wxEXEC_SYNC); // wxString strRemove = "instsrv Lurch REMOVE";
// const long lRemove = wxExecute(strRemove, wxEXEC_SYNC);
wxString strRemove = strSrvPath + "\\instsrv Lurch REMOVE";
const long lRemove = wxExecute(strRemove, wxEXEC_SYNC);
//aggiunge la voce ai servizi di windows (dentro strumenti di amministrazione) //aggiunge la voce ai servizi di windows (dentro strumenti di amministrazione)
wxString strCreateService = "instsrv Lurch "; //utilizza i programmi instrv.exe e srvany.exe dentro la cartella servers installata
strCreateService += wxGetCwd(); wxString strCreateService = strSrvPath + "\\instsrv Lurch ";
// strCreateService += wxGetCwd();
// strCreateService += "\\srvany.exe";
strCreateService += strSrvPath;
strCreateService += "\\srvany.exe"; strCreateService += "\\srvany.exe";
//esegue il programma di installazione servizi di Windows creando la voce //esegue il programma di installazione servizi di Windows creando la voce
const long lExec = wxExecute(strCreateService, wxEXEC_SYNC); const long lExec = wxExecute(strCreateService, wxEXEC_SYNC);
@ -2157,25 +2169,23 @@ void CampoSetup::OnTimer(wxTimerEvent& WXUNUSED(e))
wxFileName strPath = argv[0]; wxFileName strPath = argv[0];
strPath.SetCwd(); strPath.SetCwd();
const wxString& strDest = pWizard->GetPrgLocPath();
const wxFileName strExe(strDest, wxT("ba0.exe"));
//creazione dell'icona sul desktop
const bool bDesktopShortcut = pWizard->GetDesktopShortcut();
if (bDesktopShortcut)
CreateIcon(CSIDL_COMMON_DESKTOPDIRECTORY, strExe);
//tipo di installazione/aggiornamento //tipo di installazione/aggiornamento
const unsigned int uInstallationType = pWizard->GetInstallationType(); const unsigned int uInstallationType = pWizard->GetInstallationType();
const bool bNewInstallation = uInstallationType < 3;
//se nuova installazione deve anche creare la directory di destinazione //installazione server?
if (uInstallationType < 3) const bool bInstallLurch = uInstallationType == 1 && (pWizard->GetInstUseAuth() | pWizard->GetInstUseDict());
{ //cartelle selezionate dall'utente
//creazione della directory dei programmi const wxString& strPrgLocPath = pWizard->GetPrgLocPath();
CheckAndMakeDir(pWizard->GetPrgLocPath(), "programmi"); const wxString& strDataPath = pWizard->GetDataPath();
//creazione della directory dei dati //se nuova installazione deve anche creare la directory di destinazione
CheckAndMakeDir(pWizard->GetDataPath(), "dati"); if (bNewInstallation)
{
//creazione della directory dei programmi (compreso l'intero albero directory)
CheckAndMakeDir(strPrgLocPath, "programmi");
//creazione della directory dei dati (compreso l'intero albero directory)
CheckAndMakeDir(strDataPath, "dati");
} }
//copia del contenuto della cartella campo nella cartella di destinazione (installaz/aggiornam) //copia del contenuto della cartella campo nella cartella di destinazione (installaz/aggiornam)
@ -2188,72 +2198,86 @@ void CampoSetup::OnTimer(wxTimerEvent& WXUNUSED(e))
//..contando anche quanti sono e memorizzandoli in un array asFileList //..contando anche quanti sono e memorizzandoli in un array asFileList
const size_t uFilesToCopy = wxDir::GetAllFiles(strSourcePath.GetPath(), &asFilesList); const size_t uFilesToCopy = wxDir::GetAllFiles(strSourcePath.GetPath(), &asFilesList);
//prende la cartella di destinazione... //per ogni files da copiare controlla i path sorgente e destinazione(problema con sottodirectory tipo dati)
const wxString strDestPath = pWizard->GetPrgLocPath();
const wxString strDataPath = pWizard->GetDataPath();
//...e copia tutti i files nella cartella di destinazione, tranne i .ini che devono essere compilati
wxString strFileCurr; wxString strFileCurr;
const size_t nPathLenght = strSourcePath.GetPath().Len(); const size_t nPathLenght = strSourcePath.GetPath().Len();
for (size_t i = 0; i < uFilesToCopy; i++) for (size_t i = 0; i < uFilesToCopy; i++)
{ {
//files dei dati standard! /* che fare con i servers? copiare la directory comunque o saltarli?
if (asFilesList[i].Lower().Find("\\servers\\") > 0 && bInstallLurch)
{
strFileCurr = strPrgLocPath;
strFileCurr += asFilesList[i].Mid(nPathLenght);
}
else*/
//files dei dati standard! solo in caso di nuova installazione!!
if (asFilesList[i].Lower().Find("\\dati\\") > 0) if (asFilesList[i].Lower().Find("\\dati\\") > 0)
{ {
strFileCurr = strDataPath; if (bNewInstallation) //i DATI NON VANNO MAI installati in caso di aggiornamento!!!
strFileCurr += asFilesList[i].Mid(nPathLenght + 5); {
strFileCurr = strDataPath;
strFileCurr += asFilesList[i].Mid(nPathLenght + 5);
}
} }
else //files dei programmi else //files dei programmi
{ {
strFileCurr = strDestPath; strFileCurr = strPrgLocPath;
strFileCurr += asFilesList[i].Mid(nPathLenght); strFileCurr += asFilesList[i].Mid(nPathLenght);
} }
strFileCurr.MakeLower(); //copia i files nella cartella di destinazione (programmi,dati,cazzi e mazzi);se il nome del file..
//..di destinazione e' vuoto significa che non lo deve copiare!!
const wxFileName strFileName(strFileCurr); if (!strFileCurr.IsEmpty())
//i files .ini vanno trattati con i guanti
if (strFileName.GetExt() == ".ini")
{ {
const wxString strName = strFileName.GetName(); strFileCurr.MakeLower(); //minuscolizzazione di sicurezza
//campo.ini e install.ini vanno lasciati stare se aggiornamento!!! const wxFileName strFileName(strFileCurr);
if ((strName == "campo" || strName == "install") && strFileName.FileExists())
continue;
}
//eventuali sottodirectory le crea
const wxString strDir = strFileName.GetPath();
if (!wxDirExists(strDir))
wxMkdir(strDir);
if(!wxCopyFile(asFilesList[i], strFileCurr)) //i files .ini vanno trattati con i guanti (se esistono gia' non vanno copiati!!!)
{ if (strFileName.GetExt() == ".ini")
wxString strErr = "Impossibile copiare il file "; {
strErr += asFilesList[i]; const wxString strName = strFileName.GetName();
strErr += " in "; //campo.ini e install.ini vanno lasciati stare se aggiornamento!!!
strErr += strFileCurr; if ((strName == "campo" || strName == "install") && strFileName.FileExists())
strErr += "\nInstallazione interrotta!"; continue;
ErrorBox(strErr); }
break; //eventuali sottodirectory le crea (solo se hanno un nome)
} const wxString strDir = strFileName.GetPath();
if (!strDir.IsEmpty() && !wxDirExists(strDir))
wxMkdir(strDir);
} if(!wxCopyFile(asFilesList[i], strFileCurr))
{
wxString strErr = "Impossibile copiare il file ";
strErr += asFilesList[i];
strErr += " in ";
strErr += strFileCurr;
strErr += "\nInstallazione interrotta!";
ErrorBox(strErr);
break;
}
} //if (!strFileCurr.IsEmpty()..
} //for(size_t...
//adesso deve compilare i .ini se nuova installazione //adesso deve compilare il campo.ini se nuova installazione..
if (uInstallationType < 3) if (bNewInstallation)
{ {
} }
//..e modificare comunque l'install.ini
//solo se sta installando campo in postazione server e deve installare un gestore di servizi //solo se sta installando campo in postazione server e deve installare un gestore di servizi..
if (uInstallationType == 1) //..avvia la procedura della creazione dell'autostart(un casino)
if (bInstallLurch)
{ {
const bool bInstallLurch = pWizard->GetInstUseAuth() | pWizard->GetInstUseDict(); const int iSrvAutostartMode = pWizard->GetSrvAutostartMode();
if (bInstallLurch) CreateAutostartMode(iSrvAutostartMode, strPrgLocPath);
{
const int iSrvAutostartMode = pWizard->GetSrvAutostartMode();
CreateAutostartMode(iSrvAutostartMode, strDest);
}
} }
//creazione dell'icona sul desktop
const wxFileName strExe(strPrgLocPath, wxT("ba0.exe"));
const bool bDesktopShortcut = pWizard->GetDesktopShortcut();
if (bDesktopShortcut)
CreateIcon(CSIDL_COMMON_DESKTOPDIRECTORY, strExe);
//terminato il tutto scrive/aggiorna/lascia stare il campo.stp //terminato il tutto scrive/aggiorna/lascia stare il campo.stp
//questo e' un esempio di associazione automatica di estensione file //questo e' un esempio di associazione automatica di estensione file