Einzelnen Beitrag anzeigen

blackfin
(Gast)

n/a Beiträge
 
#5

AW: mit Innosetup Dateiattribute ändern

  Alt 2. Jul 2010, 08:36
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;

Geändert von blackfin ( 2. Jul 2010 um 08:39 Uhr)
  Mit Zitat antworten Zitat