如何仅删除安装程序在使用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-文

我有一个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是一个附加文件,不是根据我的设置创建的。 如果我用一个packages
libs
-文件夹发送更新,
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,因为它具有延迟删除和重新启动选项。)谢谢,我已经将此添加到我们的问题跟踪程序中