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:
parent
1f773d23aa
commit
b71d32606c
@ -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();
|
||||
|
Loading…
x
Reference in New Issue
Block a user