我有一个文件夹(数据库文件夹),我想要保留在卸载后(为保存用户数据和未来重新安装),我已经标记顶部文件夹,永远不要卸载,以及它的所有文件(和文件夹?)无论是否为空,Inno安装程序在卸载期间删除这些空子文件夹(我希望保留这些子文件夹)。我是否必须声明我想保留的所有子文件夹,还是它们是我丢失的标志?
[Dirs]
Name: "{app}\db\data"; Flags: uninsneveruninstall; Permissions: everyone-full
[Files]
Source: "D:\sesam\db\data\*"; DestDir: "{app}\db\data"; Flags: recursesubdirs createallsubdirs uninsneveruninstall; Check: CheckNotExists(ExpandConstant('{app}\db\data'))卸载之前和之后:


如您所见,它只保留“非空”文件夹。
发布于 2016-08-10 08:14:19
在我看来是个窃听器,考虑一下报告吧。
无论如何,您可以使用Inno安装前处理器为每个子文件夹生成一个[Dirs]条目列表:
[Dirs]
#define FindHandle
#define FindResult
#define SourceDataPath "D:\sesam\db\data"
#define TargetDataPath "{app}\db\data"
#sub ProcessFoundFile
#define DirName FindGetFileName(FindHandle)
#define DirPath SourceDataPath + "\" + DirName
#if DirExists(DirPath) && (DirName != ".") && (DirName != "..")
Name: "{#TargetDataPath + "\" + DirName}"; Flags: uninsneveruninstall
#endif
#endsub
#for {FindHandle = FindResult = FindFirst(SourceDataPath + "\*", faDirectory); \
FindResult; FindResult = FindNext(FindHandle)} ProcessFoundFile
#expr FindClose(FindHandle)以上工作只适用于单一级别。如果你需要递归,那就更复杂了。
将其放在脚本的末尾以查看和查看预处理器生成的内容:
#expr SaveToFile(AddBackslash(SourcePath) + "Preprocessed.iss")https://stackoverflow.com/questions/38866593
复制相似问题