Patch level :10.0

Files correlati     :
Ricompilazione Demo : [ ]
Commento            :aggiunta feature di ricerca di applicativi campo che girano come processi nel task manager (sono vecchie istanze di campo rimaste appese). Dedicato alle volpi siriane...


git-svn-id: svn://10.65.10.50/trunk@17673 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
luca 2008-11-18 15:03:42 +00:00
parent 1f773d23aa
commit b71d32606c

View File

@ -101,8 +101,9 @@ protected:
void InternetUpdate();
void ClientUpdate();
void NormalSetup();
bool CampoRunning(const wxString& strAppName, const wxString& strMsg) const;
bool SystemRunning(const wxString& strAppName, const wxString& strMsg) const;
bool LurchRunning() const;
bool CampoRunning() const;
//metodi di interfaccia con Windows
bool CreateIcon(unsigned int csidl, const wxFileName& strExeFile, const wxString& strLinkName) const;
@ -1245,7 +1246,7 @@ void CampoSetup::NormalSetup()
m_pWizard->Destroy();
}
bool CampoSetup::CampoRunning(const wxString& strAppName, const wxString& strMsg) const
bool CampoSetup::SystemRunning(const wxString& strAppName, const wxString& strMsg) const
{
wxSingleInstanceChecker sicProgram(strAppName);
@ -1263,11 +1264,11 @@ bool CampoSetup::CampoRunning(const wxString& strAppName, const wxString& strMsg
bool CampoSetup::LurchRunning() const
{
//cerca Lurch che funziona come programma (esecuzione in modalita' avvio automatico)...
bool ok = CampoRunning("Lurch", wxEmptyString);
bool ok = SystemRunning("Lurch", wxEmptyString);
if (!ok)
{
//...se non lo trova cerca il solo Authoriz sempre come programma...
ok = CampoRunning("Authorization", wxEmptyString);
ok = SystemRunning("Authorization", wxEmptyString);
//se non trova nulla cerca Lurch come servizio...
if (!ok)
{
@ -1279,6 +1280,61 @@ bool CampoSetup::LurchRunning() const
return ok;
}
bool CampoSetup::CampoRunning() const
{
//ricerca di campo.aut per avere la lista dei moduli
//prima tenta con aggiornamento da disco...
wxString strInstallPath = "../install.ini";
//...poi con aggiornamento da CD
if (!wxFileName::FileExists(strInstallPath))
strInstallPath = "../../campo/install.ini";
//fa un giro sull'install.ini alla ricerca di tutti i moduli (sono i paragrafi lunghi 2) installati (se aggiornamento..
//..da disco) o da installare (se sta installando da CD)
wxArrayString asModuli;
if (wxFileName::FileExists(strInstallPath))
{
wxString strModulo;
long nIndex;
CampoIniFile iniInstall(strInstallPath, strModulo);
for (bool ok = iniInstall.GetFirstGroup(strModulo, nIndex); ok; ok = iniInstall.GetNextGroup(strModulo, nIndex))
{
if (strModulo.Len() == 2)
asModuli.Add(strModulo); //aggiunge all'array tutti i moduli che trova in install.ini
}
}
else //non trova nessun install.ini (non dovrebbe mai accadere) e tenta i moduli più importanti
{
asModuli.Add("ba");
asModuli.Add("cg");
asModuli.Add("ve");
asModuli.Add("mg");
asModuli.Add("lv");
}
//scandisce l'array dei moduli alla ricerca di un eventuale programma di campo ancora running a sua insaputa
wxString strAppName;
for (size_t i = 0; i < asModuli.GetCount(); i++)
{
for (size_t j = 0; j <= 9; j++)
{
strAppName = asModuli[i];
strAppName += ('0'+j);
wxSingleInstanceChecker sicProgram(strAppName);
if (sicProgram.IsAnotherRunning())
{
strAppName << " è in esecuzione! E' necessario terminarlo utilizzando il Task Manager di Windows";
ErrorBox(strAppName);
return true;
}
}
}
return false; //campo non sta andando
}
//metodo principale che sceglie la modalita' di lancio del programma
void CampoSetup::OnTimer(wxTimerEvent& WXUNUSED(e))
{
@ -1288,16 +1344,27 @@ void CampoSetup::OnTimer(wxTimerEvent& WXUNUSED(e))
if (YesNoBox("Per poter aggiornare/installare il programma CAMPO deve temporaneamente essere disattivato il gestore delle licenze!\nPrima di disattivare il gestore delle licenze accertarsi che tutti gli utenti spengano il programma CAMPO!!\nProseguire con la disattivazione?"))
const long lStop = StopLurch();
else
{
m_pMainFrame->Destroy();
return;
}
}
if (CampoRunning("ba0", "Uscire dal programma CAMPO prima di procedere con l'aggiornamento/installazione!") ||
CampoRunning("ba1", "Uscire dal programma di manutenzione di CAMPO\n prima di procedere con l'aggiornamento/installazione!"))
if (SystemRunning("ba0", "Uscire dal programma CAMPO prima di procedere con l'aggiornamento/installazione!") ||
SystemRunning("ba1", "Uscire dal programma di manutenzione di CAMPO\n prima di procedere con l'aggiornamento/installazione!"))
{
m_pMainFrame->Destroy();
return;
}
if (CampoRunning())
{
ErrorBox("Un applicativo di Campo è ancora in esecuzione!\nL'installazione sarà interrotta immediatamente");
m_pMainFrame->Destroy();
return;
}
wxFileName strPath(argv[0]);
strPath.MakeAbsolute();
strPath.SetCwd();