Patch level :10.0 268 (solo cd)

Files correlati     :
Ricompilazione Demo : [ ]
Commento            :
0001236: installazione su Vista
Descrizione  in caso di sistema operativo = vista l'installazione standard permette solo di installare come terminal server.
Dei nostri clienti nessuno mi risulta abbia vista come server, sicuramente ne abbiamo come postazioni singole e come client (es. cliente Maya ).


git-svn-id: svn://10.65.10.50/trunk@18602 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
luca 2009-03-25 09:18:15 +00:00
parent 224e375269
commit 90d4eb9aa9
4 changed files with 221 additions and 66 deletions

View File

@ -1,5 +1,5 @@
[MAIN]
OEM =
OEM = 0
[OEM_0]
Administrator = Œ<EFBFBD>

View File

@ -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

View File

@ -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);

View File

@ -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("<p><b>Standard (scelta consigliata)</b>. Installazione su postazione singola, con programmi e dati sul disco locale del computer</p>");
strBody += wxT("<p><b>Installazioni di rete</b> (per utenti esperti)</p>");
strBody += wxT("<p><b>Server</b>: Computer in rete sul quale sono presenti una copia, utilizzata o meno, dei programmi (server programmi) e larea dati (server dati). ");
strBody += wxT("In una installazione in rete di <b><i>PRODUCT</i></b> e' necessario sia presente un unica postazione di tipo server, ");
strBody += wxT("e deve essere installata per prima!</p>");
strBody += wxT("<p><b>Client</b>: 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!</p>");
//sistema multissesione remoto (win2003srv etc.)
if (nVersion >= W2003)
{
strBody = wxT("<p><b>Standard (scelta consigliata)</b>. Installazione su postazione singola, con programmi e dati sul disco locale del computer</p>");
strBody += wxT("<p><b>Installazioni di rete</b> (per utenti esperti)</p>");
strBody += wxT("<p><b>Server</b>: Computer in rete sul quale sono presenti una copia, utilizzata o meno, dei programmi (server programmi) e larea dati (server dati). ");
strBody += wxT("In una installazione in rete di <b><i>PRODUCT</i></b> e' necessario sia presente un unica postazione di tipo server, ");
strBody += wxT("e deve essere installata per prima!</p>");
strBody += wxT("<p><b>Client</b>: 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!</p>");
}
else
{
strBody += wxT("<p><b>Terminal Server</b>: 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.</p>");
strBody += wxT("<p>Selezionando configurazione Terminal Server <i>e' necessario</i> installare il gestore delle autorizzazioni per ");
strBody += wxT("poter gestire l'accesso contemporaneo di piu' utenti.</p>");
strBody += wxT("<p></p>");
strBody += wxT("<p>E' stata rilevata una versione di Windows che consente sessioni remote (es. Windows 2008 Server)</p>");
strBody += wxT("<p>Questa versione di Windows supporta un ulteriore tipo di installazione di <b><i>PRODUCT</i></b>: </p>");
strBody += wxT("<p><b>Terminal Server:</b> L'installazione e' unica e viene utilizzata dagli utenti di sistema quando aprono una sessione sul server.");
strBody += wxT("In questo caso <i>e' necessario scegliere l'installazione Server ed installare il gestore delle autorizzazioni!</i>");
strBody += wxT("ATTENZIONE! Selezionare l'installazione tipo Terminal Server solo se necessario!</p>");
}
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("<p>Digitare nel campo <b>'Cartella programma'</b> il percorso completo della cartella dove si desidera installare il programma. ");
strBody += wxT("Il percorso consigliato e' <i>C:\\APPNAME</i> </p>");
strBody += wxT("<p>Digitare nel campo <b>'Cartella dati'</b> il percorso completo della cartella dove si desidera installare l'area dati. ");
strBody += wxT("Il percorso consigliato e' <i>C:\\APPNAME\\dati</i> </p>");
strBody += wxT("<p>Le cartelle del programma e dei dati <b><u>dovranno essere condivise in modalita' lettura/scrittura</u></b> agli utenti di sistema e di rete che utilizzeranno il software <b><i>PRODUCT</i></b>. ");
strBody += wxT("In mancanza di tale condivisione nessun client potra' accedere al server!</p>");
strBody += wxT("<p><b>Gestore autorizzazioni:</b> 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).</p>");
strBody += wxT("<p><b>Gestore dizionari:</b> 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).</p>");
strBody += wxT("<p><b>Modalita' di esecuzione programmi di gestione</b><br>");
strBody += wxT("<u>Come servizi:</u> 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<br>");
strBody += wxT("<u>Nel menu esecuzione automatica:</u> 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</p>");
}
else
//installazione di tipo Server normale
strTitle = wxT("Installazione di tipo Server");
strBody = wxT("<p>Digitare nel campo <b>'Cartella programma'</b> il percorso completo della cartella dove si desidera installare il programma. ");
strBody += wxT("Il percorso consigliato e' <i>C:\\APPNAME</i> </p>");
strBody += wxT("<p>Digitare nel campo <b>'Cartella dati'</b> il percorso completo della cartella dove si desidera installare l'area dati. ");
strBody += wxT("Il percorso consigliato e' <i>C:\\APPNAME\\dati</i> </p>");
strBody += wxT("<p>Le cartelle del programma e dei dati <b><u>dovranno essere condivise in modalita' lettura/scrittura</u></b> agli utenti di sistema e di rete che utilizzeranno il software <b><i>PRODUCT</i></b>. ");
strBody += wxT("In mancanza di tale condivisione nessun client potra' accedere al server!</p>");
strBody += wxT("<p><b>Gestore autorizzazioni:</b> 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).</p>");
strBody += wxT("<p><b>Gestore dizionari:</b> 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).</p>");
strBody += wxT("<p><b>Modalita' di esecuzione programmi di gestione</b><br>");
strBody += wxT("<u>Come servizi:</u> 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<br>");
strBody += wxT("<u>Nel menu esecuzione automatica:</u> 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</p>");
//se si ha un sistema multissesione remota (es. win2003srv ecc.)
if (nVersion >= W2003)
{
strTitle = wxT("Installazione di tipo Terminal Server");
strBody += wxT("<p>E' stata rilevata una versione di Windows che consente sessioni remote (es. Windows 2008 Server) ed è quindi possibile una installazione di questo tipo</p>");
strBody = wxT("<p>Digitare nel campo <b>'Cartella programma'</b> il percorso completo della cartella dove si desidera installare il programma. ");
strBody += wxT("Il percorso consigliato e' <i>C:\\APPNAME</i> </p>");
strBody += wxT("<p>Digitare nel campo <b>'Cartella dati'</b> 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();