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>