在Inno Setup中复制隐藏文件

时间:2015-12-02 18:23:21

标签: inno-setup

如何在Inno Setup中使用复制隐藏的外部文件?不要隐藏文件,而是使用隐藏文件。因为目前:隐藏的文件被忽略

有任何帮助吗?谢谢)

[Files]
Source: "{src}\folder\*"; DestDir: "{app}"; \
    Flags: skipifsourcedoesntexist external ignoreversion recursesubdirs createallsubdirs; 

2 个答案:

答案 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)

答案是您可以

  1. 使Windows显示隐藏文件只是为了让您能够看到它们
  2. 将文件隐藏在文件夹中。
  3. 在添加源文件夹和文件步骤时,通常只需添加文件夹(此通配符*),Inno安装程序就不会添加隐藏文件。因此,请分别添加它们。
  4. 完成所有步骤后,请不要运行脚本并编辑代码。

转到[文件]部分:

[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

然后,您可以从顶部栏上的绿色小播放按钮运行脚本进行编译。就完成了;)