diff --git a/setup/oem.ini b/setup/oem.ini index e7b1ac4c0..9e68caa96 100755 --- a/setup/oem.ini +++ b/setup/oem.ini @@ -1,5 +1,5 @@ [MAIN] -OEM = +OEM = 0 [OEM_0] Administrator = ’—’Śť diff --git a/setup/utils.cpp b/setup/utils.cpp index a84a51e09..79add150c 100755 --- a/setup/utils.cpp +++ b/setup/utils.cpp @@ -15,6 +15,133 @@ int GetSessionId() return (int) session; } +//lista delle versioni di windows +#define WUNKNOWNSTR _T("unknown Windows version") + +#define W95STR _T("Windows 95") +#define W95SP1STR _T("Windows 95 SP1") +#define W95OSR2STR _T("Windows 95 OSR2") +#define W98STR _T("Windows 98") +#define W98SP1STR _T("Windows 98 SP1") +#define W98SESTR _T("Windows 98 SE") +#define WMESTR _T("Windows ME") + +#define WNT351STR _T("Windows NT 3.51") +#define WNT4STR _T("Windows NT 4") +#define W2KSTR _T("Windows 2000") +#define WXPSTR _T("Windows XP") +#define W2003STR _T("Windows Server 2003") +#define WVISTASTR _T("Windows Vista") +#define W2008STR _T("Windows Server 2008") +#define W7STR _T("Windows 7") + +#define WCESTR _T("Windows CE") + + +//metodo per provare a trovare la versione di windows +bool GetWinVer(LPTSTR lpszVersion, int nVersionSize, int *pnVersion) +{ + int nVersion = WUNKNOWN; + LPCTSTR cp = WUNKNOWNSTR; + + OSVERSIONINFO osinfo; memset(&osinfo, 0, sizeof(osinfo)); + osinfo.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); + if (::GetVersionEx(&osinfo)) + { + DWORD dwPlatformId = osinfo.dwPlatformId; + DWORD dwMinorVersion = osinfo.dwMinorVersion; + DWORD dwMajorVersion = osinfo.dwMajorVersion; + DWORD dwBuildNumber = osinfo.dwBuildNumber & 0xFFFF; // Win 95 needs this + + if ((dwPlatformId == VER_PLATFORM_WIN32_WINDOWS) && (dwMajorVersion == 4)) + { + if ((dwMinorVersion < 10) && (dwBuildNumber == 950)) + { + cp = W95STR; + nVersion = W95; + } + else if ((dwMinorVersion < 10) && + ((dwBuildNumber > 950) && (dwBuildNumber <= 1080))) + { + cp = W95SP1STR; + nVersion = W95SP1; + } + else if ((dwMinorVersion < 10) && (dwBuildNumber > 1080)) + { + cp = W95OSR2STR; + nVersion = W95OSR2; + } + else if ((dwMinorVersion == 10) && (dwBuildNumber == 1998)) + { + cp = W98STR; + nVersion = W98; + } + else if ((dwMinorVersion == 10) && + ((dwBuildNumber > 1998) && (dwBuildNumber < 2183))) + { + cp = W98SP1STR; + nVersion = W98SP1; + } + else if ((dwMinorVersion == 10) && (dwBuildNumber >= 2183)) + { + cp = W98SESTR; + nVersion = W98SE; + } + else if (dwMinorVersion == 90) + { + cp = WMESTR; + nVersion = WME; + } + } + else if (dwPlatformId == VER_PLATFORM_WIN32_NT) + { + if (dwMajorVersion == 3) + { + cp = WNT351STR; + nVersion = WNT351; + } + else if (dwMajorVersion == 4) + { + cp = WNT4STR; + nVersion = WNT4; + } + else if (dwMajorVersion == 5) + { + switch (dwMinorVersion) + { + case 0: cp = W2KSTR; nVersion = W2K; break; + case 1: cp = WXPSTR; nVersion = WXP; break; + case 2: + default: cp = W2003STR; nVersion = W2003; break; + } + } + else if (dwMajorVersion == 6) + { + cp = WVISTASTR; + nVersion = WVISTA; + // TBI: Windows 2008 Server + } + else if (dwMajorVersion >= 7) + { + cp = W7STR; + nVersion = W7; + } + } +/* else if (dwPlatformId == VER_PLATFORM_WIN32_CE) + { + cp = WCESTR; + nVersion = WCE; + }*/ + } + + if (lpszVersion != NULL && nVersionSize > 0) + _tcsncpy(lpszVersion, cp, nVersionSize-1); + if (pnVersion != NULL) + *pnVersion = nVersion; + + return nVersion == WUNKNOWN; +} + wxString GetWindowsProgramDirectory() { //scelta della directory di installazione di default diff --git a/setup/utils.h b/setup/utils.h index 84b6b58b5..a8c440529 100755 --- a/setup/utils.h +++ b/setup/utils.h @@ -36,6 +36,34 @@ public: CampoProgressDialog(const wxString& strTitle, int nMaximum = 100, wxWindow* pParent = NULL); }; +//numeri delle versioni di windows +#define WUNKNOWN 0 + +#define W9XFIRST 1 +#define W95 1 +#define W95SP1 2 +#define W95OSR2 3 +#define W98 4 +#define W98SP1 5 +#define W98SE 6 +#define WME 7 +#define W9XLAST 99 + +#define WNTFIRST 101 +#define WNT351 101 +#define WNT4 102 +#define W2K 103 +#define WXP 104 +#define W2003 105 +#define WVISTA 106 +#define W2008 107 +#define W7 108 +#define WNTLAST 199 + +#define WCEFIRST 201 +#define WCE 201 +#define WCELAST 299 + //metodi generici //finestre messaggio,errore,ecc... bool ErrorBox(const wxString str); @@ -51,6 +79,7 @@ void NormalizeSlash(wxString& strFileName); //interfaccia con windows wxString GetWindowsProgramDirectory(); int GetSessionId(); +bool GetWinVer(LPTSTR lpszVersion, int nVersionSize, int *pnVersion); size_t ListNetworkDisks(wxArrayString& asList); size_t ListSharedDirectories(wxArrayString& asList); diff --git a/setup/wizard.cpp b/setup/wizard.cpp index 71cc63979..6a19d8d16 100755 --- a/setup/wizard.cpp +++ b/setup/wizard.cpp @@ -840,14 +840,7 @@ public: bool CampoWizardPage5::ForwardValidate() { // controlla il tipo di installazione! - InstallationType nType = it_standalone; - - const int nSessionId = GetSessionId(); - //nessun SessionId -> installazione comune -> selection dal radiobutton - if (nSessionId == 0) - nType = InstallationType(m_pRadioBox->GetSelection() + 1); - else //SessionId != 0 -> Terminal Server -> installazione di tipo Server obbligata!!! - nType = it_server; + InstallationType nType = InstallationType(m_pRadioBox->GetSelection() + 1); GetWizard().SetInstallationType(nType); return true; @@ -855,45 +848,48 @@ bool CampoWizardPage5::ForwardValidate() CampoWizardPage5::CampoWizardPage5(wxWizard* parent) : CampoWizardPage(parent) { - //chiede al sistema se e' in modalita' termserv (win2003/2008srv) - const int nSessionId = GetSessionId(); + //chiede al sistema la versione di windows + int nVersion = 0; + ::GetWinVer(NULL, 0, &nVersion); + //Istruzioni per l'uso! wxString strTitle = wxT("Scelta del tipo di installazione"); wxString strBody; - if (nSessionId == 0) + + strBody = wxT("
Standard (scelta consigliata). Installazione su postazione singola, con programmi e dati sul disco locale del computer
"); + strBody += wxT("Installazioni di rete (per utenti esperti)
"); + strBody += wxT("Server: Computer in rete sul quale sono presenti una copia, utilizzata o meno, dei programmi (server programmi) e l’area dati (server dati). "); + strBody += wxT("In una installazione in rete di PRODUCT e' necessario sia presente un unica postazione di tipo server, "); + strBody += wxT("e deve essere installata per prima!
"); + strBody += wxT("Client: Computer in rete sul quale e' presente una copia dei programmi ma non l'area dati. "); + strBody += wxT("I client possono essere installati solo dopo l'installazione del server!
"); + + //sistema multissesione remoto (win2003srv etc.) + if (nVersion >= W2003) { - strBody = wxT("Standard (scelta consigliata). Installazione su postazione singola, con programmi e dati sul disco locale del computer
"); - strBody += wxT("Installazioni di rete (per utenti esperti)
"); - strBody += wxT("Server: Computer in rete sul quale sono presenti una copia, utilizzata o meno, dei programmi (server programmi) e l’area dati (server dati). "); - strBody += wxT("In una installazione in rete di PRODUCT e' necessario sia presente un unica postazione di tipo server, "); - strBody += wxT("e deve essere installata per prima!
"); - strBody += wxT("Client: Computer in rete sul quale e' presente una copia dei programmi ma non l'area dati. "); - strBody += wxT("I client possono essere installati solo dopo l'installazione del server!
"); - } - else - { - strBody += wxT("Terminal Server: Computer con sistema operativo tipo Windows 2003/2008 Server. "); - strBody += wxT("L'installazione e' unica e viene utilizzata dagli utenti di sistema quando aprono una sessione sul server.
"); - strBody += wxT("Selezionando configurazione Terminal Server e' necessario installare il gestore delle autorizzazioni per "); - strBody += wxT("poter gestire l'accesso contemporaneo di piu' utenti.
"); + strBody += wxT(""); + strBody += wxT("E' stata rilevata una versione di Windows che consente sessioni remote (es. Windows 2008 Server)
"); + strBody += wxT("Questa versione di Windows supporta un ulteriore tipo di installazione di PRODUCT:
"); + strBody += wxT("Terminal Server: L'installazione e' unica e viene utilizzata dagli utenti di sistema quando aprono una sessione sul server."); + strBody += wxT("In questo caso e' necessario scegliere l'installazione Server ed installare il gestore delle autorizzazioni!"); + strBody += wxT("ATTENZIONE! Selezionare l'installazione tipo Terminal Server solo se necessario!
"); } SetHTMLText(strTitle, strBody); //radiobutton con i tipi di installazione wxArrayString asInstType; - if (nSessionId == 0) - { - asInstType.Add("Standard"); - asInstType.Add("Server"); - asInstType.Add("Client"); - } - else - asInstType.Add("Terminal Server"); + + asInstType.Add("Standard"); + asInstType.Add("Server"); + asInstType.Add("Client"); + + int nDefault = nVersion < W2003 ? 0 : 1; m_pRadioBox = new wxRadioBox(this, 501, "Selezionare il tipo di installazione", wxDefaultPosition, - wxDefaultSize, asInstType, 0, wxRA_SPECIFY_ROWS); + wxDefaultSize, asInstType, 0, wxRA_SPECIFY_ROWS); + //setta il default a Standard - m_pRadioBox->SetSelection(0); + m_pRadioBox->SetSelection(nDefault); GetSizer()->Add(m_pRadioBox); } @@ -1106,31 +1102,35 @@ bool CampoWizardPage7::ForwardValidate() CampoWizardPage7::CampoWizardPage7(wxWizard* parent) : CampoWizardPage(parent) { - const int nSessionId = GetSessionId(); + //chiede al sistema la versione di windows + int nVersion = 0; + ::GetWinVer(NULL, 0, &nVersion); + wxString strTitle; wxString strBody; - if (nSessionId == 0) - { - strTitle = wxT("Installazione di tipo Server"); - strBody = wxT("Digitare nel campo 'Cartella programma' il percorso completo della cartella dove si desidera installare il programma. "); - strBody += wxT("Il percorso consigliato e' C:\\APPNAME
"); - strBody += wxT("Digitare nel campo 'Cartella dati' il percorso completo della cartella dove si desidera installare l'area dati. "); - strBody += wxT("Il percorso consigliato e' C:\\APPNAME\\dati
"); - strBody += wxT("Le cartelle del programma e dei dati dovranno essere condivise in modalita' lettura/scrittura agli utenti di sistema e di rete che utilizzeranno il software PRODUCT. "); - strBody += wxT("In mancanza di tale condivisione nessun client potra' accedere al server!
"); - strBody += wxT("Gestore autorizzazioni: e' il software che permette di gestire una chiave di protezione hardware multiutenza condivisa in rete. "); - strBody += wxT("Installando tale software e' necessario specificare il computer su cui e' montata la chiave di protezione multiutenza."); - strBody += wxT("Viene di default proposto il computer su cui si sta eseguendo l'installazione di PRODUCT (localhost).
"); - strBody += wxT("Gestore dizionari: e' il software che permette di utilizzare PRODUCT in lingue diverse dall'italiano. "); - strBody += wxT("Per l'installazione di questo software viene di default proposto il computer su cui si sta eseguendo l'installazione di PRODUCT (localhost).
"); - strBody += wxT("Modalita' di esecuzione programmi di gestione
");
- strBody += wxT("Come servizi: i programmi di gestione vengono eseguiti come servizi di Windows; questa e' la modalita' consigliata ed e' obbligatoria in caso di installazione con Windows 2003/2008
");
- strBody += wxT("Nel menu esecuzione automatica: i programmi di gestione vengono eseguiti automaticamente al primo accesso di un utente al server di PRODUCT; usare questa modalita' solo nell'impossibilita' di utilizzare la precedente
Digitare nel campo 'Cartella programma' il percorso completo della cartella dove si desidera installare il programma. "); + strBody += wxT("Il percorso consigliato e' C:\\APPNAME
"); + strBody += wxT("Digitare nel campo 'Cartella dati' il percorso completo della cartella dove si desidera installare l'area dati. "); + strBody += wxT("Il percorso consigliato e' C:\\APPNAME\\dati
"); + strBody += wxT("Le cartelle del programma e dei dati dovranno essere condivise in modalita' lettura/scrittura agli utenti di sistema e di rete che utilizzeranno il software PRODUCT. "); + strBody += wxT("In mancanza di tale condivisione nessun client potra' accedere al server!
"); + strBody += wxT("Gestore autorizzazioni: e' il software che permette di gestire una chiave di protezione hardware multiutenza condivisa in rete. "); + strBody += wxT("Installando tale software e' necessario specificare il computer su cui e' montata la chiave di protezione multiutenza."); + strBody += wxT("Viene di default proposto il computer su cui si sta eseguendo l'installazione di PRODUCT (localhost).
"); + strBody += wxT("Gestore dizionari: e' il software che permette di utilizzare PRODUCT in lingue diverse dall'italiano. "); + strBody += wxT("Per l'installazione di questo software viene di default proposto il computer su cui si sta eseguendo l'installazione di PRODUCT (localhost).
"); + strBody += wxT("Modalita' di esecuzione programmi di gestione
");
+ strBody += wxT("Come servizi: i programmi di gestione vengono eseguiti come servizi di Windows; questa e' la modalita' consigliata ed e' obbligatoria in caso di installazione con Windows 2003/2008
");
+ strBody += wxT("Nel menu esecuzione automatica: i programmi di gestione vengono eseguiti automaticamente al primo accesso di un utente al server di PRODUCT; usare questa modalita' solo nell'impossibilita' di utilizzare la precedente
E' stata rilevata una versione di Windows che consente sessioni remote (es. Windows 2008 Server) ed č quindi possibile una installazione di questo tipo
"); strBody = wxT("Digitare nel campo 'Cartella programma' il percorso completo della cartella dove si desidera installare il programma. "); strBody += wxT("Il percorso consigliato e' C:\\APPNAME
"); strBody += wxT("Digitare nel campo 'Cartella dati' il percorso completo della cartella dove si desidera installare l'area dati. "); @@ -1178,10 +1178,10 @@ CampoWizardPage7::CampoWizardPage7(wxWizard* parent) : CampoWizardPage(parent) //check installa authoriz wxCheckBox* chAuthoriz = new wxCheckBox(this, 705, wxT("Installa il gestore delle autorizzazioni")); //e' obbligatorio installare authoriz in caso di terminal server! - if (nSessionId == 0) - chAuthoriz->SetValue(false); - else + if (nVersion >= W2003) chAuthoriz->SetValue(true); + else + chAuthoriz->SetValue(false); gbsSizer->Add(chAuthoriz, wxGBPosition(2, 1)); //server authoriz @@ -1202,13 +1202,15 @@ CampoWizardPage7::CampoWizardPage7(wxWizard* parent) : CampoWizardPage(parent) //quinta riga della griglia //radiobutton con i tipi di installazione wxArrayString asInstType; - if (nSessionId == 0) + if (nVersion >= W2003) + { + asInstType.Add("Come servizi (obbligatorio)"); + } + else { asInstType.Add("Come servizi (consigliato)"); asInstType.Add("Nel menu esecuzione automatica"); } - else - asInstType.Add("Come servizi (obbligatorio)"); m_pRadioBox = new wxRadioBox(this, 709, "Modalita' di esecuzione gestori", wxDefaultPosition, wxDefaultSize, asInstType, 0, wxRA_SPECIFY_COLS); @@ -1546,10 +1548,7 @@ bool CampoWizardPage10::TransferDataToWindow() switch (_uInstallType) { case it_server: //server - if (GetSessionId() > 0) - _strInstallType = "Terminal Server"; - else - _strInstallType = "Server"; + _strInstallType = "Server"; _strPrgLocPath = cw.GetPrgLocPath(); _strDataPath = cw.GetDataPath(); _strSrvAuth = cw.GetSrvAuth();