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:
Komentarze (Atom)