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>");
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>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);
}
@ -2015,8 +2016,13 @@ void CampoSetup::AssociateExtension(const wxFileName& strExeFile, const wxString
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"));
strExe.AppendDir("servers");
//stringa path della cartella Servers in base alle scelte dell'utente
const wxString strSrvPath = strPath + "\\servers";
switch (iSrvAutostartMode)
{
//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");
//elimina un eventuale servizio precedente (senno' col cavolo che lo riesce a modificare!)
wxString strRemove = "instsrv Lurch REMOVE";
const long lRemove = wxExecute(strRemove, wxEXEC_SYNC);
//utilizza il programma instsrv.exe dentro la cartella servers installata
// 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)
wxString strCreateService = "instsrv Lurch ";
strCreateService += wxGetCwd();
//utilizza i programmi instrv.exe e srvany.exe dentro la cartella servers installata
wxString strCreateService = strSrvPath + "\\instsrv Lurch ";
// strCreateService += wxGetCwd();
// strCreateService += "\\srvany.exe";
strCreateService += strSrvPath;
strCreateService += "\\srvany.exe";
//esegue il programma di installazione servizi di Windows creando la voce
const long lExec = wxExecute(strCreateService, wxEXEC_SYNC);
@ -2157,25 +2169,23 @@ void CampoSetup::OnTimer(wxTimerEvent& WXUNUSED(e))
wxFileName strPath = argv[0];
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
const unsigned int uInstallationType = pWizard->GetInstallationType();
//se nuova installazione deve anche creare la directory di destinazione
if (uInstallationType < 3)
{
//creazione della directory dei programmi
CheckAndMakeDir(pWizard->GetPrgLocPath(), "programmi");
const bool bNewInstallation = uInstallationType < 3;
//installazione server?
const bool bInstallLurch = uInstallationType == 1 && (pWizard->GetInstUseAuth() | pWizard->GetInstUseDict());
//cartelle selezionate dall'utente
const wxString& strPrgLocPath = pWizard->GetPrgLocPath();
const wxString& strDataPath = pWizard->GetDataPath();
//creazione della directory dei dati
CheckAndMakeDir(pWizard->GetDataPath(), "dati");
//se nuova installazione deve anche creare la directory di destinazione
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)
@ -2188,72 +2198,86 @@ void CampoSetup::OnTimer(wxTimerEvent& WXUNUSED(e))
//..contando anche quanti sono e memorizzandoli in un array asFileList
const size_t uFilesToCopy = wxDir::GetAllFiles(strSourcePath.GetPath(), &asFilesList);
//prende la cartella di destinazione...
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
//per ogni files da copiare controlla i path sorgente e destinazione(problema con sottodirectory tipo dati)
wxString strFileCurr;
const size_t nPathLenght = strSourcePath.GetPath().Len();
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)
{
strFileCurr = strDataPath;
strFileCurr += asFilesList[i].Mid(nPathLenght + 5);
if (bNewInstallation) //i DATI NON VANNO MAI installati in caso di aggiornamento!!!
{
strFileCurr = strDataPath;
strFileCurr += asFilesList[i].Mid(nPathLenght + 5);
}
}
else //files dei programmi
{
strFileCurr = strDestPath;
strFileCurr = strPrgLocPath;
strFileCurr += asFilesList[i].Mid(nPathLenght);
}
strFileCurr.MakeLower();
const wxFileName strFileName(strFileCurr);
//i files .ini vanno trattati con i guanti
if (strFileName.GetExt() == ".ini")
//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!!
if (!strFileCurr.IsEmpty())
{
const wxString strName = strFileName.GetName();
//campo.ini e install.ini vanno lasciati stare se aggiornamento!!!
if ((strName == "campo" || strName == "install") && strFileName.FileExists())
continue;
}
//eventuali sottodirectory le crea
const wxString strDir = strFileName.GetPath();
if (!wxDirExists(strDir))
wxMkdir(strDir);
strFileCurr.MakeLower(); //minuscolizzazione di sicurezza
const wxFileName strFileName(strFileCurr);
if(!wxCopyFile(asFilesList[i], strFileCurr))
{
wxString strErr = "Impossibile copiare il file ";
strErr += asFilesList[i];
strErr += " in ";
strErr += strFileCurr;
strErr += "\nInstallazione interrotta!";
ErrorBox(strErr);
break;
}
//i files .ini vanno trattati con i guanti (se esistono gia' non vanno copiati!!!)
if (strFileName.GetExt() == ".ini")
{
const wxString strName = strFileName.GetName();
//campo.ini e install.ini vanno lasciati stare se aggiornamento!!!
if ((strName == "campo" || strName == "install") && strFileName.FileExists())
continue;
}
//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
if (uInstallationType < 3)
//adesso deve compilare il campo.ini se nuova installazione..
if (bNewInstallation)
{
}
//..e modificare comunque l'install.ini
//solo se sta installando campo in postazione server e deve installare un gestore di servizi
if (uInstallationType == 1)
//solo se sta installando campo in postazione server e deve installare un gestore di servizi..
//..avvia la procedura della creazione dell'autostart(un casino)
if (bInstallLurch)
{
const bool bInstallLurch = pWizard->GetInstUseAuth() | pWizard->GetInstUseDict();
if (bInstallLurch)
{
const int iSrvAutostartMode = pWizard->GetSrvAutostartMode();
CreateAutostartMode(iSrvAutostartMode, strDest);
}
const int iSrvAutostartMode = pWizard->GetSrvAutostartMode();
CreateAutostartMode(iSrvAutostartMode, strPrgLocPath);
}
//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
//questo e' un esempio di associazione automatica di estensione file