AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

mit Innosetup Dateiattribute ändern

Ein Thema von zeras · begonnen am 1. Jul 2010 · letzter Beitrag vom 4. Jul 2010
Antwort Antwort
zeras

Registriert seit: 11. Mär 2007
Ort: Saalkreis
1.618 Beiträge
 
Delphi 12 Athens
 
#1

mit Innosetup Dateiattribute ändern

  Alt 1. Jul 2010, 20:27
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.
Matthias
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: mit Innosetup Dateiattribute ändern

  Alt 1. Jul 2010, 20:35
Und wenn du die datei mit in den Installer packst?
Markus Kinzler
  Mit Zitat antworten Zitat
zeras

Registriert seit: 11. Mär 2007
Ort: Saalkreis
1.618 Beiträge
 
Delphi 12 Athens
 
#3

AW: mit Innosetup Dateiattribute ändern

  Alt 1. Jul 2010, 20:40
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.
Matthias
  Mit Zitat antworten Zitat
Benutzerbild von Deep-Sea
Deep-Sea

Registriert seit: 17. Jan 2007
907 Beiträge
 
Delphi XE2 Professional
 
#4

AW: mit Innosetup Dateiattribute ändern

  Alt 2. Jul 2010, 07:54
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)?
Chris
Die Erfahrung ist ein strenger Schulmeister: Sie prüft uns, bevor sie uns lehrt.
  Mit Zitat antworten Zitat
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
zeras

Registriert seit: 11. Mär 2007
Ort: Saalkreis
1.618 Beiträge
 
Delphi 12 Athens
 
#6

AW: mit Innosetup Dateiattribute ändern

  Alt 4. Jul 2010, 14:14
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)?
Ich habe eine Funktion geschrieben, die ich nach Kopieren der Exe ausführe.
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;
Matthias
  Mit Zitat antworten Zitat
zeras

Registriert seit: 11. Mär 2007
Ort: Saalkreis
1.618 Beiträge
 
Delphi 12 Athens
 
#7

AW: mit Innosetup Dateiattribute ändern

  Alt 4. Jul 2010, 19:38
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;
Danke. Ich habe dies nun eingebaut und ein wenig an meine Bedürfnisse angepaßt.
Es geeeeeht!!!!!!!!!!!!
Matthias
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:56 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz