如何在使用install4j更新期间仅删除安装程序创建的文件

时间:2012-05-15 15:46:46

标签: install4j

我有一个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

1 个答案:

答案 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动作有很大帮助。