我有一个install4j项目,想要创建一个项目。
我的设置中有一个libs
- 文件夹,我的所有罐子都打包了:
<install-dir>/libs/myA.jar
<install-dir>/libs/myB.jar
<install-dir>/libs/alien.jar
alien.jar是一个附加文件,不是从我的设置创建的。
如果我使用软件包libs
发送更新 - alien.jar
文件夹被删除,我不明白为什么。
DeleteFilesAction
之前有一个InstallFilesAction
,其中包含一个过滤器,所有alien.jar
都不会被删除。如果我在DeleteFilesAction
之后创建一个MessageBox,那么
alien.jar
仍然存在。
当InstallFileAction启动时,似乎删除了完整的libs
- 文件夹。
我认为有配置标志,我不知道。
问题:
如何删除完整的libs
- 文件夹,期望alien.jar
?
答案 0 :(得分:0)
我认为使用DeleteFilesAndDirectory
- Action删除目录中的所有(未知)文件是不可能的。
我使用了一个Action,其中<install-dir>/libs
被提供为要删除的文件夹。
我提供了一个文件名的过滤器脚本(alien.jar的返回值为“false”,其余的被删除)。但是该动作也删除了libs-dir。我认为它按设计工作,所以它不是一个错误。
对于具有相同问题的所有人来说,这是一个周到或灵魂:
com.install4j.runtime.installer.helper.fileinst.FileInstaller fi = com.install4j.runtime.installer.helper.fileinst.FileInstaller.getInstance();
File directory = new File(context.getInstallationDirectory(), "/libs");
File[] filesInLib = directory.listFiles();
for(File file:filesInLib){
boolean shouldDelete= true;
if(file.getName().toLowerCase().contains("alien")){
Util.logInfo(null,"dexchange detected: " + file.getName());
shouldDelete= false;
}
Util.logInfo(null,"Delete " + file.getAbsolutePath() + ": " +reval);
if(shouldDelete){
if (file.exists()) {
Util.logInfo( null, "delete file: " + file);
fi.deleteFile(file);
}
}
}
return false;
在Ingo Kegel:
谢谢你的帮助,我不想打开支持票,因为我很确定你的产品没有错误。但我认为另一个复选框“如果不为空则删除”会对DeleteFilesOrDirectory
动作有很大帮助。