| Autor | Beitrag | 
| chickenfigt1989 
          Beiträge: 444
 Erhaltene Danke: 2
 
 
 
 
 | 
Verfasst: Mo 11.10.10 19:46 
 
Hallo 
hab ne update komponente die auch wunderbar funktioniert.
 allerdings ladet die nur das Update runter.
 Ich will aber das dass Programm geschloßen wird, und das Update gestartet wird.
 
 Wie realisier ich das??
 mfg
 | 
|  | 
| elundril 
          Beiträge: 3747
 Erhaltene Danke: 123
 
 Windows Vista, Ubuntu
 Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
 
 | 
Verfasst: Mo 11.10.10 19:50 
 
Setz einfach das Feld "CloseOnUpdate" auf True.   Merkst du was? Wir können dir nix darüber sagen wenn wir nicht wissen was für eine Komponente du verwendest und wie du sie verwendest... Immer wieder das selbe spiel mit dir. lg elundril_________________ This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.
 Für diesen Beitrag haben gedankt: BenBE
 | 
|  | 
| chickenfigt1989  
          Beiträge: 444
 Erhaltene Danke: 2
 
 
 
 
 | 
Verfasst: Mo 11.10.10 19:56 
 
Sorry hab vergessen zu erwähnen das es eine selbst geschriebene Komponente ist.
Hab die komponente mal als Anhang dazugepackt
 
 mfg
 
 Zuletzt bearbeitet von chickenfigt1989 am Di 12.10.10 15:02, insgesamt 1-mal bearbeitet
 | 
|  | 
| jaenicke 
          Beiträge: 19326
 Erhaltene Danke: 1749
 
 W11 x64 (Chrome, Edge)
 Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
 
 | 
Verfasst: Mo 11.10.10 20:08 
 
Wie sowas funktioniert kannst du bei meiner Update Komponente  schauen. Du kannst z.B. dein eigenes Programm mit entsprechenden Parametern starten, damit das das Update durchführt.
 Was mir auf den ersten Blick erst einmal im Quelltext auffällt: Dein Admin-Check dürfte so nicht immer funktionieren. Hast du den einmal unter Vista / 7 ausprobiert?
 Es gibt da ab XP eine viel viel einfachere Möglichkeit schon im System. Die Funktion IsUserAnAdmin nämlich...
msdn.microsoft.com/e...bb776463(VS.85).aspx Die funktioniert auch mit UAC usw. korrekt. | 
|  | 
| chickenfigt1989  
          Beiträge: 444
 Erhaltene Danke: 2
 
 
 
 
 | 
Verfasst: Mo 11.10.10 20:10 
 
Oke Danke werd ich mir Morgen bei gelegenheit anschauen.
 Also bei mein Pc hab ich Vista drauf und da gehts, aber ich schaus mir trotzdem an und werds ggf ändern
 
 lg
 | 
|  | 
| jaenicke 
          Beiträge: 19326
 Erhaltene Danke: 1749
 
 W11 x64 (Chrome, Edge)
 Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
 
 | 
Verfasst: Mo 11.10.10 20:55 
 
Wenn du per UAC Adminrechte angefordert hast, geben diese Quelltexte meistens trotzdem "kein Admin" zurück. Man kann es schon so machen, aber der sah mir nicht danach aus.    Abgesehen davon ist der andere fast nur eine Zeile. | 
|  | 
| Luckie Ehemaliges Mitglied
 Erhaltene Danke: 1
 
 
 
 
 | 
Verfasst: Mo 11.10.10 21:38 
 
Man beachte aber den Reamarks-Abschnitt:
 	  | Zitat: |  	  | Remarks 
 This function is a wrapper for CheckTokenMembership. It is recommended to call that function directly to determine Administrator group status rather than calling IsUserAnAdmin.
 
 Note  This function is available through Windows Vista. It might be altered or unavailable in subsequent versions of Windows.
 | 
 Besser sind wohl Nicos TokenTools -> www.michael-puff.de/...Delphi/Importe/Nico/ | 
|  | 
| BenBE 
          Beiträge: 8721
 Erhaltene Danke: 191
 
 Win95, Win98SE, Win2K, WinXP
 D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
 
 | 
Verfasst: Mo 11.10.10 22:43 
 
Und ohne jetzt mir deinen Source angeguckt zu haben: Du wirst sicherlich so nahezu ALLE gängigen Sicherheitsprüfungen (Integrität, Authentizitätscheck, Authoritätscheck) NICHT umgesetzt haben. Bevor ich mich also jetzt wiederhole, schau einfach mal hier im Forum nach dem, was ich bereits zu anderen Updatern geschrieben hab. Und wenn Du das nicht umsetzen kannst, solltest Du einen verwenden, der das bereits alles hat. _________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
 
 Zuletzt bearbeitet von BenBE am Di 12.10.10 15:10, insgesamt 1-mal bearbeitet
 Für diesen Beitrag haben gedankt: Flamefire
 | 
|  | 
| chickenfigt1989  
          Beiträge: 444
 Erhaltene Danke: 2
 
 
 
 
 | 
Verfasst: Di 12.10.10 12:00 
 
Dann schau dir doch einfach mal meine Update Komponente an.
Ich bräuchte auch nur den Befehl um das Programm zu schließen das war glaub ich irgendwas mit Application.Terminate oder so und dann ein Befehl der die heruntergeladene Version startet. Und wo soll ich das dann hinschreiben?
 
 Mfg
 | 
|  | 
| Flamefire 
          Beiträge: 1207
 Erhaltene Danke: 31
 
 Win 10
 Delphi 2009 Pro, C++ (Visual Studio)
 
 | 
Verfasst: Di 12.10.10 12:22 
 
Dann lies mal was BenBE geschrieben hat... Deine Komponente hat nichts davon. | 
|  | 
| chickenfigt1989  
          Beiträge: 444
 Erhaltene Danke: 2
 
 
 
 
 | 
Verfasst: Di 12.10.10 12:24 
 
Das weiß er ja nicht da er sich den Sourcecode nicht angeschaut hat. | 
|  | 
| Dude566 
          Beiträge: 1592
 Erhaltene Danke: 79
 
 W8, W7 (Chrome, FF, IE)
 Delphi XE2 Pro, Eclipse Juno, VS2012
 
 | 
Verfasst: Di 12.10.10 12:50 
 
Muss ich da etwa eine dll für einbinden, denn mein Turbo Delphi kennt diese Methode nicht. Ich dachte zuerst ich müsse WinAPI unter "uses" einfügen, hat aber auch nichts gebracht. _________________ Es gibt 10 Gruppen von Menschen: diejenigen, die das Binärsystem verstehen, und die anderen.
 | 
|  | 
| jaenicke 
          Beiträge: 19326
 Erhaltene Danke: 1749
 
 W11 x64 (Chrome, Edge)
 Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
 
 | 
Verfasst: Di 12.10.10 14:17 
 
Die musst du fix wie in MSDN zu sehen deklarieren. (Du findest das auch in meinem Registryeditor.) | 
|  | 
| ALF 
          Beiträge: 1085
 Erhaltene Danke: 53
 
 WinXP, Win7, Win10
 Delphi 7 Enterprise, XE
 
 | 
Verfasst: Di 12.10.10 14:28 
 
_________________ Wenn jeder alles kann oder wüsste und keiner hätt' ne Frage mehr, omg,  währe dieses Forum leer!
 | 
|  | 
| Dude566 
          Beiträge: 1592
 Erhaltene Danke: 79
 
 W8, W7 (Chrome, FF, IE)
 Delphi XE2 Pro, Eclipse Juno, VS2012
 
 | 
Verfasst: Di 12.10.10 14:45 
 
	  |  jaenicke hat folgendes geschrieben  : |  	  | Die musst du fix wie in MSDN zu sehen deklarieren. (Du findest das auch in meinem Registryeditor.) | 
 		                       Delphi-Quelltext 
 									| 1:2:
 3:
 4:
 5:
 6:
 7:
 8:
 9:
 10:
 11:
 12:
 13:
 14:
 15:
 16:
 17:
 18:
 19:
 20:
 
 | procedure TmainForm.btnCheckUserForAdminClick(Sender: TObject);type
 TIsUserAnAdminFunc = function (): BOOL; stdcall;
 var
 Shell32DLL: THandle;
 IsUserAnAdminFunc: TIsUserAnAdminFunc;
 begin
 Shell32DLL := LoadLibrary('shell32.dll');
 try
 if Shell32DLL <> 0 then
 begin
 @IsUserAnAdminFunc := GetProcAddress(Shell32DLL, 'IsUserAnAdmin');
 if Assigned(@IsUserAnAdminFunc) then
 if IsUserAnAdminFunc then
 ShowMessage('Sie haben Adminrechte.');
 end;
 finally
 FreeLibrary(Shell32DLL);
 end;
 end;
 |  Das habe ich jetzt mal von deinem Sourcecode abgewandelt und es scheint zu funktionieren, ich bekomme die ShowMessage.
 Habe leider kein eingeschränktes Nutzerkonto zur Hand um mich vom Gegenteil zu überzeugen.
 Edit: Code korrigiert und erfolgreich getestet, hat man Adminrechte erscheint eine Nachricht, andernfalls keine._________________ Es gibt 10 Gruppen von Menschen: diejenigen, die das Binärsystem verstehen, und die anderen.
 | 
|  | 
| elundril 
          Beiträge: 3747
 Erhaltene Danke: 123
 
 Windows Vista, Ubuntu
 Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
 
 | 
Verfasst: Di 12.10.10 19:05 
 
	  |  chickenfigt1989 hat folgendes geschrieben  : |  	  | Dann schau dir doch einfach mal meine Update Komponente an. Ich bräuchte auch nur den Befehl um das Programm zu schließen das war glaub ich irgendwas mit Application.Terminate oder so und dann ein Befehl der die heruntergeladene Version startet. Und wo soll ich das dann hinschreiben?
 
 Mfg
 | 
 Application.Terminate ist böse, böse, böse, böse (Afaik)! Zum beenden kann man einfach die Close-Methode im Hauptformular aufrufen. Dann kannst du davor im OnCloseQuery deinen Updater mit Shellexecute starten (wenn der Updater ein eigenes Programm ist). Ist er kein eigenes Programm, wirds etwas schwieriger weil du ja die alte EXE ersetzen musst, was nicht geht wenn sie noch läuft.
 lg elundril_________________ This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.
 | 
|  | 
| chickenfigt1989  
          Beiträge: 444
 Erhaltene Danke: 2
 
 
 
 
 | 
Verfasst: Di 12.10.10 19:15 
 | 
|  | 
| jaenicke 
          Beiträge: 19326
 Erhaltene Danke: 1749
 
 W11 x64 (Chrome, Edge)
 Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
 
 | 
Verfasst: Di 12.10.10 19:22 
 
	  |  elundril hat folgendes geschrieben  : |  	  | Application.Terminate ist böse, böse, böse, böse (Afaik)! Zum beenden kann man einfach die Close-Methode im Hauptformular aufrufen. | 
 In diesem Fall hast du da was verwechselt.    Application.Terminate wird auch durch das Schließen des Hauptformulars aufgerufen (oder wenn WM_QUIT empfangen wird), deshalb endet dann auch das Programm. Es wird aber ordentlich beendet.
 Böse sind Befehle wie Halt.    // EDIT:
 Nach kurzem Chat mit Michael und einem kurzen Test noch als Ergänzung:
 Application.Terminate überspringt OnClose und OncloseQuery. Die Anwendung wird aber sauber beendet, d.h. OnDestroy wird ausgeführt. | 
|  | 
| Luckie Ehemaliges Mitglied
 Erhaltene Danke: 1
 
 
 
 
 | 
Verfasst: Di 12.10.10 20:32 
 | 
|  | 
| elundril 
          Beiträge: 3747
 Erhaltene Danke: 123
 
 Windows Vista, Ubuntu
 Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
 
 | 
Verfasst: Di 12.10.10 20:35 
 
*Aufzeig* Jap, ich war das bitte. Der Ersatz-Michael.    lg elundril_________________ This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.
 | 
|  |