![]() |
mit Innosetup Dateiattribute ändern
Hallo,
ich installiere mit IS mein Programm von einer CD und eine Registrierungsdatei wird in diesem Zusammenhang von der CD in das Programmverzeichnis kopiert. Nun sieht aber aber offensichtlich so aus, dass die von der CD kopierte Datei das Attribut Readonly erhält weil ja von CD kopiert. Nach dem normalen Starten des Programmes soll dann schreibend auf die Datein zugegriffen werden, da aber die Datei ist nach wie vor noch Readonly. Kann man das im IS ändern oder muss ich das in der Anwendung machen, da wollte ich eigentlich nichts mehr ändern. |
AW: mit Innosetup Dateiattribute ändern
Und wenn du die datei mit in den Installer packst?
|
AW: mit Innosetup Dateiattribute ändern
Das wollte ich eigentlich vermeiden, da ich dann die Setup fertig habe und nur noch an der Reg Datei ändern muss.
Wenn es nicht anders geht, wäre das ansonsten bestimmt eine Alternative. |
AW: mit Innosetup Dateiattribute ändern
Wie kopierst du denn die Datei?
Müsste es nicht gehen, wenn du sie als "external" zum Setup hinzufügst (und ggf. "attribs" ebenfalls hinzufügst, aber leer lässt)? |
AW: mit Innosetup Dateiattribute ändern
Du kannst das nach der Installation im Inno Setup selbst machen.
Dafür musst du die WinAPI-Funktion SetFileAttributes() Inno Setup zur Verfügung stellen und im PostInstall das Readonly-Flag der Dateien löschen: 1) In der Code-Sektion erstmal oben die SetFileAttributes() deklarieren:
Delphi-Quellcode:
...
const
FILE_ATTRIBUTE_NORMAL = 0; FILE_ATTRIBUTE_ARCHIVE = $20; FILE_ATTRIBUTE_HIDDEN = 2; FILE_ATTRIBUTE_NOT_CONTENT_INDEXED = $2000; FILE_ATTRIBUTE_OFFLINE = $1000; FILE_ATTRIBUTE_READONLY = 1; FILE_ATTRIBUTE_SYSTEM = 4; FILE_ATTRIBUTE_TEMPORARY = $100; function SetFileAttributes(lpFileName : String, dwAttribs : LongInt) : Boolean; external 'SetFileAttributesA@kernel32.dll stdcall'; .. . 2) Auf den Event-Handler von Inno-Setup reagieren, wenn ein Installations-Schritt geändert wird. Was hier interessiert, ist der Schritt nach der Installation (ssPostInstall):
Delphi-Quellcode:
// Installation-Schritt-Wechsel (interner Inno Setup Event-handler)
procedure CurStepChanged(CurStep: TSetupStep); begin // Post install steps if CurStep = ssPostInstall then begin // Hier die Readonly Flags löschen, z.B. SetFileAttributes(ExpandConstant('{app}\MyProgram.exe'),FILE_ATTRIBUTE_NORMAL); end; end; |
AW: mit Innosetup Dateiattribute ändern
Zitat:
Wenn ich dann noch die Funktion von blackfin nutze, sollte das ja dann klappen. Danke für die Hinweise.
Delphi-Quellcode:
procedure MyAfterInstall2();
var fNameSrc : String; fNameDst : String; begin fNameSrc:=ExtractFilePath(ExpandConstant('{srcexe}'))+'REG.DAT'; if not FileExists(fNameSrc) then begin MsgBox('Datei REG.DAT nicht gefunden unter: ' +fNameSrc, mbInformation, MB_OK); end else begin fNameDst:=ExpandConstant('{app}')+'\REG.DAT'; if not FileExists(fNameDst) then begin if not FileCopy(fNameSrc, fNameDst, false) then begin MsgBox('Datei REG.DAT konnte nicht kopiert werden von "'+fNameSrc+'" nach "'+fNameDst , mbInformation, MB_OK); end; end; end; end; |
AW: mit Innosetup Dateiattribute ändern
Zitat:
Es geeeeeht!!!!!!!!!!!! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:13 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz