Patch level :
Files correlati : Ricompilazione Demo : [ ] Commento : git-svn-id: svn://10.65.10.50/trunk@15566 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
0ca3c99f15
commit
3feeb4ce9f
@ -1431,7 +1431,7 @@ CampoWizardPage8::CampoWizardPage8(wxWizard* parent) : CampoWizardPage(parent)
|
|||||||
|
|
||||||
|
|
||||||
/**********************************************************************************************************/
|
/**********************************************************************************************************/
|
||||||
// 9 pagina con la creazione icona sul desktop e lanciatore del lerch
|
// 9 pagina con la creazione icona sul desktop e lanciatore del lurch
|
||||||
/**********************************************************************************************************/
|
/**********************************************************************************************************/
|
||||||
class CampoWizardPage9 : public CampoWizardPage
|
class CampoWizardPage9 : public CampoWizardPage
|
||||||
{
|
{
|
||||||
@ -1907,6 +1907,7 @@ class CampoSetup : public wxApp
|
|||||||
private:
|
private:
|
||||||
bool WriteRegistryKey(HKEY hBaseKey, const wxString strKey, const wxString& strValue) const;
|
bool WriteRegistryKey(HKEY hBaseKey, const wxString strKey, const wxString& strValue) const;
|
||||||
wxString ReadRegistryKey(HKEY hBaseKey, const wxString strKey) const;
|
wxString ReadRegistryKey(HKEY hBaseKey, const wxString strKey) const;
|
||||||
|
wxString GetFolderPath(unsigned int uPathID) const;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
DECLARE_EVENT_TABLE()
|
DECLARE_EVENT_TABLE()
|
||||||
@ -1966,11 +1967,15 @@ bool CampoSetup::WriteRegistryKey(HKEY hBaseKey, const wxString strKey, const wx
|
|||||||
{
|
{
|
||||||
HKEY hKey = NULL;
|
HKEY hKey = NULL;
|
||||||
DWORD dw = 0;
|
DWORD dw = 0;
|
||||||
bool ok = ::RegCreateKeyEx(hBaseKey, strKey, 0, REG_NONE,
|
//splitta la stringa in path e valore
|
||||||
|
wxString strPath, strName;
|
||||||
|
wxFileName::SplitPath(strKey, &strPath, &strName, NULL);
|
||||||
|
|
||||||
|
bool ok = ::RegCreateKeyEx(hBaseKey, strPath, 0, REG_NONE,
|
||||||
REG_OPTION_NON_VOLATILE, KEY_WRITE|KEY_READ, NULL, &hKey, &dw) == ERROR_SUCCESS;
|
REG_OPTION_NON_VOLATILE, KEY_WRITE|KEY_READ, NULL, &hKey, &dw) == ERROR_SUCCESS;
|
||||||
if (ok)
|
if (ok)
|
||||||
{
|
{
|
||||||
ok = ::RegSetValueEx(hKey, NULL, 0, REG_SZ,
|
ok = ::RegSetValueEx(hKey, strName, 0, REG_SZ,
|
||||||
(BYTE*)(const wxChar*)strValue, DWORD(2*strValue.Len()+2)) == ERROR_SUCCESS;
|
(BYTE*)(const wxChar*)strValue, DWORD(2*strValue.Len()+2)) == ERROR_SUCCESS;
|
||||||
::RegCloseKey(hKey);
|
::RegCloseKey(hKey);
|
||||||
}
|
}
|
||||||
@ -1987,6 +1992,13 @@ bool CampoSetup::WriteLocalMachineRegistryKey(const wxString strKey, const wxStr
|
|||||||
return WriteRegistryKey(HKEY_LOCAL_MACHINE, strKey, strValue);
|
return WriteRegistryKey(HKEY_LOCAL_MACHINE, strKey, strValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
wxString CampoSetup::GetFolderPath(unsigned int uPathID) const
|
||||||
|
{
|
||||||
|
TCHAR szPath[MAX_PATH] = wxT("");
|
||||||
|
HRESULT hres = ::SHGetFolderPath(NULL, uPathID, NULL, SHGFP_TYPE_CURRENT, szPath);
|
||||||
|
return szPath;
|
||||||
|
}
|
||||||
|
|
||||||
void CampoSetup::AssociateExtension(const wxFileName& strExeFile, const wxString strExt)
|
void CampoSetup::AssociateExtension(const wxFileName& strExeFile, const wxString strExt)
|
||||||
{
|
{
|
||||||
// Register icon and application
|
// Register icon and application
|
||||||
@ -2001,23 +2013,46 @@ void CampoSetup::AssociateExtension(const wxFileName& strExeFile, const wxString
|
|||||||
|
|
||||||
bool CampoSetup::CreateAutostartMode(const int iSrvAutostartMode, const wxString& strPath)
|
bool CampoSetup::CreateAutostartMode(const int iSrvAutostartMode, const wxString& strPath)
|
||||||
{
|
{
|
||||||
|
wxFileName strExe(strPath, wxT("lurch.exe"));
|
||||||
|
strExe.AppendDir("servers");
|
||||||
switch (iSrvAutostartMode)
|
switch (iSrvAutostartMode)
|
||||||
{
|
{
|
||||||
//esecuzione server come servizi (magia!)
|
//esecuzione server come servizi (magia!)
|
||||||
case 0:
|
case 0:
|
||||||
{
|
{
|
||||||
wxString strValue = ReadLocalMachineRegistryKey("SYSTEM\\CurrentControlSet\\Services\\Lerch");
|
//cerca se non esiste per caso gia' da una precedente installazione..
|
||||||
if (strValue.IsEmpty())
|
//..non serve piu' a un cazzo ma si e' tenuto come prova in debug di lettura del registry!
|
||||||
|
wxString strValue = ReadLocalMachineRegistryKey("SYSTEM\\CurrentControlSet\\Services\\Lurch\\Parameters\\Application");
|
||||||
|
|
||||||
|
//elimina un eventuale servizio precedente (senno' col cavolo che lo riesce a modificare!)
|
||||||
|
wxString strRemove = "instsrv Lurch REMOVE";
|
||||||
|
const long lRemove = wxExecute(strRemove, wxEXEC_SYNC);
|
||||||
|
|
||||||
|
//aggiunge la voce ai servizi di windows (dentro strumenti di amministrazione)
|
||||||
|
wxString strCreateService = "instsrv Lurch ";
|
||||||
|
strCreateService += wxGetCwd();
|
||||||
|
strCreateService += "\\srvany.exe";
|
||||||
|
//esegue il programma di installazione servizi di Windows creando la voce
|
||||||
|
const long lExec = wxExecute(strCreateService, wxEXEC_SYNC);
|
||||||
|
if (lExec >= 0)
|
||||||
{
|
{
|
||||||
const wxString strCreateService = "./setup/instsrv.exe lerch ./setup/srvany.exe";
|
//crea le voci nel registry di windows
|
||||||
wxExecute(strCreateService, wxEXEC_SYNC);
|
WriteLocalMachineRegistryKey("SYSTEM\\CurrentControlSet\\Services\\Lurch\\Parameters\\Application", strExe.GetFullPath());
|
||||||
|
wxString strExecService = GetFolderPath(CSIDL_SYSTEM);
|
||||||
|
strExecService += "\\NET START Lurch";
|
||||||
|
//avvia il servizio
|
||||||
|
const long lExecLurch = wxExecute(strExecService, wxEXEC_SYNC);
|
||||||
|
if (lExecLurch < 0)
|
||||||
|
WarningBox("Impossibile eseguire il servizio del gestore applicazioni.\nLanciarlo manualmente dagli strumenti di amministrazione nel pannello di controllo!");
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
WarningBox("Impossibile registrare il servizio per l'esecuzione automatica del gestore applicazioni.\nSelezionare una diversa modalita' di esecuzione!");
|
||||||
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
//link nella cartella esecuzione automatica
|
//link nella cartella esecuzione automatica
|
||||||
case 1:
|
case 1:
|
||||||
{
|
{
|
||||||
const wxFileName strExe(strPath, wxT("/servers/lerch.exe"));
|
|
||||||
CreateIcon(CSIDL_COMMON_STARTUP, strPath);
|
CreateIcon(CSIDL_COMMON_STARTUP, strPath);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -2033,17 +2068,15 @@ bool CampoSetup::CreateIcon(unsigned int csidl, const wxFileName& strExeFile) co
|
|||||||
{
|
{
|
||||||
//csidl = CSIDL_COMMON_DESKTOPDIRECTORY = desktop
|
//csidl = CSIDL_COMMON_DESKTOPDIRECTORY = desktop
|
||||||
//csidl = CSIDL_COMMON_STARTUP = all users esecuzione automatica
|
//csidl = CSIDL_COMMON_STARTUP = all users esecuzione automatica
|
||||||
TCHAR szDesktopPath[MAX_PATH] = wxT("");
|
wxString szDesktopPath = GetFolderPath(csidl);
|
||||||
HRESULT hres = ::SHGetFolderPath(NULL, csidl, NULL, SHGFP_TYPE_CURRENT, szDesktopPath);
|
|
||||||
|
|
||||||
if (szDesktopPath[0] != '\0')
|
if (!szDesktopPath.IsEmpty())
|
||||||
{
|
{
|
||||||
CoInitialize(NULL);
|
CoInitialize(NULL);
|
||||||
|
|
||||||
// Get a pointer to the IShellLink interface.
|
// Get a pointer to the IShellLink interface.
|
||||||
IShellLink* psl;
|
IShellLink* psl;
|
||||||
hres = CoCreateInstance(CLSID_ShellLink, NULL,
|
HRESULT hres = CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, IID_IShellLink, (void**)&psl);
|
||||||
CLSCTX_INPROC_SERVER, IID_IShellLink, (void**)&psl);
|
|
||||||
if (SUCCEEDED(hres))
|
if (SUCCEEDED(hres))
|
||||||
{
|
{
|
||||||
IPersistFile* ppf;
|
IPersistFile* ppf;
|
||||||
@ -2096,8 +2129,8 @@ void CampoSetup::OnTimer(wxTimerEvent& WXUNUSED(e))
|
|||||||
//se sta installando campo in postazione server e deve installare un gestore di servizi
|
//se sta installando campo in postazione server e deve installare un gestore di servizi
|
||||||
if (uInstallationType == 1)
|
if (uInstallationType == 1)
|
||||||
{
|
{
|
||||||
const bool bInstallLerch = pWizard->GetInstUseAuth() | pWizard->GetInstUseDict();
|
const bool bInstallLurch = pWizard->GetInstUseAuth() | pWizard->GetInstUseDict();
|
||||||
if (bInstallLerch)
|
if (bInstallLurch)
|
||||||
{
|
{
|
||||||
const int iSrvAutostartMode = pWizard->GetSrvAutostartMode();
|
const int iSrvAutostartMode = pWizard->GetSrvAutostartMode();
|
||||||
CreateAutostartMode(iSrvAutostartMode, strDest);
|
CreateAutostartMode(iSrvAutostartMode, strDest);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user