Inno Setup: Lesen Sie die geänderte Zeit aus einer Datei und stellen Sie damit die Zeit für Dateien in einem ganzen Verzeichnis ein

In meinem Installationsprogramm extrahiere ich Dateien aus Archiven, in denen keine Zeit- / Datumsattribute gespeichert sind. Beim Extrahieren wird das Datum der letzten Änderung auf das aktuelle Datum gesetzt. Ich möchte es auf das letzte Änderungsdatum der Archivdatei setzen, kann aber nicht herausfinden, wie. Ich habe versucht, Teile des Codes von zu verwendenHier undHier Aber obwohl es keine Fehler gab, funktionierte es nicht, um die Zeit zu ändern. Das Datum der letzten Änderung muss für *. * In einem Ordner geändert werden.

Wo muss ich mich anmelden, um diese Dateien zu löschen, wenn der Benutzer das Setup abbricht und Änderungen rückgängig macht? Ich habe mich in UninstallDelete darum gekümmert, aber nicht, wenn der Benutzer das Setup abbricht.

BEARBEITEN: Ignoriere den zweiten Teil, ich habe es tatsächlich herausgefunden, kurz nachdem ich hier gepostet habe. Mein eigenes CleanUp () wurde zu DeinitializeSetup () hinzugefügt, wobei nach dem Registrierungsschlüssel des Deinstallationsprogramms gesucht wurde.

Hier ist der Codeabschnitt, dem ich ihn hinzufügen möchte:

<code>procedure VolExtract(VWorld: String);
var
  ResultCode: Integer;
  VPath: String;
begin
  // Files are extracted to {app}\VWorld\One, {app}\VWorld\Two, etc.
  VPath := ExpandConstant('{app}\' + VWorld);
  WizardForm.FilenameLabel.Caption := DriveLetter + VWorld + '\one.vol';
  if Exec(ExpandConstant('{tmp}\volextract.exe'), '"' + DriveLetter + VWorld + '\one.vol" "' + VPath + '"', '', SW_HIDE, ewWaitUntilTerminated, ResultCode) and (ResultCode = 0) then
  begin
    // Yep, it executed successfully
    WizardForm.FilenameLabel.Caption := DriveLetter + VWorld + '\two.vol';
    if Exec(ExpandConstant('{tmp}\volextract.exe'), '"' + DriveLetter + VWorld + '\two.vol" "' + VPath + '"', '', SW_HIDE, ewWaitUntilTerminated, ResultCode) and (ResultCode = 0) then
    begin
      // Next
      WizardForm.FilenameLabel.Caption := DriveLetter + VWorld + '\three.vol';
      if Exec(ExpandConstant('{tmp}\volextract.exe'), '"' + DriveLetter + VWorld + '\three.vol" "' + VPath + '"', '', SW_HIDE, ewWaitUntilTerminated, ResultCode) and (ResultCode = 0) then
      begin
        // Next
        WizardForm.FilenameLabel.Caption := DriveLetter + VWorld + '\four.vol';
        Exec(ExpandConstant('{tmp}\volextract.exe'), '"' + DriveLetter + VWorld + '\four.vol" "' + VPath + '"', '', SW_HIDE, ewWaitUntilTerminated, ResultCode);
      end;
    end;
  end;
  if ResultCode <> 0 then
  begin
    // Handle Fail
    CDFound := False;
    MsgBox(CustomMessage('FileErr'), mbInformation, MB_OK);
    WizardForm.Close;
  end;
end;
</code>

Antworten auf die Frage(2)

Ihre Antwort auf die Frage