我正在使用Inno-Setup版本5.5.3(a)。
[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”文件安装到名为“GPT”的自定义文件夹中的用户AppData文件夹中
e.g。应用程序数据\ GPT \
例如,在我的delphi代码中,我在用户AppData路径中创建了一个名为“GPT”的文件夹。这是我想放置文件的地方
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);
有谁能告诉我如何编辑我的Inno脚本的[Files]部分才能实现这一目标?
由于
答案 0 :(得分:15)
您需要将{userappdata}
常量(仅映射到CSIDL_APPDATA
项ID)用作文件的目标目录:
[Files]
Source: "C:\GPT\GPT.dat"; DestDir: "{userappdata}\GPT\"; Flags: ignoreversion createallsubdirs recursesubdirs comparetimestamp
{userappdata}& {} commonappdata Application Data文件夹的路径。
CSIDL_APPDATA = {userappdata} = C:\Documents and Settings\username\Application Data
CSIDL_COMMON_APPDATA = {commonappdata} = C:\Documents and Settings\All Users\Application Data
答案 1 :(得分:1)
您需要使用:{userappdata}
如果您查看Inno Setup文档:
{userappdata} = C:\Documents and Settings\username\AppData\Roaming\
{commonappdata} = C:\Documents and Settings\All Users\AppData\Roaming\
{localappdata}:本地(非漫游) Application Data文件夹的路径。
{userappdata}& {commonappdata}:Application Data文件夹的路径。
我用:
[Files]
Source: MyPath\* ; Flags: recursesubdirs createallsubdirs; DestDir: {userappdata}\MySoftware\ ; Components: ConfigFiles
我的配置文件位于:
<强> C:\用户* 强> \应用程序数据\漫游\ MySoftware **
答案 2 :(得分:0)
如果我正确地解释Mirals评论,那么使用{programdata}似乎更合适。
然而,在XP上没有{programdata},只有{commonappdata}或{userappdata},所以我必须使我的安装多样化。 {programdata}是后来的发明。
一个令人不安的陷阱是桌面和userappdata被镜像到服务器(“漫游配置文件”),如果他们使用userappdata进行ini文件存储,这会大大减慢程序,至少这是我的经验。