2013-03-14 3 views
8

Я использую Inno-Setup версии 5.5.3 (a).Установка файла в папке AppData с помощью 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 

Я хотел бы установить файл «GPT.dat» в папку AppData пользователей в пользовательскую папку под названием «GPT»

например AppData \ GPT \

Например, в моем коде delphi я создаю папку с именем GPT в пути пользователей AppData. Это то, где я хотел бы поместить файл

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

Может кто-нибудь сказать мне, как изменить мой раздел [Files] моего Inno сценария, чтобы это произошло?

Благодаря

+2

Вы заглянули в документацию по инно-настройке? Я считаю, что вы можете найти папку AppData в качестве макроса. http://www.jrsoftware.org/ishelp/index.php?topic=consts {localappdata} & {userappdata} & {commonappdata} - это три папки AppData. –

ответ

11

Вы должны использовать {userappdata} константу, которая отображается только в CSIDL_APPDATA идентификатору, как каталог назначения для файлов:

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

{userappdata} & {commonappdata} Путь к папке данных приложения.

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

Итак, куда идут эти две линии? – JakeSays

+0

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

+4

Обратите внимание, что, хотя возможно * установить файлы в папки пользователя во время установки администратора он очень сильно обескуражен. На это повлияет не более одного пользователя, а не того, что должно быть. Вместо этого задумайтесь над своим дизайном. – Miral

0

Кажется более уместным использовать {programdata}, если я правильно интерпретирую комментарий Mirals.

Однако на XP нет {programdata}, только {commonappdata} или {userappdata}, поэтому мне приходится разнообразить мою установку. {programdata} является более поздним изобретением.

Беспокойная ловушка, когда рабочий стол и userappdata зеркалируются на сервере («перемещаемый профиль»), что значительно замедляет работу программ, если они используют userappdata для хранения файлов ini, по крайней мере, это мой опыт.

+0

Роуминг-профили не замедляют приложение, поскольку они хранятся локально и синхронизируются с сервером на авторизоваться. Если, однако, они перенаправляются на общий ресурс netwrok (не обязательно перемещаемые профили), это замедляет работу, но это по дизайну. – Deanna

+1

Не существует константы, называемой '{programdata}', ее фактически '{commonappdata}'. Он относится к 'C: \ ProgramData'. –

Смежные вопросы