0

install4j プロジェクトがあり、プロジェクトを作成したいと考えています。

libsセットアップ内に -folderがあり、すべての jar がパッケージ化されています。

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

Alien.jar は、セットアップから作成されたものではなく、追加のファイルです。libspackagesフォルダーを使用して更新を配信すると、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 も削除します。仕様通りに動くと思いますので、バグではありません。

同じ問題を抱えているすべての人のための回避策または解決策:

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 に答える