Announcement

Collapse
No announcement yet.

Datei ersetzen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Datei ersetzen

    Hallo,

    wie kann ich eine Datei unter Windows NT ersetzen, die durch das System im Zugriff ist ?

    Ich meine, es gibt eine Möglichkeit durch Betriebssystemfunktionen, die beim Neustart des Systems die Datei selbstständig durch die neue Version ersetzt !

    Aber wie ?

    Hat jemand vielleicht ein kleines Beispiel ! Das Ersetzen muß ohne den Einsatz einer Drittsoftware funktionieren ( z.B. Installshield 5 Pro bietet so eine Funktion; können wir aber leider nicht einsetzen ).

    Vielen Dank

    ciao Torsten

  • #2
    Hallo,

    unter Windows 2000 steht für diese Aufgabe eine neue API-Funktion zur Verfügung - <b>ReplaceFile</b>:
    <pre>
    function ReplaceFile(lpReplacedFileName, lpReplacementFileName,
    lpBackupFileName: PAnsiChar;
    dwReplaceFlags : DWORD;
    lpExclude,lpReserved: Pointer): BOOL; stdcall;
    external 'kernel32.dll' name 'ReplaceFileA';

    const
    REPLACEFILE_WRITE_THROUGH = 1;
    REPLACEFILE_IGNORE_MERGE_ERRORS = 2;

    procedure TForm1.ButtonReplaceClick(Sender: TObject);
    begin
    if CheckBoxBackup.Checked then
    Win32Check(ReplaceFile(PChar(EditOld.Text), PChar(EditNew.Text),
    PChar(EditBackup.Text),
    REPLACEFILE_WRITE_THROUGH, nil, nil))
    else
    Win32Check(ReplaceFile(PChar(EditOld.Text), PChar(EditNew.Text),
    nil, REPLACEFILE_WRITE_THROUGH, nil, nil));
    StatusBar1.SimpleText := 'ReplaceFile war erfolgreich';
    end;
    </pre>
    Für Windows NT würde <b>MoveFileEx</b> mit dem Flag <b>MOVEFILE_DELAY_UNTIL_REBOOT</b> zur Verfügung stehen

    Comment

    Working...
    X