0

我有一个 install4j 项目并想做一个项目。

我的设置中有一个libs-folder,我所有的 jar 都在其中打包:

<install-dir>/libs/myA.jar
<install-dir>/libs/myB.jar
<install-dir>/libs/alien.jar

Alien.jar 是一个附加文件,不是从我的设置中创建的。如果我使用包提供更新libs- 文件夹将alien.jar被删除,我不明白为什么。

DeleteFilesAction之前有一个InstallFilesAction,它有一个过滤器,所有我们都alien.jar不会被删除。如果我在我之后制作一个 MessageBox DeleteFilesAction,则

外星人.jar

还存在。

当 InstallFileAction 启动时,完整的libs-Folder 似乎已被删除。

我相信有配置标志,我不知道。

问题:如何删除完整的libs文件夹,期待alien.jar?

4

1 回答 1

0

DeleteFilesAndDirectory我认为使用-Action 删除目录中的所有(未知)文件是不可能的。

我使用了<install-dir>/libs作为要删除的文件夹提供的操作。我为文件名提供了一个过滤器脚本(alien.jar 有一个返回值“false”,其余的应该被删除)。但是该操作也会删除 libs-dir。我认为它按设计工作,所以它不是错误。

对于所有有相同问题的人来说,一个workarround或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:感谢您的帮助,我不想开支持票,因为我很确定这不是您产品中的错误。但我认为另一个复选框“如果不为空则删除”在操作中会有很大帮助DeleteFilesOrDirectory

于 2012-05-21T07:59:31.580 回答