home *** CD-ROM | disk | FTP | other *** search
/ Chip 2001 June / CHIPHEFT062001.ISO / browser / nc32lyc / comm.z / java40.jar / netscape / softupdate / InstallFile.class (.txt) < prev    next >
Encoding:
Java Class File  |  2000-08-15  |  4.3 KB  |  134 lines

  1. package netscape.softupdate;
  2.  
  3. import java.text.MessageFormat;
  4. import netscape.security.AppletSecurity;
  5. import netscape.security.PrivilegeManager;
  6. import netscape.security.Target;
  7.  
  8. final class InstallFile extends InstallObject {
  9.    private String vrName;
  10.    private VersionInfo versionInfo;
  11.    private String jarLocation;
  12.    private String tempFile = null;
  13.    private String finalFile;
  14.    private String regPackageName;
  15.    private String userPackageName;
  16.    private Target target;
  17.    private boolean force;
  18.    private boolean bJavaDir;
  19.    private boolean replace = false;
  20.    private boolean bChild = false;
  21.    private boolean bUpgrade = false;
  22.  
  23.    InstallFile(SoftwareUpdate var1, String var2, VersionInfo var3, String var4, FolderSpec var5, String var6, boolean var7) throws SoftUpdateException {
  24.       super(var1);
  25.       this.vrName = var2;
  26.       this.versionInfo = var3;
  27.       this.jarLocation = var4;
  28.       this.force = var7;
  29.       this.finalFile = var5.MakeFullPath(var6);
  30.       this.bJavaDir = var5.IsJavaCapable();
  31.       PrivilegeManager var8 = AppletSecurity.getPrivilegeManager();
  32.       Target var9 = Target.findTarget("Impersonator");
  33.       var8.enablePrivilege(var9);
  34.       this.target = Target.findTarget("SoftwareInstall");
  35.       var8.enablePrivilege(this.target, super.softUpdate.GetPrincipal());
  36.       this.userPackageName = var1.GetUserPackageName();
  37.       this.regPackageName = var1.GetRegPackageName();
  38.       if (this.regPackageName.length() == 0) {
  39.          this.bChild = this.vrName.charAt(0) != '/';
  40.       } else {
  41.          this.bChild = this.vrName.startsWith(this.regPackageName);
  42.       }
  43.  
  44.       this.replace = ((InstallObject)this).NativeDoesFileExist(this.finalFile);
  45.    }
  46.  
  47.    protected void Prepare() throws SoftUpdateException {
  48.       PrivilegeManager var1 = AppletSecurity.getPrivilegeManager();
  49.       Target var2 = Target.findTarget("Impersonator");
  50.       var1.enablePrivilege(var2);
  51.       var1.enablePrivilege(this.target, super.softUpdate.GetPrincipal());
  52.       this.tempFile = super.softUpdate.ExtractJARFile(this.jarLocation, this.finalFile);
  53.    }
  54.  
  55.    protected void Complete() throws SoftUpdateException {
  56.       PrivilegeManager var4 = AppletSecurity.getPrivilegeManager();
  57.       Target var5 = Target.findTarget("Impersonator");
  58.       var4.enablePrivilege(var5);
  59.       var4.enablePrivilege(this.target, super.softUpdate.GetPrincipal());
  60.       int var1 = this.NativeComplete();
  61.       var4.revertPrivilege(this.target);
  62.       if (this.bJavaDir && !this.replace && (this.finalFile.toLowerCase().endsWith(".zip") || this.finalFile.toLowerCase().endsWith(".jar"))) {
  63.          this.AddToClasspath(this.finalFile);
  64.       }
  65.  
  66.       if (var1 == 0 || var1 == 999) {
  67.          if (!this.bChild) {
  68.             int var6 = VersionRegistry.uninstallFileExists(this.regPackageName, this.vrName);
  69.             if (var6 != 0) {
  70.                this.bUpgrade = false;
  71.             } else {
  72.                this.bUpgrade = true;
  73.             }
  74.          } else if (VersionRegistry.inRegistry(this.vrName) == 0) {
  75.             this.bUpgrade = true;
  76.          } else {
  77.             this.bUpgrade = false;
  78.          }
  79.  
  80.          Integer var2 = VersionRegistry.getRefCount(this.vrName);
  81.          if (!this.bUpgrade) {
  82.             if (var2 != null) {
  83.                int var3 = 1 + var2;
  84.                VersionRegistry.installComponent(this.vrName, this.finalFile, this.versionInfo, var3);
  85.             } else if (this.replace) {
  86.                VersionRegistry.installComponent(this.vrName, this.finalFile, this.versionInfo, 2);
  87.             } else {
  88.                VersionRegistry.installComponent(this.vrName, this.finalFile, this.versionInfo, 1);
  89.             }
  90.          } else if (this.bUpgrade) {
  91.             if (var2 == null) {
  92.                VersionRegistry.installComponent(this.vrName, this.finalFile, this.versionInfo, 1);
  93.             } else {
  94.                VersionRegistry.installComponent(this.vrName, this.finalFile, this.versionInfo);
  95.             }
  96.          }
  97.  
  98.          if (!this.bChild && !this.bUpgrade) {
  99.             VersionRegistry.uninstallAddFile(this.regPackageName, this.vrName);
  100.          }
  101.       }
  102.  
  103.       if (var1 == 999) {
  104.          throw new SoftUpdateException(this.finalFile, var1);
  105.       } else if (var1 != 0) {
  106.          Object[] var7 = new Object[]{this.finalFile};
  107.          throw new SoftUpdateException(MessageFormat.format(Strings.error_InstallFileUnexpected(), var7), var1);
  108.       }
  109.    }
  110.  
  111.    protected void Abort() {
  112.       this.NativeAbort();
  113.    }
  114.  
  115.    private native void NativeAbort();
  116.  
  117.    private native int NativeComplete();
  118.  
  119.    private native void AddToClasspath(String var1);
  120.  
  121.    public String toString() {
  122.       Object[] var1 = new Object[]{this.finalFile};
  123.       return this.replace ? MessageFormat.format(Strings.details_ReplaceFile(), var1) : MessageFormat.format(Strings.details_InstallFile(), var1);
  124.    }
  125.  
  126.    protected boolean CanUninstall() {
  127.       return true;
  128.    }
  129.  
  130.    protected boolean RegisterPackageNode() {
  131.       return true;
  132.    }
  133. }
  134.