Patch level :10.0 cd
Files correlati : Ricompilazione Demo : [ ] Commento :infighito a bomba l'aggiornamento in presenza di personalizzazioni. Adesso produce la lista dei files problematici! git-svn-id: svn://10.65.10.50/trunk@17838 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
38b2d276ca
commit
2565a8607b
141
setup/wizard.cpp
141
setup/wizard.cpp
@ -21,7 +21,7 @@ protected:
|
||||
void AddLabel(wxSizer* pSizer, const wxChar* label);
|
||||
void AddLabel(wxGridBagSizer* pSizer, const wxChar* label, unsigned int row, unsigned int column);
|
||||
bool CheckDataDir(wxString strDataPath) const;
|
||||
bool CheckCustomDir(const wxString strCustomPath, const wxString& strPrgPath) const;
|
||||
void CheckCustomDir(const wxString strCustomPath, const wxString& strPrgPath, wxArrayString& asPersonalizedFiles) const;
|
||||
bool CheckPrgDir(const wxString& strPrgPath) const;
|
||||
|
||||
public:
|
||||
@ -138,59 +138,58 @@ bool CampoWizardPage::CheckDataDir(wxString strDataPath) const
|
||||
return bOkData;
|
||||
}
|
||||
|
||||
|
||||
//metodo per il controllo di eventuali personalizzazioni presenti nelle custom e relative ad una versione..
|
||||
//..antecedente la 209110 (prima versione 10.0)
|
||||
bool CampoWizardPage::CheckCustomDir(const wxString strCustomPath, const wxString& strPrgPath) const
|
||||
void CampoWizardPage::CheckCustomDir(const wxString strCustomPath, const wxString& strPrgPath,
|
||||
wxArrayString& asPersonalizedFiles) const
|
||||
{
|
||||
//parametro di controllo generale sulla bontà della custom
|
||||
bool bOkCustom = true;
|
||||
//se la directory non c'è ciao ciciuz!!
|
||||
if (!::wxDirExists(strCustomPath))
|
||||
return;
|
||||
|
||||
//controlla la directory custom che gli viene passata alla ricerca del file custver.ini che contiene le info..
|
||||
//..necessarie per sapere se le personalizzazioni sono a posto o meno
|
||||
if (::wxDirExists(strCustomPath))
|
||||
CampoIniFile ciCustomVer(strCustomPath + "/custver.ini", "Main");
|
||||
const long lCustomVer = ciCustomVer.GetInt("Versione"); //il dio dei programmatori perdoni il type mismatch!
|
||||
//se le personalizzazioni sono a posto esce felicemente
|
||||
if (lCustomVer >= 209110)
|
||||
return;
|
||||
|
||||
//se le personalizzazioni non sono a posto (file custver.ini non esiste o è di una vecchia versione)...
|
||||
//riempie la lista delle personalizzazioni da controllare
|
||||
wxArrayString asFileList;
|
||||
const size_t uFiles = wxDir::GetAllFiles(strCustomPath, &asFileList, "*.*");
|
||||
|
||||
for (size_t i = 0; i < uFiles; i++)
|
||||
{
|
||||
//solo i file di tipo .msk possono creare casini
|
||||
wxArrayString asMaskList;
|
||||
const wxString strFile = asFileList[i].Lower();
|
||||
//per prima cosa cerca i files che abbiano un'omonimo tra gli eseguibili: ad es. sono maschere che,..
|
||||
//..ad aggiornamento concluso,non potrebbero funzionare
|
||||
const wxFileName fnFileCurr(strFile);
|
||||
const wxString strExt = fnFileCurr.GetExt();
|
||||
|
||||
//parametro di controllo sulla bontà della personalizzazione;se trova almeno 1 file personalizzato che crea..
|
||||
//..la necessità di controllare la versione della custom
|
||||
bool bPersonalized = false;
|
||||
const size_t uMaskFiles = wxDir::GetAllFiles(strCustomPath, &asMaskList, "*.msk");
|
||||
for (size_t i = 0; i < uMaskFiles; i++)
|
||||
{
|
||||
const wxString strMask = asMaskList[i].Lower();
|
||||
//se c'è un verig.msk è sicuramente una personalizzazione e quindi esce per bloccare l'installazione
|
||||
if (strMask.StartsWith("verig"))
|
||||
{
|
||||
bPersonalized = true;
|
||||
break;
|
||||
}
|
||||
//solo le maschere che hanno un omonimo .ini possono dare errore
|
||||
wxFileName fnIni(strMask);
|
||||
fnIni.SetExt("ini");
|
||||
//per prima cosa cerca l'ini nella custom corrente
|
||||
if (fnIni.FileExists())
|
||||
{
|
||||
bPersonalized = true;
|
||||
break;
|
||||
}
|
||||
//poi lo prova a cercare sotto i programmi (ci vuole un matto a fare una cosa simile)
|
||||
fnIni.SetPath(strPrgPath);
|
||||
if (fnIni.FileExists())
|
||||
{
|
||||
bPersonalized = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (bPersonalized)
|
||||
wxFileName fnPrgDual = fnFileCurr;
|
||||
fnPrgDual.SetPath(strPrgPath);
|
||||
if (fnPrgDual.FileExists())
|
||||
{
|
||||
CampoIniFile ciCustomVer(strCustomPath + "/custver.ini", "Main");
|
||||
const long lCustomVer = ciCustomVer.GetInt("Versione"); //il dio dei programmatori perdoni il type mismatch!
|
||||
if (lCustomVer < 209110)
|
||||
bOkCustom = false;
|
||||
asPersonalizedFiles.Add(strFile);
|
||||
}
|
||||
}
|
||||
return bOkCustom;
|
||||
|
||||
//poi controlla se c'è un ??rig*.ini/msk è sicuramente una personalizzazione
|
||||
if (strFile.Mid(2,3) == "rig" && (strExt == "ini" || strExt == "msk"))
|
||||
{
|
||||
asPersonalizedFiles.Add(strFile);
|
||||
}
|
||||
|
||||
//poi controlla che non vi sia un .exe, che potrebbe non funzionare con le nuove .dll
|
||||
if (strExt == "exe")
|
||||
{
|
||||
asPersonalizedFiles.Add(strFile);
|
||||
}
|
||||
|
||||
} //for(size_t i=0...
|
||||
|
||||
}
|
||||
|
||||
//metodo per il controllo della validita' di un'area programmi
|
||||
@ -367,10 +366,11 @@ bool CampoWizardPage3::ForwardValidate()
|
||||
if (!CheckDataDir(strStudy))
|
||||
return ErrorBox("La cartella indicata come area dati NON e' valida!\nInterrompere l'installazione e selezionare un'area dati valida\ncon il programma");
|
||||
//custom directories
|
||||
wxArrayString asPersonalizedFiles;
|
||||
|
||||
//a) custom di studio
|
||||
if (!CheckCustomDir(strStudy + "custom", strPrgPath))
|
||||
return ErrorBox("Sono presenti personalizzazioni relative ai documenti di vendita.\n"
|
||||
"Richiedere l'intervento dell'assistenza tecnica.\nImpossibile proseguire l'aggiornamento.");
|
||||
CheckCustomDir(strStudy + "custom", strPrgPath, asPersonalizedFiles);
|
||||
|
||||
//b) custom di ditta
|
||||
wxDir dirStudy(strStudy);
|
||||
wxString strDir;
|
||||
@ -380,14 +380,47 @@ bool CampoWizardPage3::ForwardValidate()
|
||||
strDir.MakeLower();
|
||||
if (strDir.EndsWith("a") && atol(strDir) > 0)
|
||||
{
|
||||
if (!CheckCustomDir(strStudy + strDir + "/custom", strPrgPath))
|
||||
{
|
||||
wxString strMsg = "Sono presenti personalizzazioni relative ai documenti di vendita nella ditta ";
|
||||
strMsg << strDir << ".\nRichiedere l'intervento dell'assistenza tecnica.\nImpossibile proseguire l'aggiornamento.";
|
||||
return ErrorBox(strMsg);
|
||||
}
|
||||
CheckCustomDir(strStudy + strDir + "/custom", strPrgPath, asPersonalizedFiles);
|
||||
}
|
||||
}
|
||||
//se ci sono files personalizzati pericolosi avverte l'utente ed interrompe l'aggiornamento!!
|
||||
if (asPersonalizedFiles.GetCount() > 0)
|
||||
{
|
||||
//finestra con la lista dei files personalizzati
|
||||
wxDialog dlgList(NULL, wxID_ANY, wxString("Lista files personalizzati"), wxDefaultPosition);
|
||||
wxBoxSizer* pSizer = new wxBoxSizer(wxVERTICAL);
|
||||
//testo con il fatale annuncio per l'utonto
|
||||
wxStaticText* stText = new wxStaticText (&dlgList, 100, "Sono presenti personalizzazioni create per una "
|
||||
"precedente versione del programma.\nE' necessario richiedere l'intervento dell'assistenza tecnica"
|
||||
".\nImpossibile proseguire l'aggiornamento! Salvare la lista e ANNULLARE l'aggiornamento");
|
||||
pSizer->Add(stText, 0, wxALL, 5);
|
||||
//lista dei file pericolosi
|
||||
wxListBox* lbList = new wxListBox(&dlgList, 101, wxDefaultPosition, wxSize(480, 320), asPersonalizedFiles);
|
||||
pSizer->Add(lbList, 0, wxALL, 5);
|
||||
//bottone di conferma
|
||||
wxButton* buOk = new wxButton(&dlgList, wxID_OK, "Salva lista", wxDefaultPosition, wxSize(96,-1));
|
||||
pSizer->Add(buOk, 0, wxALL|wxALIGN_CENTRE, 5);
|
||||
|
||||
dlgList.SetSizerAndFit(pSizer);
|
||||
dlgList.Centre();
|
||||
dlgList.ShowModal();
|
||||
//finestra per il salvataggio della lista in un file di testo
|
||||
wxFileDialog fdSave(NULL, "Selezionare la cartella dove salvare la lista", wxEmptyString,
|
||||
"listapers.txt", "*.txt", wxFD_SAVE|wxFD_OVERWRITE_PROMPT);
|
||||
if (fdSave.ShowModal() == wxID_OK)
|
||||
{
|
||||
const wxString strFileName = fdSave.GetPath();
|
||||
wxTextFile tfLista(strFileName);
|
||||
//aggiunge i files della lista al file di testo
|
||||
for (size_t i = 0; i < asPersonalizedFiles.GetCount(); i++)
|
||||
tfLista.AddLine(asPersonalizedFiles[i]);
|
||||
//scrive 'sto benedetto file di testo!
|
||||
tfLista.Write();
|
||||
}
|
||||
//blocca l'aggiornamento
|
||||
return false;
|
||||
}
|
||||
|
||||
//se ha superato i severi controlli prosegue
|
||||
GetWizard().SetDataPath(strStudy);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user