2013-03-14 35 views
8

Tôi đang sử dụng phiên bản Inno-Setup 5.5.3 (a).Cài đặt tệp trong thư mục người dùng AppData bằng cách sử dụng thiết lập inno

[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 

Tôi muốn cài đặt "GPT.dat" tập tin vào những người sử dụng thư mục AppData trong một thư mục tùy chỉnh được gọi là "GPT"

ví dụ Ví dụ, trong mã delphi của tôi, tôi tạo một thư mục có tên là "GPT" trong đường dẫn AppData của người dùng. Ví dụ: Mã sản phẩm \ GPT \

Đây là nơi tôi muốn đặt tệp

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

Bất kỳ ai có thể cho tôi biết cách chỉnh sửa phần [Tệp] của kịch bản Inno của tôi để thực hiện điều này?

Cảm ơn

+2

Bạn đã xem tài liệu cài đặt inno chưa? Tôi tin rằng bạn có thể tìm thấy thư mục AppData dưới dạng macro. http://www.jrsoftware.org/ishelp/index.php?topic=consts {localappdata} & {userappdata} & {commonappdata} là ba thư mục AppData. –

Trả lời

11

Bạn cần phải sử dụng {userappdata} liên tục, mà là ánh xạ chỉ để ID CSIDL_APPDATA mục, như một thư mục đích cho các file của bạn:

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

{userappdata} & {commonappdata} Đường dẫn đến thư mục Dữ liệu ứng dụng.

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

Vậy hai dòng này đi đâu? – JakeSays

+0

thông tin trên http://msdn.microsoft.com/en-us/library/windows/desktop/bb762494%28v=vs.85%29.aspx – Ravaut123

+4

Lưu ý rằng mặc dù có thể * để cài đặt tệp vào thư mục của người dùng trong khi cài đặt quản trị viên, nó rất mạnh mẽ. Tối đa một người dùng sẽ bị ảnh hưởng bởi điều này và không nhất thiết phải là người dùng. Suy nghĩ lại thiết kế của bạn thay vì làm điều này. – Miral

0

Có vẻ thích hợp hơn khi sử dụng {programdata}, nếu tôi diễn giải nhận xét bằng Mirals chính xác.

Tuy nhiên, trên XP không có {programdata}, chỉ {commonappdata} hoặc {userappdata}, vì vậy tôi phải đa dạng hóa cài đặt của mình. {programdata} là một phát minh sau này.

Bẫy rối là khi máy tính để bàn và userappdata được nhân đôi với máy chủ ("hồ sơ chuyển vùng"), làm chậm chương trình xuống rất nhiều nếu chúng sử dụng userappdata để lưu trữ tệp ini, ít nhất đó là kinh nghiệm của tôi.

+0

Cấu hình chuyển vùng sẽ không làm chậm ứng dụng khi chúng được lưu trữ cục bộ và được đồng bộ hóa với máy chủ đăng nhập. Tuy nhiên, nếu họ được chuyển hướng đến một chia sẻ netwrok (không phải là hồ sơ chuyển vùng necassarily) sau đó nó sẽ làm chậm những thứ xuống, nhưng điều này là do thiết kế. – Deanna

+1

Không có bất kỳ hằng số nào được gọi là '{programdata}', thực sự là '{commonappdata}'. Nó đề cập đến 'C: \ ProgramData'. –

Các vấn đề liên quan