Autor Beitrag
chickenfigt1989
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 444
Erhaltene Danke: 2



BeitragVerfasst: Mo 11.10.10 20: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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3747
Erhaltene Danke: 123

Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
BeitragVerfasst: Mo 11.10.10 20:50 
Setz einfach das Feld "CloseOnUpdate" auf True. :roll:

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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 444
Erhaltene Danke: 2



BeitragVerfasst: Mo 11.10.10 20: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 16:02, insgesamt 1-mal bearbeitet
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19326
Erhaltene Danke: 1749

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mo 11.10.10 21: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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 444
Erhaltene Danke: 2



BeitragVerfasst: Mo 11.10.10 21: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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19326
Erhaltene Danke: 1749

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mo 11.10.10 21: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



BeitragVerfasst: Mo 11.10.10 22: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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Mo 11.10.10 23: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 16:10, insgesamt 1-mal bearbeitet

Für diesen Beitrag haben gedankt: Flamefire
chickenfigt1989 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 444
Erhaltene Danke: 2



BeitragVerfasst: Di 12.10.10 13: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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1207
Erhaltene Danke: 31

Win 10
Delphi 2009 Pro, C++ (Visual Studio)
BeitragVerfasst: Di 12.10.10 13:22 
Dann lies mal was BenBE geschrieben hat... Deine Komponente hat nichts davon.
chickenfigt1989 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 444
Erhaltene Danke: 2



BeitragVerfasst: Di 12.10.10 13:24 
Das weiß er ja nicht da er sich den Sourcecode nicht angeschaut hat.
Dude566
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 1592
Erhaltene Danke: 79

W8, W7 (Chrome, FF, IE)
Delphi XE2 Pro, Eclipse Juno, VS2012
BeitragVerfasst: Di 12.10.10 13:50 
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Die Funktion IsUserAnAdmin nämlich...
msdn.microsoft.com/e...bb776463(VS.85).aspx
Die funktioniert auch mit UAC usw. korrekt.


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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19326
Erhaltene Danke: 1749

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Di 12.10.10 15:17 
Die musst du fix wie in MSDN zu sehen deklarieren. (Du findest das auch in meinem Registryeditor.)
ALF
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1085
Erhaltene Danke: 53

WinXP, Win7, Win10
Delphi 7 Enterprise, XE
BeitragVerfasst: Di 12.10.10 15:28 
user profile iconchickenfigt1989 hat folgendes geschrieben Zum zitierten Posting springen:
Sorry hab vergessen zu erwähnen das es eine selbst geschriebene Komponente ist.
Hab die komponente mal als Anhang dazugepackt

mfg

user profile iconchickenfigt1989 hat folgendes geschrieben Zum zitierten Posting springen:
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
ab hier würde ich sagen, das Du nicht den Updatergeschrieben hast!!!! sonst wüsstest Du wie wo und was!
Gruss ALf

_________________
Wenn jeder alles kann oder wüsste und keiner hätt' ne Frage mehr, omg, währe dieses Forum leer!
Dude566
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 1592
Erhaltene Danke: 79

W8, W7 (Chrome, FF, IE)
Delphi XE2 Pro, Eclipse Juno, VS2012
BeitragVerfasst: Di 12.10.10 15:45 
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Die musst du fix wie in MSDN zu sehen deklarieren. (Du findest das auch in meinem Registryeditor.)


ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3747
Erhaltene Danke: 123

Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
BeitragVerfasst: Di 12.10.10 20:05 
user profile iconchickenfigt1989 hat folgendes geschrieben Zum zitierten Posting springen:
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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 444
Erhaltene Danke: 2



BeitragVerfasst: Di 12.10.10 20:15 
habs hinbekommen
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19326
Erhaltene Danke: 1749

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Di 12.10.10 20:22 
user profile iconelundril hat folgendes geschrieben Zum zitierten Posting springen:
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



BeitragVerfasst: Di 12.10.10 21:32 
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
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.

Das war aber nicht ich, aber ich hätte dir das selbe gesagt. ;)
elundril
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3747
Erhaltene Danke: 123

Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
BeitragVerfasst: Di 12.10.10 21: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.