Reptile ReX
Użytkownik
- Dołączył
- Maj 15, 2007
- Posty
- 248
Po dłuższej nieobecności poczułem wielką chęć na napisanie poradnika.
A więc dzisiaj przedstawię ciekawy sposób na stworzenie systemu aktualizacji.
Jak to będzie działać?
1.Będziemy łączyć się z serwerem
2.Dzięki PHP sprawdzimy czy istnieje nowsza wersja
3.Dzięki WebBrowser przeniesiemy Wynik do Memo
4.Odczytamy Memo i sprawdzimy czy znajduje się w nim odpowiedni tekst
5.Jeżeli znajduje się (Istnieje nowsza wersja), wtedy aktywujemy przycisk pobierania
6.Plik pobieramy funkcją URLMON + używamy Funkcji do podania lokalizacji
Co będziemy potrzebować:
-WebBrowser - Z zakładki ActiveX (Import Activex Controls >> Microsoft Internet Controls >> Install
-Serwer WWW z obsługą PHP
Zaczynamy:
Tworzymy plik php o treści:
Plik nazywamy np: update.php i wgrywamy na nasz serwer WWW
Przechodzimy do Delphi, tworzymy sobie jakąś ładną formę.
Dodajemy Na formę 2x Buttony, WebBrowser, Memo
Można też dodać tak jak ja jakieś wizualne komponenty typu: XPmanifest, ProgressBar, Ikonki
U mnie wygląda do tak:
Ustawiamy na formie BorderStyle na bsToolWindow
I zmniejszamy nasze okno aby ukryć Memo oraz Web Browser
Mniej więcej tak:
Dodajemy do uses:
Pod:
Wklejamy poniższą funkcję:
Klikamy na Button1 dwukrotnie i wklejamy poniższy kod:
Teraz w Zdarzeniu OnDocumentComplete w WebBrowser wklejamy:
Klikamy dwukrotnie na Button 2 i wklejamy:
Kompilujemy i Gotowe !
A więc dzisiaj przedstawię ciekawy sposób na stworzenie systemu aktualizacji.
Jak to będzie działać?
1.Będziemy łączyć się z serwerem
2.Dzięki PHP sprawdzimy czy istnieje nowsza wersja
3.Dzięki WebBrowser przeniesiemy Wynik do Memo
4.Odczytamy Memo i sprawdzimy czy znajduje się w nim odpowiedni tekst
5.Jeżeli znajduje się (Istnieje nowsza wersja), wtedy aktywujemy przycisk pobierania
6.Plik pobieramy funkcją URLMON + używamy Funkcji do podania lokalizacji
Co będziemy potrzebować:
-WebBrowser - Z zakładki ActiveX (Import Activex Controls >> Microsoft Internet Controls >> Install
-Serwer WWW z obsługą PHP
Zaczynamy:
Tworzymy plik php o treści:
PHP:
<?php
#Zamiast 1 podajemy cyfrę najnowszej wersji programu w moim wypadku to 1.0 więc 1
$AktualnaWersja = 1;
#Warunek sprawdzający czy GET o nazwie ver jest równy Aktualnej Wersji (czyt. 1)
if (strip_tags($_GET['ver']) == $AktualnaWersja) {
Echo ("Aktualna-Wersja");
}
#Warunek sprawdzajacy czy GET jest mniejszy od Aktualnej Wersji (czyt. 1)
if (strip_tags($_GET['ver']) < $AktualnaWersja) {
Echo("Download");
}
?>
Przechodzimy do Delphi, tworzymy sobie jakąś ładną formę.
Dodajemy Na formę 2x Buttony, WebBrowser, Memo
Można też dodać tak jak ja jakieś wizualne komponenty typu: XPmanifest, ProgressBar, Ikonki
U mnie wygląda do tak:
Ustawiamy na formie BorderStyle na bsToolWindow
I zmniejszamy nasze okno aby ukryć Memo oraz Web Browser
Mniej więcej tak:
Dodajemy do uses:
Kod:
ShlObj, Urlmon
Kod:
implementation
{$R *.dfm}
Kod:
function GetSpecialFolderPath(const Folder: Integer): string;
var
Path: array[0..MAX_PATH] of Char;
begin
SHGetSpecialFolderPath(0, Path, Folder , False);
Result := Path;
end;
Kod:
procedure TForm1.Button1Click(Sender: TObject);
begin
Bar.Position := 30;
Sleep(500);
WebBrowser1.Navigate('http://adres_twojej_strony.pl/update.php?ver=1');
end;
Kod:
procedure TForm1.WebBrowser1DocumentComplete(Sender: TObject;
const pDisp: IDispatch; var URL: OleVariant);
begin
Memo1.Lines.Clear;
Bar.Position := 60;
Sleep(500);
Memo1.Lines.Add(WebBrowser1.OleObject.Document.documentElement.innerText);
Bar.Position := 100;
Sleep(500);
if pos('Download',Memo1.Text)<>0 then
begin
Button1.Enabled := False;
Button2.Enabled := True;
MessageBox(0, 'Znaleziono nowszą wersje oprogramowania - Nacisnij "Pobierz"', 'Update', MB_ok + MB_IconInformation);
end
else
MessageBox(0, 'Posiadasz aktualną wersję oprogramowania', 'Update', MB_ok + MB_IconInformation);
end;
Kod:
procedure TForm1.Button2Click(Sender: TObject);
begin
Bar.Position := 30;
Sleep(500);
Bar.Position := 60;
Sleep(500);
UrlMon.UrlDownloadToFile(nil,'http://adres_twojej_strony.pl/update.rar',pchar(GetSpecialFolderPath(CSIDL_COMMON_DESKTOPDIRECTORY) + '\update.rar'),0,nil);
Bar.Position := 100;
Sleep(500);
MessageBox(0, pchar('Plik zostal pobrany, scieżka pobranego pliku: "' + GetSpecialFolderPath(CSIDL_COMMON_DESKTOPDIRECTORY) + '\update.rar"'), 'Update', MB_ok + MB_IconInformation);
end;