如何仅删除安装程序在使用install4j更新期间创建的文件
我有一个install4j项目,想做一个项目 在我的设置中有一个如何仅删除安装程序在使用install4j更新期间创建的文件,install4j,Install4j,我有一个install4j项目,想做一个项目 在我的设置中有一个libs-文件夹,我的所有jar都打包在该文件夹中: <install-dir>/libs/myA.jar <install-dir>/libs/myB.jar <install-dir>/libs/alien.jar /libs/myA.jar /libs/myB.jar /libs/alien.jar jar是一个附加文件,不是根据我的设置创建的。 如果我用一个packageslibs-文
libs
-文件夹,我的所有jar都打包在该文件夹中:
<install-dir>/libs/myA.jar
<install-dir>/libs/myB.jar
<install-dir>/libs/alien.jar
/libs/myA.jar
/libs/myB.jar
/libs/alien.jar
jar是一个附加文件,不是根据我的设置创建的。
如果我用一个packageslibs
-文件夹发送更新,alien.jar
会被删除,我不明白为什么
InstallFilesAction
之前有一个DeleteFilesAction
,它有一个过滤器,不能删除所有alien.jar
weon。如果在我的DeleteFilesAction
之后创建MessageBox,则
alien.jar
仍然存在
当InstallFileAction启动时,完整的libs
-文件夹似乎被删除
我知道有一些配置标志,我不知道
问题:
如何删除完整的
libs
-文件夹,除了alien.jar
?我认为使用DeleteFilesAndDirectory
-操作无法删除目录中的所有(未知)文件
我使用了一个操作,其中/libs
作为要删除的文件夹提供。
我为文件名提供了一个过滤脚本(alien.jar有一个返回值“false”,其余的应该删除)。但该操作也会删除libs dir。我认为它按设计工作,所以它不是一个bug
对于具有相同问题的所有人,请使用Workaround或soultion:
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:
谢谢你的帮助,我不想打开一张支持票,因为我很确定它在你的产品中没有bug。但我认为另一个复选框“如果不为空则删除”将在
DeleteFilesOrDirectory
操作中有很大帮助。除非您执行“卸载以前的安装”操作,否则安装程序不会删除任何文件。即使这样,也只能删除以前安装程序安装的文件。install4j删除此文件的唯一方法是通过“删除文件或目录”操作。请在您的项目中检查该操作的更多实例,并禁用所有这些操作以查看它们是否是问题所在。好的,我发现了我的问题。我正在使用DeleteFilesAction删除libs目录。我可以用该操作来删除该文件夹中的所有文件而不是文件夹本身吗?(我知道我可以简单地在Java中删除它,但我更喜欢install4j-API,因为它具有延迟删除和重新启动选项。)谢谢,我已经将此添加到我们的问题跟踪程序中