2013-03-14 9 views
8

Ich verwende Inno-Setup Version 5.5.3 (a).Installation der Datei in den Benutzer AppData-Ordner mit Hilfe von "inno-Setup"

[Files] 
Source: "C:\GPT\GPT.exe"; DestDir: "{app}"; Flags: ignoreversion 
Source: "C:\GPT\GPT.dat"; DestDir: "{app}"; Flags: ignoreversion 
; NOTE: Don't use "Flags: ignoreversion" on any shared system files 

Ich mag die „GPT.dat“ Datei in die Benutzer AppData-Ordner in einem benutzerdefinierten Ordner mit dem Namen „GPT“

zum Beispiel installieren AppData \ GPT \

Beispiel: In meinem Delphi-Code erstelle ich einen Ordner namens "GPT" im AppData-Pfad des Benutzers. Dies ist, wo würde Ich mag die Datei platzieren

var 
    path: array[0..MAX_PATH] of char; 

SHGetFolderPath(0, CSIDL_APPDATA, 0, SHGFP_TYPE_CURRENT, @path); 
userPath:= Path; 
UserPath:= UserPath + '\GPT\'; 
if not DirectoryExists(UserPath) then 
    CreateDir(UserPath); 

Kann mir jemand sagen, wie ich meine [Files] Abschnitt meines Inno-Skript zu bearbeiten, damit dies geschieht?

Dank

+2

Haben Sie in der Dokumentation zu innovation gesucht? Ich glaube, dass Sie den AppData-Ordner als Makro finden können. http://www.jrsoftware.org/ishelp/index.php?topic=consts {localappdata} & {userappdata} & {commonappdata} sind die drei AppData-Ordner. –

Antwort

11

Sie müssen die {userappdata} Konstante verwenden, die nur auf die CSIDL_APPDATA Artikel-ID zugeordnet ist, als Zielverzeichnis für Ihre Dateien:

[Files] 
Source: "C:\GPT\GPT.dat"; DestDir: "{userappdata}\GPT\"; Flags: ignoreversion createallsubdirs recursesubdirs comparetimestamp 

{userappdata} & {CommonAppData} Der Pfad zum Ordner "Anwendungsdaten".

+0

Wohin gehen diese beiden Zeilen? – JakeSays

+0

info auf http://msdn.microsoft.com/en-us/library/windows/desktop/bb762494%28v=vs.85%29.aspx – Ravaut123

+4

Beachten Sie, dass es * möglich * ist, Dateien in den Ordnern eines Benutzers zu installieren Während einer Admin-Installation wird dringend davon abgeraten. Höchstens ein Benutzer wird davon betroffen sein, und nicht unbedingt derjenige, der sein sollte. Überdenken Sie Ihr Design, anstatt dies zu tun. – Miral

0

Es scheint angemessener, {programdata} zu verwenden, wenn ich Mirals Kommentar richtig interpretiere.

Unter XP gibt es jedoch keine {programdata}, nur {commonappdata} oder {userappdata}, daher muss ich meine Installation diversifizieren. {programdata} ist eine spätere Erfindung.

Eine störende Falle ist, wenn der Desktop und userappdata auf den Server gespiegelt werden ("Roaming-Profil"), die Programme stark verlangsamt, wenn sie userappdata für Ini-Dateispeicher verwenden, zumindest ist das meine Erfahrung.

+0

Roaming-Profile werden die Anwendung nicht verlangsamen, da sie lokal gespeichert und mit dem Server synchronisiert sind Anmeldung. Wenn sie jedoch zu einer Netwrok-Aktie umgeleitet werden (nicht unbedingt servergespeicherte Profile), wird es die Dinge verlangsamen, aber das ist Absicht. – Deanna

+1

Es gibt keine Konstante namens '{programdata}', eigentlich '{commonappdata}'. Es bezieht sich auf 'C: \ ProgramData'. –

Verwandte Themen