content: package top.niunaijun.blackbox.core.system.pm.installer;
  
  
  import java.io.File;
  import java.io.IOException;
  
  import top.niunaijun.blackbox.core.env.BEnvironment;
  import top.niunaijun.blackbox.core.system.pm.BPackageSettings;
  import top.niunaijun.blackbox.entity.pm.InstallOption;
  import top.niunaijun.blackbox.utils.FileUtils;
  import top.niunaijun.blackbox.utils.NativeUtils;
  
  /**
   * updated by alex5402 on 4/24/21.
   * * ∧＿∧
   * (`･ω･∥
   * 丶　つ０
   * しーＪ
   * TFNQw5HgWUS33Ke1eNmSFTwoQySGU7XNsK (USDT TRC20)
   * 拷贝文件相关
   */
  public class CopyExecutor implements Executor {
  
      @Override
      public int exec(BPackageSettings ps, InstallOption option, int userId) {
          try {
              if (!option.isFlag(InstallOption.FLAG_SYSTEM)) {
                  NativeUtils.copyNativeLib(new File(ps.pkg.baseCodePath), BEnvironment.getAppLibDir(ps.pkg.packageName));
              }
          } catch (Exception e) {
              e.printStackTrace();
              return -1;
          }
          if (option.isFlag(InstallOption.FLAG_STORAGE)) {
              // 外部安装
              File origFile = new File(ps.pkg.baseCodePath);
              File newFile = BEnvironment.getBaseApkDir(ps.pkg.packageName);
              try {
                  if (option.isFlag(InstallOption.FLAG_URI_FILE)) {
                      boolean b = FileUtils.renameTo(origFile, newFile);
                      if (!b) {
                          FileUtils.copyFile(origFile, newFile);
                      }
                  } else {
                      FileUtils.copyFile(origFile, newFile);
                  }
                  newFile.setReadOnly();
                  // update baseCodePath
                  ps.pkg.baseCodePath = newFile.getAbsolutePath();
              } catch (IOException e) {
                  e.printStackTrace();
                  return -1;
              }
          } else if (option.isFlag(InstallOption.FLAG_SYSTEM)) {
              // 系统安装
          }
          return 0;
      }
  }
  