Когда параметр [Files]
section Source
является подстановочным знаком, скрытые файлы игнорируются. См BuildFileList
в Compile.pas
.
Простое решение - удалить скрытый атрибут из исходных файлов.
Если вы не можете удалить скрытый атрибут (например, если вам необходимо сохранить его при установке), вы можете сгенерировать записи раздела [Files]
, используя препроцессор , избегая использования подстановочного знака.
#pragma parseroption -p-
; If the file is found by calling FindFirst without faHidden, it's not hidden
#define FileParams(FileName) \
Local[0] = FindFirst(FileName, 0), \
(!Local[0] ? "; Attribs: hidden" : "")
#define FileEntry(Source, DestDir) \
"Source: \"" + Source + "\"; DestDir: \"" + DestDir + "\"" + \
FileParams(Source) + "\n"
#define ProcessFile(Source, DestDir, FindResult, FindHandle) \
FindResult \
? \
Local[0] = FindGetFileName(FindHandle), \
Local[1] = Source + "\\" + Local[0], \
(Local[0] != "." && Local[0] != ".." \
? (DirExists(Local[1]) \
? ProcessFolder(Local[1], DestDir + "\\" + Local[0]) \
: FileEntry(Local[1], DestDir)) \
: "") + \
ProcessFile(Source, DestDir, FindNext(FindHandle), FindHandle) \
: \
""
#define ProcessFolder(Source, DestDir) \
Local[0] = FindFirst(Source + "\\*", faAnyFile), \
ProcessFile(Source, DestDir, Local[0], Local[0])
#pragma parseroption -p+
Используйте макрос ProcessFolder
, например:
[Files]
#emit ProcessFolder("C:\source", "{app}")
Будет сгенерирован скрипт, подобный:
[Files]
Source: "C:\source\file.txt"; DestDir: "{app}"
Source: "C:\source\subfolder\file.jpg"; DestDir: "{app}\subfolder"
Source: "C:\source\subfolder\hidden.txt"; DestDir: "{app}\subfolder"; Attribs: hidden
(См. Inno Setup: как посмотреть вывод (перевод) препроцессора Inno Setup? )
Ntb, вопрос , на который вы ссылаетесь , касается копирования внешних файлов, поэтому он не имеет отношения к вашей проблеме.