2013-03-14 3 views
8

Używam Inno-Setup w wersji 5.5.3 (a).Instalowanie pliku w folderze AppData użytkowników za pomocą 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 

chciałbym zainstalować „GPT.dat” plik do folderu AppData użytkowników w folderze niestandardowym o nazwie „GPT”

przykład Na przykład w moim kodzie delphi utworzę folder o nazwie "GPT" w ścieżce AppData użytkowników. Są to gdzie chciałbym umieścić plik

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); 

Czy ktoś może mi powiedzieć jak edytować sekcji [Files] mojego skryptu Inno aby tak się stało?

Dzięki

+2

Czy przejrzałeś dokumentację inno-setup? Uważam, że możesz znaleźć folder AppData jako makro. http://www.jrsoftware.org/ishelp/index.php?topic=consts {localappdata} i {userappdata} oraz {commonappdata} to trzy foldery AppData. –

Odpowiedz

11

Musisz użyć {userappdata} stały, który jest odwzorowany tylko z identyfikatorem CSIDL_APPDATA pozycja, jako katalog docelowy dla plików:

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

{userappdata} & {commonappdata} Ścieżka do folderu Dane aplikacji.

CSIDL_APPDATA = {userappdata} = C:\Documents and Settings\username\Application Data 
CSIDL_COMMON_APPDATA = {commonappdata} = C:\Documents and Settings\All Users\Application Data 
+0

, więc gdzie są te dwie linie? – JakeSays

+0

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

+4

Należy pamiętać, że chociaż * jest * możliwe * instalowanie plików w folderach użytkownika podczas instalacji administratora jest bardzo odradzane. Może to dotyczyć najwyżej jednego użytkownika, a niekoniecznie takiego, który powinien być. Zastanów się nad projektem zamiast tego. – Miral

0

Bardziej odpowiednie wydaje się użycie {programdata}, jeśli poprawnie zinterpretuję komentarz Mirals.

Jednak na XP nie ma {programdata}, tylko {commonappdata} lub {userappdata}, więc muszę zdywersyfikować moją instalację. {programdata} to późniejszy wynalazek.

Niepokojąca pułapka jest wtedy, gdy pulpit i userappdata są odbijane lustrzanie od serwera ("profil mobilny"), który spowalnia program znacznie, jeśli używają one userappdata do przechowywania plików ini, przynajmniej to jest moje doświadczenie.

+0

Profile mobilne nie spowalniają aplikacji, ponieważ są przechowywane lokalnie i zsynchronizowane z serwerem Zaloguj Się. Jeśli jednak zostaną przekierowani do udziału netwrok (niekoniecznie do profili mobilnych), to spowolni to działanie, ale jest to zgodne z projektem. – Deanna

+1

Nie ma żadnej stałej o nazwie '{programdata}', a właściwie '{commonappdata}'. Odnosi się do 'C: \ ProgramData'. –