Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Update vom eigenem Programm.exe (https://www.delphipraxis.net/187105-update-vom-eigenem-programm-exe.html)

baumina 28. Okt 2015 12:17

AW: Update vom eigenem Programm.exe
 
Zitat:

Zitat von Captnemo (Beitrag 1319965)
Zitat:

Zitat von baumina (Beitrag 1319962)
Man könnte die exe auch einfach vom Server starten, statt sie auf jeden PC zu legen.

Das könnte man machen. Aber dann hat man das Problem, dass wenn sie ersetzt werden soll, kein Zugriff mehr darauf vorhanden sein darf. Und je nach Nutzungsverhalten kannst du dann als Admin ewig warten, bis die mal frei ist.

Ist doch kein Problem: exe umbenennen und neue exe draufspielen.

nahpets 28. Okt 2015 13:18

AW: Update vom eigenem Programm.exe
 
Zitat:

Zitat von baumina
Ist doch kein Problem: exe umbenennen und neue exe draufspielen.

Solange eine Exe in Benutzung ist, kann man sie nicht umbenennen. Liegt sie also auf dem Server und irgendein Anwender beendet das Programm nicht, hat der Admin ein Problem, da weder umbennen noch ersetzen funktionieren wird.

baumina 28. Okt 2015 13:26

AW: Update vom eigenem Programm.exe
 
Zitat:

Zitat von nahpets (Beitrag 1319981)
Zitat:

Zitat von baumina
Ist doch kein Problem: exe umbenennen und neue exe draufspielen.

Solange eine Exe in Benutzung ist, kann man sie nicht umbenennen. Liegt sie also auf dem Server und irgendein Anwender beendet das Programm nicht, hat der Admin ein Problem, da weder umbennen noch ersetzen funktionieren wird.

Komisch, ich mach das immer so, die exe lässt sich bei mir problemlos umbenennen, auch wenn sie in Gebrauch ist. :gruebel:

Klaus01 28. Okt 2015 13:28

AW: Update vom eigenem Programm.exe
 
.. ist auch meine Erfahrung, umbennen und verschieben geht, löschen hingegegen nicht.

Grüße
Klaus

Luckner 28. Okt 2015 13:35

AW: Update vom eigenem Programm.exe
 
Danke. Ich werde es versuchen so anzugehen, wie HolgerX es vorgeschlagen hat. Das mit der Datei umbenennen ist mir nicht ganz geheuer.
Gruß, Luckner

Jumpy 28. Okt 2015 13:44

AW: Update vom eigenem Programm.exe
 
Zitat:

Zitat von Klaus01 (Beitrag 1319984)
.. ist auch meine Erfahrung, umbennen und verschieben geht, löschen hingegegen nicht.

Grüße
Klaus

Wenn da ein DFS im Einsatz ist, kann es da aber auch zu seltsamen Effekten kommen.

Captnemo 28. Okt 2015 13:50

AW: Update vom eigenem Programm.exe
 
Über einen entfernten Rechner, der über die Freigabe darauf zugreift klappt das auch oft. Manchmal aber nicht, weil doch noch irgendein Zugriff da ist, der eigentlich nicht da sein sollte.
Wenn man das aber direkt an dem Rechner/Server macht, dann geht das häufig nicht. Habe ich leider schon oft erlebt.

Back2Code 28. Okt 2015 14:42

AW: Update vom eigenem Programm.exe
 
Hab das Ganze damals auch mal umgesetzt indem die Versionen abgeglichen wurden und die "neuste" Version welche ich immer in eine Txt die auf Dropbox lag aktualisiert hatte.

Habs jetzt unverändert gepostet

Stand 2013

Delphi-Quellcode:
function CheckForUpdates(): string;
var
  HTTP: TIdHTTP;
  HTTPS: TIdSSLIOHandlerSocketOpenSSL;
  Answer: String;
  data: ISuperObject;
  sUURL, exe, bak, oldexe: String;
  lStream: TFileStream;
begin
  HTTP := TIdHTTP.Create();
  HTTPS := TIdSSLIOHandlerSocketOpenSSL.Create();
  HTTP.IOHandler := HTTPS;
  try
    Answer := HTTP.Get('https://dl.dropboxusercontent.com/u/111435195/Update/updates.txt');
    data  := SO(Answer);
    if data.O['stable'].I['version'] > StrToInt(StringReplace(GetVersion, '.', '', [rfReplaceall])) then
    begin
      try
      UpdateForm.ProgressBar1.Position := 0;
      sUURL := data.O['stable'].S['url'];  // Update URL
      UpdateForm.Label1.Caption := 'Please wait a second ...';
      UpdateForm.ProgressBar1.Position := 5;
     
      oldexe := 'Checker' + '.exe';
      UpdateForm.Show;
      Application.ProcessMessages;
      exe := ParamStr(0);
      bak := ChangeFileExt(EXE,'.BAK');
      UpdateForm.ProgressBar1.Position := 25;
      RenameFile(exe,bak);
      UpdateForm.ProgressBar1.Position := 50;
      lStream:=TFileStream.Create(GetCurrentDir + '/' + oldexe, fmCreate or fmShareDenyNone);
      UpdateForm.ProgressBar1.Position :=75;
      HTTP.Get(sUUrl, lStream);
      UpdateForm.ProgressBar1.Position := 85;
      lStream.Free;
      ShellExecute(0, 'open', PWideChar(oldexe), nil, nil, SW_SHOWNORMAL);
      UpdateForm.ProgressBar1.Position := 100;
      Result := 'true';
      FreeAndNil(HTTP);
      ExitProcess(0);
      except

      end;
    end
    else
      Result := 'false';
      FreeAndNil(HTTP);
  except
    FreeAndNil(HTTP);
    Result := 'error';
  end
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:44 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz