Patch level :

Files correlati     :
Ricompilazione Demo : [ ]
Commento            :


git-svn-id: svn://10.65.10.50/trunk@15575 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
luca 2007-08-24 13:18:47 +00:00
parent 0c889d778e
commit 28cba83155

View File

@ -154,19 +154,18 @@ class CampoWizard : public wxWizard
CampoWizardPage* m_pPage[m_nPages]; CampoWizardPage* m_pPage[m_nPages];
wxString _strDestinationPath; //path di aggiornamento/installazione wxString _strDestinationPath; //path di aggiornamento/installazione
unsigned int _uInstallationType; //tipo di installazione selezionata (standard,server,client...) unsigned int _uInstallationType; //tipo di installazione selezionata (standard,server,client,aggiornamento)
unsigned int _uDongleType; //tipo di chiave di protezione (hardlock,eutron,server)
wxString _strPrgLocPath; //path programmi in locale wxString _strPrgLocPath; //path programmi in locale
wxString _strPrgNetPath; //path programmi in remoto (server prg dir per client) wxString _strPrgNetPath; //path programmi in remoto (server programmi directory per client)
wxString _strDataPath; //path dati wxString _strDataPath; //path dati (creare o usare)
wxString _strAuthSrv; //nome server authoriz
wxString _strDictSrv; //nome server diction
bool _bInstDemoData; //installa dati dimostrativi bool _bInstDemoData; //installa dati dimostrativi
bool _bInstUseAuth; //installa/usa server authoriz bool _bInstUseAuth; //installa/usa server authoriz
wxString _strSrvAuth; //server authoriz wxString _strSrvAuth; //nome server authoriz
bool _bInstUseDict; //installa/usa server diction bool _bInstUseDict; //installa/usa server diction
wxString _strSrvDict; //server diction wxString _strSrvDict; //nome server diction
unsigned int _iSrvAutostartMode; //tipologia di esecuzione dei server unsigned int _iSrvAutostartMode; //tipologia di esecuzione dei server
bool _bDesktopShortcut; //crea il link sul desktop bool _bDesktopShortcut; //crea il link sul desktop
@ -184,10 +183,12 @@ public:
bool GetBool(wxWindowID id) const; bool GetBool(wxWindowID id) const;
//metodi per il passaggio tra le finestre dei parametri di installazione! //metodi per il passaggio tra le finestre dei parametri di installazione!
void SetDestinationPath(const wxString& path); void SetDestinationPath(const wxString& strPath);
const wxString& GetDestinationPath() const; const wxString& GetDestinationPath() const;
void SetInstallationType(const unsigned int type); void SetInstallationType(const unsigned int uType);
const unsigned int GetInstallationType() const; const unsigned int GetInstallationType() const;
void SetDongleType(const unsigned int uType);
const unsigned int GetDongleType() const;
void SetPrgLocPath(const wxString& strPrgLocPath); void SetPrgLocPath(const wxString& strPrgLocPath);
const wxString& GetPrgLocPath() const; const wxString& GetPrgLocPath() const;
@ -226,7 +227,10 @@ protected:
public: public:
wxString Get(const wxString strVariable) const; wxString Get(const wxString strVariable) const;
bool GetBool(const wxString strVariable) const; bool GetBool(const wxString strVariable) const;
CampoIniFile(const wxString strIniPath, const wxString strParagraph); bool Set(const wxString strVariable, const wxString strValue);//, const wxString strParagraph) const;
bool Set(const wxString strVariable, const int uValue);
CampoIniFile(const wxString strIniPath, wxString strValue);
}; };
CampoIniFile::CampoIniFile(const wxString strIniPath, const wxString strParagraph) CampoIniFile::CampoIniFile(const wxString strIniPath, const wxString strParagraph)
@ -248,6 +252,15 @@ bool CampoIniFile::GetBool(const wxString strVariable) const
return strBool == "X" || strBool == "Y"; return strBool == "X" || strBool == "Y";
} }
bool CampoIniFile::Set(const wxString strVariable, const wxString strValue)//, const wxString strParagraph) const
{
return Write(strVariable, strValue);
}
bool CampoIniFile::Set(const wxString strVariable, const int uValue)//, const wxString strParagraph) const
{
return Write(strVariable, uValue);
}
//////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////
//Campo wizard page (pagina generica del programma, di cui saranno figlie le singole pagine) //Campo wizard page (pagina generica del programma, di cui saranno figlie le singole pagine)
@ -472,7 +485,6 @@ bool CampoWizardPage2::ForwardValidate()
GetWizard().SetDesktopShortcut(true); GetWizard().SetDesktopShortcut(true);
} }
return true; return true;
} }
@ -579,11 +591,10 @@ CampoWizardPage3::CampoWizardPage3(wxWizard* parent) : CampoWizardPage(parent)
asAccRef.Add("Accetta"); asAccRef.Add("Accetta");
asAccRef.Add("Rifiuta"); asAccRef.Add("Rifiuta");
wxRadioBox* radio_box = new wxRadioBox(this, 301, "Selezionare 'Accetta' per proseguire con l'installazione, 'Rifiuta' per terminare l'installazione", wxDefaultPosition, wxRadioBox* radio_box = new wxRadioBox(this, 301, "Selezionare 'Accetta' per proseguire con l'installazione, 'Rifiuta' per terminare l'installazione", wxDefaultPosition,
wxDefaultSize, asAccRef, 0, wxRA_SPECIFY_COLS); wxDefaultSize, asAccRef, 0, wxRA_SPECIFY_COLS);
radio_box->SetSelection(1); radio_box->SetSelection(1);
GetSizer()->Add(radio_box); GetSizer()->Add(radio_box);
} }
/**********************************************************************************************************/ /**********************************************************************************************************/
@ -770,7 +781,7 @@ wxString CampoWizardPage4::DecodeString(const wxString& data)
int CampoWizardPage4::VersionYear() int CampoWizardPage4::VersionYear()
{ {
char ver[32]; char ver[32];
GetPrivateProfileString("ba", "Versione", "", ver, sizeof(ver), "./program/zip/install.ini"); GetPrivateProfileString("ba", "Versione", "", ver, sizeof(ver), "./program/install.ini");
ver[4] = '\0'; ver[4] = '\0';
return atoi(ver); return atoi(ver);
} }
@ -799,7 +810,7 @@ int CampoWizardPage4::DongleTest()
if (yearKey < verYear) // Chiave già programmata con assistenza pagata if (yearKey < verYear) // Chiave già programmata con assistenza pagata
{ {
bool ok = false; bool ok = false;
wxFileInputStream file("./program/zip/dninst.zip"); wxFileInputStream file("./program/dninst.zip");
if (file.IsOk()) if (file.IsOk())
{ {
wxTextInputStream keys(file); wxTextInputStream keys(file);
@ -892,6 +903,8 @@ CampoWizardPage4::CampoWizardPage4(wxWizard* parent) : CampoWizardPage(parent)
} }
SetHTMLText(strTitle, strBody); SetHTMLText(strTitle, strBody);
//aggiorna il tipo di chiave per poterlo scrivere sul campo.ini
GetWizard().SetDongleType(_dongle_type);
} }
/**********************************************************************************************************/ /**********************************************************************************************************/
@ -1704,6 +1717,16 @@ void CampoWizard::SetPrgLocPath(const wxString& strPrgLocPath)
_strPrgLocPath = strPrgLocPath; _strPrgLocPath = strPrgLocPath;
} }
const unsigned int CampoWizard::GetDongleType() const
{
return _uDongleType;
}
void CampoWizard::SetDongleType(const unsigned int uType)
{
_uDongleType = uType;
}
const wxString& CampoWizard::GetPrgLocPath() const const wxString& CampoWizard::GetPrgLocPath() const
{ {
return _strPrgLocPath; return _strPrgLocPath;
@ -2034,16 +2057,12 @@ bool CampoSetup::CreateAutostartMode(const int iSrvAutostartMode, const wxString
//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!)
//utilizza il programma instsrv.exe dentro la cartella servers installata //utilizza il programma instsrv.exe dentro la cartella servers installata
// wxString strRemove = "instsrv Lurch REMOVE"; wxString strRemove = strSrvPath + "\\instsrv Lurch REMOVE";
// const long lRemove = wxExecute(strRemove, wxEXEC_SYNC); 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)
//utilizza i programmi instrv.exe e srvany.exe dentro la cartella servers installata //utilizza i programmi instrv.exe e srvany.exe dentro la cartella servers installata
wxString strCreateService = strSrvPath + "\\instsrv Lurch "; wxString strCreateService = strSrvPath + "\\instsrv Lurch ";
// strCreateService += wxGetCwd();
// strCreateService += "\\srvany.exe";
strCreateService += strSrvPath; 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
@ -2073,8 +2092,6 @@ bool CampoSetup::CreateAutostartMode(const int iSrvAutostartMode, const wxString
default: default:
break; break;
} }
return true; return true;
} }
@ -2124,7 +2141,6 @@ bool CampoSetup::CreateIcon(unsigned int csidl, const wxFileName& strExeFile) co
} }
CoUninitialize(); CoUninitialize();
} }
return true; return true;
} }
@ -2160,6 +2176,7 @@ void CampoSetup::CheckAndMakeDir(const wxString& strDir, const wxString& strMsg)
} }
} }
//metodo principale dell'applicazione che gestisce l'ordine degli eventi nella installazione vera e propria
void CampoSetup::OnTimer(wxTimerEvent& WXUNUSED(e)) void CampoSetup::OnTimer(wxTimerEvent& WXUNUSED(e))
{ {
CampoWizard* pWizard = new CampoWizard(m_pMainFrame); CampoWizard* pWizard = new CampoWizard(m_pMainFrame);
@ -2172,7 +2189,7 @@ void CampoSetup::OnTimer(wxTimerEvent& WXUNUSED(e))
//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; const bool bNewInstallation = uInstallationType < 3;
//installazione server? //installazione servers?
const bool bInstallLurch = uInstallationType == 1 && (pWizard->GetInstUseAuth() | pWizard->GetInstUseDict()); const bool bInstallLurch = uInstallationType == 1 && (pWizard->GetInstUseAuth() | pWizard->GetInstUseDict());
//cartelle selezionate dall'utente //cartelle selezionate dall'utente
const wxString& strPrgLocPath = pWizard->GetPrgLocPath(); const wxString& strPrgLocPath = pWizard->GetPrgLocPath();
@ -2183,7 +2200,6 @@ void CampoSetup::OnTimer(wxTimerEvent& WXUNUSED(e))
{ {
//creazione della directory dei programmi (compreso l'intero albero directory) //creazione della directory dei programmi (compreso l'intero albero directory)
CheckAndMakeDir(strPrgLocPath, "programmi"); CheckAndMakeDir(strPrgLocPath, "programmi");
//creazione della directory dei dati (compreso l'intero albero directory) //creazione della directory dei dati (compreso l'intero albero directory)
CheckAndMakeDir(strDataPath, "dati"); CheckAndMakeDir(strDataPath, "dati");
} }
@ -2226,7 +2242,7 @@ void CampoSetup::OnTimer(wxTimerEvent& WXUNUSED(e))
} }
//copia i files nella cartella di destinazione (programmi,dati,cazzi e mazzi);se il nome del file.. //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!! //..di destinazione e' vuoto significa che non lo deve copiare!! (es. dati in aggiornamento)
if (!strFileCurr.IsEmpty()) if (!strFileCurr.IsEmpty())
{ {
strFileCurr.MakeLower(); //minuscolizzazione di sicurezza strFileCurr.MakeLower(); //minuscolizzazione di sicurezza
@ -2236,7 +2252,7 @@ void CampoSetup::OnTimer(wxTimerEvent& WXUNUSED(e))
if (strFileName.GetExt() == ".ini") if (strFileName.GetExt() == ".ini")
{ {
const wxString strName = strFileName.GetName(); const wxString strName = strFileName.GetName();
//campo.ini e install.ini vanno lasciati stare se aggiornamento!!! //campo.ini e install.ini vanno lasciati stare se esistono (aggiornamento)!!!
if ((strName == "campo" || strName == "install") && strFileName.FileExists()) if ((strName == "campo" || strName == "install") && strFileName.FileExists())
continue; continue;
} }
@ -2261,8 +2277,46 @@ void CampoSetup::OnTimer(wxTimerEvent& WXUNUSED(e))
//adesso deve compilare il campo.ini se nuova installazione.. //adesso deve compilare il campo.ini se nuova installazione..
if (bNewInstallation) if (bNewInstallation)
{ {
//paragrafo [Main]
CampoIniFile CampoIniMain(strPrgLocPath + "/campo.ini", "Main");
const unsigned int uDongleType = pWizard->GetDongleType();
CampoIniMain.Set("Dongle", uDongleType);
CampoIniMain.Set("Study", strDataPath);
CampoIniMain.Set("Firm", "com");
//client o non client?
if (uInstallationType == 2) //client
{
CampoIniMain.Set("TestDatabase", "N");
CampoIniMain.Set("TestPrograms", "X");
}
else //altri (standard,server)
{
CampoIniMain.Set("TestDatabase", "X");
CampoIniMain.Set("TestPrograms", "N");
}
//paragrafo [Server]
if (bInstallLurch)
{
CampoIniFile CampoIniSrv(strPrgLocPath + "/campo.ini", "Server");
if (pWizard->GetInstUseAuth())
CampoIniSrv.Set("Authoriz", pWizard->GetSrvAuth());
if (pWizard->GetInstUseDict())
CampoIniSrv.Set("Dictionary", pWizard->GetSrvDict());
}
}
//..e modificare comunque l'install.ini aggiornando eventualmente l'origine dei programmi
CampoIniFile CampoInstall(strPrgLocPath + "/install.ini", "Main");
if (uInstallationType == 2) //client: directory origine sul server
CampoInstall.Set("DiskPath", pWizard->GetPrgNetPath());
else //e' il path assoluto dell'install.ini che sta in 'program' (es. D:\program)
{
wxFileName strSourcePath(wxGetCwd());
strSourcePath.AppendDir("..");
strSourcePath.AppendDir("program");
strSourcePath.MakeAbsolute();
const wxString strSrc = strSourcePath.GetPath();
CampoInstall.Set("DiskPath", strSrc);
} }
//..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..
//..avvia la procedura della creazione dell'autostart(un casino) //..avvia la procedura della creazione dell'autostart(un casino)
@ -2278,7 +2332,18 @@ void CampoSetup::OnTimer(wxTimerEvent& WXUNUSED(e))
if (bDesktopShortcut) if (bDesktopShortcut)
CreateIcon(CSIDL_COMMON_DESKTOPDIRECTORY, strExe); CreateIcon(CSIDL_COMMON_DESKTOPDIRECTORY, strExe);
//terminato il tutto scrive/aggiorna/lascia stare il campo.stp // 1) terminato il tutto scrive/aggiorna/lascia stare il campo.stp
if (bNewInstallation)
{
CampoIniFile CampoStp("C:\\campo.stp", "");
}
// 2) procede poi al caricamento delle patch eventuali di sistema all'interno della dir 'program'
//la procedura di unzippamento dovrebbe essere quella di ba1.exe
// 3) riaggiorna eventualmente il livello versione/patch del SY in install.ini
// 4) lanciare ba1.exe -6 in uscita (non va qui! e' solo per ricordarsi di farlo!)
//questo e' un esempio di associazione automatica di estensione file //questo e' un esempio di associazione automatica di estensione file
//if (pWizard->GetBool(bAssocExtension)) //if (pWizard->GetBool(bAssocExtension))