function VOID RestartAndRun(szParams) string RegPath,sVersion,sVer; number nSize,nType,nResult; begin RegDBSetDefaultRoot(HKEY_LOCAL_MACHINE); RegPath = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\RunOnce"; nType = REGDB_STRING; nSize = -1; RegDBSetKeyValueEx (RegPath, "setup.exe", nType, szParams, nSize); end;
Programowanie c++/c#/delphi/javas/php/installscript/nativescript
Przykłady - przydatne funkcje
czwartek, 28 października 2010
Restart systemu podczas instalacji i kontynuowanie InstallShield
Prosta funkcja, która pozwala zapisać parametry restartu systemu i uruchomienie instalatora z odpowiednimi parametrami
Etykiety:
InstallShield - funkcje
Odczyt wersji zdalnego serwera SQL InstallShield
Funkcja odczytuje wersję serwera SQL. Wymaganiem jest podanie użytkownika z dostępem do bazy master serwera.
Parametry:
-sServerName - nazwa serwera zdalnego (z instancją)
-sUserName - nazwa użytkownika
-sUserPwd - hasło użytkownika
- bLog - zapis do pliku log
Wartości zwracane:
-1 - nie udało się pobrać wersji serwera
80 - SQL2000
90 - SQL2005
100 -SQL2008
Parametry:
-sServerName - nazwa serwera zdalnego (z instancją)
-sUserName - nazwa użytkownika
-sUserPwd - hasło użytkownika
- bLog - zapis do pliku log
Wartości zwracane:
-1 - nie udało się pobrać wersji serwera
80 - SQL2000
90 - SQL2005
100 -SQL2008
function int GetRemoteSQLVersion(sServerName, sUserName, sUserPwd, bLog) OBJECT objConn, objRST; STRING sConnString; STRING szADOConnObjID; STRING sSQL,szVersion, szVer; int nResult; begin nResult = -1; sConnString = "Driver={SQL Server};Persist Security Info=False;"; sConnString = sConnString + "server=" + sServerName + ";"; sConnString = sConnString + "uid=" + sUserName + ";"; sConnString = sConnString + "pwd=" + sUserPwd + ";"; sConnString = sConnString + "database=master"; sSQL = "SELECT SERVERPROPERTY('ProductVersion') AS ProductVersion"; try if (bLog) then WriteLog(0,"* Odczyt wersji Serwera SQL..."); endif; szADOConnObjID = "ADODB.Connection"; set objConn = CreateObject(szADOConnObjID); if (IsObject(objConn)) then objConn.ConnectionString = sConnString; //objConn.CommandTimeout = 999999; objConn.Open; set objRST = objConn.Execute(sSQL); szVersion = objRST("ProductVersion"); if (StrLength(szVersion)>0) then StrSub(szVer,szVersion,0,StrFind(szVersion,".")); switch (szVer) case "8" : nResult=80; if (bLog) then WriteLog(1,"- Serwera SQL 2000"); endif; case "9" : nResult=90; if (bLog) then WriteLog(1,"- Serwera SQL 2005"); endif; case "10": nResult=100;if (bLog) then WriteLog(1,"- Serwera SQL 2008"); endif; endswitch; endif; objConn.Close; endif; set objConn = NOTHING; set objRST = NOTHING; catch if (bLog) then WriteLog(1," - Nie można uzyskać połączenia z bazą master na użytkownika \""+sUserName+"\""); endif; endcatch; return nResult; end;
Etykiety:
InstallShield - SQL
Odczyt prędkości procesora InstallShield
Funkcja zwraca wartość numeryczną podaną w MHz - pierwszego jądra procesora
function NUMBER GetCPUSpeed( bLog) STRING svValue; NUMBER nvType, nvSize, nSpeed; begin RegDBSetDefaultRoot(HKEY_LOCAL_MACHINE); nvSize = -1; nvType = REGDB_STRING; RegDBGetKeyValueEx("HARDWARE\\DESCRIPTION\\System\\CentralProcessor\\0", "~MHz", nvType, svValue, nvSize); if (bLog) then WriteLog(1,"- taktowanie procesora: "+svValue+"MHz"); endif; StrToNum(nSpeed,svValue); return nSpeed; end;
Etykiety:
InstallShield - funkcje
Uruchomienie domyślnej przeglądarki z adresem URL strony InstallShield
Funkcja Otwiera stronę o podanym adresie URL (szlink) w domyślnej przeglądarce internetowej
Parametry:
-szlink - adres URL strony
-bLog - zapis do pliku log
Wartości zwracane: true/false;
Parametry:
-szlink - adres URL strony
-bLog - zapis do pliku log
Wartości zwracane: true/false;
function BOOL StartWebPage(szlink, bLog) LIST listSubKeys; STRING KLUCZ, sKey; NUMBER nReturn, nType, nSize; BOOL bResult; begin if (bLog) then WriteLog(0,"* Uruchomienie przeglądarki ze stroną:"+szlink); endif; bResult = FALSE; RegDBSetDefaultRoot(HKEY_CLASSES_ROOT); KLUCZ = "http\\shell\\open\\command"; if (RegDBGetKeyValueEx(KLUCZ, "", nType , sKey, nSize )=0 ) then StrReplace(sKey,'"','',0); if (StrFind(sKey,"exe")>0) then StrSub(sKey, sKey,0,StrFind(sKey,"exe")+3); endif; sKey = '"' + sKey + '"'; if (LaunchApplication (sKey, szlink, "", SW_NORMAL, 0, LAAW_OPTION_USE_SHELLEXECUTE | LAAW_OPTION_NOWAIT | LAAW_OPTION_SHOW_HOURGLASS)== ISERR_SUCCESS ) then //if LaunchApp(sKey, szlink)=0 then bResult = TRUE; if (bLog) then WriteLog(2,"-uruchomiono"); endif; else if (bLog) then WriteLog(2,"-nie udało się uruchomić przeglądarki"); WriteLog(2," polecenie: "+sKey+", parametr: "+szlink); endif; endif; else if (bLog) then WriteLog(1,"- nie mogę odczytać klucza: HKEY_CLASSES_ROOT\\"+ KLUCZ); endif; endif; return bResult; end;
Etykiety:
InstallShield - funkcje
Odczyt ścieżki do pliku php.ini z konfiguracji serwera Apache
Funkcja umożliwia pobranie ścieżki do pliku php.ini bezpośrednio z pliku konfiguracji serwera Apache.
Parametry:
-szApacheConfigFile - ścieżka z plikiem konfiguracji apache
-svPHPIniDir - parametr referencyjny (zwraca ścieżkę pliku php.ini)
-bLog - plik log
Uwaga: Parametr svPHPIniDir jest wskaźnikiem i musi być wcześniej zadeklarowany
Wartości zwracane: true/false - chyba jasne :)
Parametry:
-szApacheConfigFile - ścieżka z plikiem konfiguracji apache
-svPHPIniDir - parametr referencyjny (zwraca ścieżkę pliku php.ini)
-bLog - plik log
Uwaga: Parametr svPHPIniDir jest wskaźnikiem i musi być wcześniej zadeklarowany
Wartości zwracane: true/false - chyba jasne :)
function BOOL GetApachePHPIniDir(szApacheConfigFile, svPHPIniDir, bLog) BOOL bResult; LIST lsApache; string szLine; int i; begin if (bLog) then WriteLog(0,"* Pobieranie scieżki do php ini z konfiguracji Apache..."); endif; bResult = FALSE; if (Is(FILE_EXISTS,szApacheConfigFile)) then lsApache = ListCreate(STRINGLIST); ListReadFromFile ( lsApache, szApacheConfigFile ); //Odczyt Apache Conf if (ListCount(lsApache)>0) then ListSetIndex(lsApache,LISTFIRST); for i=0 to ListCount(lsApache)-1 ListCurrentString ( lsApache, szLine ); szLine = StrTrim(szLine); if (StrFind(szLine, "PHPIniDir")=0) then StrSub(svPHPIniDir, szLine, 9, StrLength(szLine)); svPHPIniDir = StrTrim(svPHPIniDir); StrReplace(svPHPIniDir,'"','',0); StrReplace(svPHPIniDir,"/","\\",0); if (bLog) then WriteLog(1,"- ścieżka do php.ini: "+svPHPIniDir); endif; bResult = TRUE; endif; ListSetIndex(lsApache,LISTNEXT); endfor; endif; endif; ListDestroy(lsApache); return bResult; end;
Etykiety:
InstallShield - Apache Serwer
Instalacja serwera Apache w trybie cichym w Installshield
Funkcja Instaluje Serwer Apache w trybie cichym.
Parametry:
- szPlik - Plik instalatora msi
- szPort - Port na którym serwer Apache ma prowadzić nasłuch
- szService - nazwa serwisu Apache
- bLog - zapisywanie wyniku do pliku log
Wartości zwracane: false/true
Parametry:
- szPlik - Plik instalatora msi
- szPort - Port na którym serwer Apache ma prowadzić nasłuch
- szService - nazwa serwisu Apache
- bLog - zapisywanie wyniku do pliku log
Wartości zwracane: false/true
function BOOL InstallApacheServer(szPlik, szPort, szService, bLog) string szParams; BOOL bResult; number nResult; begin bResult = FALSE; if (bLog) then WriteLog(0,"* Instalacja serwera Apache..."); endif; szParams = " /i \""+szPlik+"\" /passive /l \""+TARGETDIR ^ "apache_install.log\" SERVERADMIN=admin@localhost SERVERPORT="+szPort; if (LaunchApplication(WINSYSDIR ^ "msiexec.exe", szParams, "" , SW_HIDE, 0, LAAW_OPTION_USE_SHELLEXECUTE | LAAW_OPTION_WAIT | LAAW_OPTION_SHOW_HOURGLASS )<0) then WriteLog(2,"Błąd: Nie można zainstalować serwera Apache "); MessageBox ("Nie można zainstalować Serwera Apache", SEVERE); else while ((!(Is(FILE_EXISTS, TARGETDIR ^ "apache_install.log"))) || ( (Is(FILE_EXISTS, TARGETDIR ^ "apache_install.log"))&& (Is(FILE_LOCKED,TARGETDIR ^ "apache_install.log")) ) ); Sleep(200); endwhile; bResult = TRUE; if (bLog) then WriteLog(2,"-zainstalowano serwer, nasłuch na porcie:"+szPort+""); endif; endif; return bResult; end;
Etykiety:
InstallShield - Apache Serwer
poniedziałek, 25 października 2010
Instalacja, obsługa usługi serwera Apache 2.x w InstallShield
Funkcja pozwala na zainstalowanie, deinstalację, aktualizację, uruchomienie, zatrzymanie usługi serwera Apache
Parametry:
szPath - ścieżka do zainstalowanego serwera
szFile - nazwa pliku serwera Apache
nAction - wybrana akcja 0..4 (patrz poniżej)
bLog - czy rejestrować w logu informacje
Uwaga: Funkcja korzysta z zewnętrznej funkcji SdShowMsgWait()
Parametry:
Uwaga: Funkcja korzysta z zewnętrznej funkcji SdShowMsgWait()
function BOOL ApacheService(szPath, szFile, szService, nAction, bLog) BOOL bResult; STRING szAction, szLog, szMsg; number nvState; begin bResult = FALSE; switch (nAction) case 0: if (StrLength(szService)=0) then szAction = " -k stop "; szLog = "- zatrzymanie usługi Apache"; else szAction = " -k stop -n \""+szService+"\" "; szLog = "- zatrzymanie usługi Apache jako \""+szService+"\""; endif; szMsg = "Zatrzymanie serwera Apache..."; case 1: if (StrLength(szService)=0) then szAction = " -k start "; szLog = "- uruchomienie usługi Apache"; else szAction = " -k start -n \""+szService+"\" "; szLog = "- uruchomienie usługi Apache jako \""+szService+"\""; endif; szMsg = "Uruchomienie serwera Apache..."; case 2: if (StrLength(szService)=0) then szAction = " -k restart "; szLog = "- restart usługi Apache"; else szAction = " -k restart -n \""+szService+"\" "; szLog = "- restart usługi Apache jako \""+szService+"\""; endif; szMsg = "Restart serwera Apache..."; case 3: if (StrLength(szService)=0) then szAction = " -k install "; szLog = "- instalacja usługi Apache"; else szAction = " -k install -n \""+szService+"\" "; szLog = "- instalacja usługi Apache jako \""+szService+"\""; endif; szMsg = "Instalacja usługi serwera Apache..."; case 4: if (StrLength(szService)=0) then szAction = " -k uninstall "; szLog = "- deinstalacja usługi Apache"; else szAction = " -k uninstall -n \""+szService+"\" "; szLog = "- deinstalacja usługi Apache jako \""+szService+"\""; endif; szMsg = "Deinstalacja usługi serwera Apache..."; endswitch; if (StrLength(szService)=0) then szService = "Apache2.2"; endif; if Is(FILE_EXISTS, szPath ^ szFile) then SdShowMsgWait(szMsg, nProgress, 8, TRUE); if (bLog) then WriteLog(1,szLog); endif; if LaunchApplication(szPath ^ szFile, szAction, szPath, SW_HIDE, 0, LAAW_OPTION_USE_SHELLEXECUTE | LAAW_OPTION_WAIT | LAAW_OPTION_SHOW_HOURGLASS)=ISERR_SUCCESS then Sleep(1000); //Tak na wszelki słuczaj switch (nAction) //STOP// case 0: if ServiceExistsService(szService) then repeat Sleep(500); ServiceGetServiceState (szService, nvState ); SdShowMsgWait(szMsg, nProgress, 8, TRUE); until (nvState = SERVICE_STOPPED); if (nvState = SERVICE_STOPPED) then if (bLog) then WriteLog(2,"- usługa \""+szService+"\" zatrzymana"); endif; bResult = TRUE; endif; else if (bLog) then WriteLog(2,"- nie można zatrzymać usługi \""+szService+"\", usługa nie jest zainstalowana w systemie!"); endif; bResult = TRUE; endif; //START// case 1: if ServiceExistsService(szService) then repeat Sleep(500); ServiceGetServiceState(szService, nvState); SdShowMsgWait(szMsg, nProgress, 8, TRUE); until (nvState = SERVICE_RUNNING)||(nvState = SERVICE_STOPPED); if (nvState = SERVICE_RUNNING) then if (bLog) then WriteLog(2,"- usługa \""+szService+"\" uruchomiona"); endif; bResult = TRUE; endif; if (nvState = SERVICE_STOPPED) then if (bLog) then WriteLog(2,"- usługa \""+szService+"\" nie została uruchomiona"); endif; bResult = FALSE; endif; else if (bLog) then WriteLog(2,"- nie można uruchomić usługi \""+szService+"\", usługa nie jest zainstalowana w systemie!"); endif; endif; //INSTALL// case 3: if ServiceExistsService(szService) then if (bLog) then WriteLog(2,"- usługa \""+szService+"\" zainstalowana"); endif; bResult = TRUE; else if (bLog) then WriteLog(2,"- nie można zainstalować usługi \""+szService+"\", błąd instalacji usługi"); endif; endif; //UNINSTALL// case 4: if !ServiceExistsService(szService) then if (bLog) then WriteLog(2,"- usługa \""+szService+"\" usunięta"); endif; bResult = TRUE; else if (bLog) then WriteLog(2,"- nie można odinstalować usługi \""+szService+"\", błąd deinstalacji usługi"); endif; endif; endswitch; else bResult = FALSE; if (bLog) then WriteLog(1,"Błąd uruchomienia serwisu: \""+szPath ^ szFile+"\" parametr:\""+szAction+"\""); endif; endif; SdShowMsgWait(szMsg, nProgress, 8, FALSE); else if bLog then WriteLog(1,"Brak pliku \""+szPath ^ szFile+"\" "); endif; endif; return bResult; end;
Etykiety:
InstallShield - Apache Serwer
Instalacja usługi Apache Tomcat 6.x
Funkcja pozwala zainstalować usługę, zatrzymać, uruchomić, zaaktualizować parametry usługi i deinstalować usługę Apache Tomcat
Parametry:
szPath - ścieżka zainstalowanego serwera Apache Tomcat 6.x
nAction - 0..5 wybrana akcja dotycząca usługi
szParams - można pominąć - future
bLog - zapis do logu informacji
Parametry:
szPath - ścieżka zainstalowanego serwera Apache Tomcat 6.x
nAction - 0..5 wybrana akcja dotycząca usługi
szParams - można pominąć - future
bLog - zapis do logu informacji
function BOOL TomcatService(szPath, nAction, szParams, bLog) BOOL bResult; STRING szLog, szProgram, szAction; begin switch (nAction) case 0: szAction = '//TS//'; szLog = " uruchomienie usługi Tomcat jako aplikacja konsolowa"; case 1: szAction = '//SS//'; szLog = " zatrzymanie usługi Tomcat"; case 2: szAction = '//US//'; szLog = " aktualizacja parametrow usługi Tomcat"; case 3: szAction = '//IS//'; szLog = " instalacja usługi Tomcat"; case 4: szAction = '//DS//Tomcat6'; szLog = " deinstalacja usługi Tomcat"; endswitch; if Is(FILE_EXISTS, szPath ^ "tomcat6.exe") then szProgram = szPath ^ "tomcat6.exe"; if LaunchApplication(szProgram, szAction, szPath, SW_HIDE, 0, LAAW_OPTION_USE_SHELLEXECUTE |
LAAW_OPTION_WAIT | LAAW_OPTION_SHOW_HOURGLASS)=ISERR_SUCCESS then bResult = TRUE; else bResult = FALSE; endif; else if bLog then WriteLog(1,"Brak pliku \"tomcat6.exe\" "); endif; endif; return bResult; end;
Etykiety:
InstallShield - Apache Tomcat
ListaBox z włączonym lub wyłączonym stylem LBS_EXTENDEDSEL
Przy tworzeniu okna dialogowego jest możliwość ustawienia właściwości LBS_EXTENDEDSEL,
dzięki której możemy wybrać kilka elementów jednocześnie z listy.
Problem pojawia się jeżeli chcemy ustawić właściwość listy dynamicznie w procesie
inicjacji okna. Niestety nie ma możliwości zmiany stylu okna już utworzonego
w InstallShield.
Prostym rozwiązaniem jest utworzenie 2 obiektów ListBox z różnymi stylami
i wyświetlanie odpowiedniej w razie potrzeby. Trudniejszym - dynamiczne
utworzenie listy w Oknie dialogowym.
dzięki której możemy wybrać kilka elementów jednocześnie z listy.
Problem pojawia się jeżeli chcemy ustawić właściwość listy dynamicznie w procesie
inicjacji okna. Niestety nie ma możliwości zmiany stylu okna już utworzonego
w InstallShield.
Prostym rozwiązaniem jest utworzenie 2 obiektów ListBox z różnymi stylami
i wyświetlanie odpowiedniej w razie potrzeby. Trudniejszym - dynamiczne
utworzenie listy w Oknie dialogowym.
Etykiety:
InstallShield - Porady
Subskrybuj:
Posty (Atom)