Копирование скрытых файлов в Inno Setup
Как использовать копирование скрытых внешних файлов в Inno Setup? Не для того, чтобы сделать файл скрытым, а для работы со скрытыми файлами. Потому что пока: скрытые файлы игнорируются
Любая помощь? Спасибо)
[Files]
Source: "{src}\folder\*"; DestDir: "{app}"; \
Flags: skipifsourcedoesntexist external ignoreversion recursesubdirs createallsubdirs;
2 ответа
Когда вы выбираете файлы в [Files]
При вводе раздела с использованием группового символа установщик Inno Setup явно пропускает скрытые файлы.
Вы ничего не можете с этим поделать.
Увидеть RecurseExternalCopyFiles
функция в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
).
Все, что вы можете сделать, это осуществить установку в [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: рекурсивно копируйте папки, подпапки и файлы в разделе кода.
Для файлов времени компиляции (без external
флаг), вы можете создать список [Files]
записи с использованием функции препроцессораFindFirst
,
Ответ: ВЫ МОЖЕТЕ
- сделать так, чтобы окна отображали скрытые файлы, чтобы вы могли их видеть
- с вашими файлами скрыты, как вы хотите их внутри папки.
- при добавлении исходной папки и файлов просто добавьте папку (этот подстановочный знак *) как обычно, программа установки Inno не добавит скрытые файлы. так что добавьте их отдельно.
- после завершения всех шагов не запускайте скрипт и редактируйте код..
перейдите в раздел [Files]:
[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
затем вы можете запустить скрипт из маленькой зеленой кнопки воспроизведения на верхней панели для компиляции. и вы сделали;)