如何在Inno Setup中使用复制隐藏的外部文件?不要隐藏文件,而是使用隐藏文件。因为目前:隐藏的文件被忽略
有任何帮助吗?谢谢)
[Files]
Source: "{src}\folder\*"; DestDir: "{app}"; \
Flags: skipifsourcedoesntexist external ignoreversion recursesubdirs createallsubdirs;
答案 0 :(得分:2)
使用通配符选择[Files]
部分条目中的文件时,Inno Setup安装程序会明确跳过隐藏文件。
你无能为力。
见RecurseExternalCopyFiles
function in Projects\Install.pas
,特别是这部分:
if SourceIsWildcard then begin
if FindData.dwFileAttributes and FILE_ATTRIBUTE_HIDDEN <> 0 then
Continue; { <-- Skip hidden files, comment by @MartinPrikryl }
FileName := FindData.cFileName;
end
else
FileName := SearchWildcard; { use the case specified in the script }
(这适用于外部文件,就像您使用的那样。但对于编译时文件,它是相同的。请参阅BuildFileList
中的Compile.pas
)。< / p>
您所能做的就是自己在[Code]
脚本中实施安装,而不是使用[Files]
部分。
procedure CurStepChanged(CurStep: TSetupStep);
begin
if CurStep = ssInstall then
begin
Log('Installing files');
DirectoryCopy(ExpandConstant('{src}\folder'), ExpandConstant('{app}'));
end;
end;
要实现DirectoryCopy
,请参阅我对问题Inno Setup: copy folder, subfolders and files recursively in Code section的回答。
对于编译时文件(没有external
标志),您可以使用a preprocessor function FindFirst
生成[Files]
条目列表。
答案 1 :(得分:0)
答案是您可以
转到[文件]部分:
[Files]
Source: "H:\tmp\sweetInstaller\installer.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "H:\tmp\sweetInstaller\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
Source: "H:\tmp\sweetInstaller\hidden_file1.txt"; DestDir: "{app}"; Flags: ignoreversion
Source: "H:\tmp\sweetInstaller\hidden_file2.bat"; DestDir: "{app}"; Flags: ignoreversion
并将Attribs: hidden;
插入要隐藏在Flags:
之前的文件旁边
[Files]
Source: "H:\tmp\sweetInstaller\installer.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "H:\tmp\sweetInstaller\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
Source: "H:\tmp\sweetInstaller\hidden_file1.txt"; DestDir: "{app}"; Attribs: hidden; Flags: ignoreversion
Source: "H:\tmp\sweetInstaller\hidden_file2.bat"; DestDir: "{app}"; Attribs: hidden; Flags: ignoreversion
然后,您可以从顶部栏上的绿色小播放按钮运行脚本进行编译。就完成了;)