home *** CD-ROM | disk | FTP | other *** search
- package netscape.softupdate;
-
- import java.text.MessageFormat;
- import netscape.security.AppletSecurity;
- import netscape.security.PrivilegeManager;
- import netscape.security.Target;
-
- final class InstallFile extends InstallObject {
- private String vrName;
- private VersionInfo versionInfo;
- private String jarLocation;
- private String tempFile = null;
- private String finalFile;
- private String regPackageName;
- private String userPackageName;
- private Target target;
- private boolean force;
- private boolean bJavaDir;
- private boolean replace = false;
- private boolean bChild = false;
- private boolean bUpgrade = false;
-
- InstallFile(SoftwareUpdate var1, String var2, VersionInfo var3, String var4, FolderSpec var5, String var6, boolean var7) throws SoftUpdateException {
- super(var1);
- this.vrName = var2;
- this.versionInfo = var3;
- this.jarLocation = var4;
- this.force = var7;
- this.finalFile = var5.MakeFullPath(var6);
- this.bJavaDir = var5.IsJavaCapable();
- PrivilegeManager var8 = AppletSecurity.getPrivilegeManager();
- Target var9 = Target.findTarget("Impersonator");
- var8.enablePrivilege(var9);
- this.target = Target.findTarget("SoftwareInstall");
- var8.enablePrivilege(this.target, super.softUpdate.GetPrincipal());
- this.userPackageName = var1.GetUserPackageName();
- this.regPackageName = var1.GetRegPackageName();
- if (this.regPackageName.length() == 0) {
- this.bChild = this.vrName.charAt(0) != '/';
- } else {
- this.bChild = this.vrName.startsWith(this.regPackageName);
- }
-
- this.replace = ((InstallObject)this).NativeDoesFileExist(this.finalFile);
- }
-
- protected void Prepare() throws SoftUpdateException {
- PrivilegeManager var1 = AppletSecurity.getPrivilegeManager();
- Target var2 = Target.findTarget("Impersonator");
- var1.enablePrivilege(var2);
- var1.enablePrivilege(this.target, super.softUpdate.GetPrincipal());
- this.tempFile = super.softUpdate.ExtractJARFile(this.jarLocation, this.finalFile);
- }
-
- protected void Complete() throws SoftUpdateException {
- PrivilegeManager var4 = AppletSecurity.getPrivilegeManager();
- Target var5 = Target.findTarget("Impersonator");
- var4.enablePrivilege(var5);
- var4.enablePrivilege(this.target, super.softUpdate.GetPrincipal());
- int var1 = this.NativeComplete();
- var4.revertPrivilege(this.target);
- if (this.bJavaDir && !this.replace && (this.finalFile.toLowerCase().endsWith(".zip") || this.finalFile.toLowerCase().endsWith(".jar"))) {
- this.AddToClasspath(this.finalFile);
- }
-
- if (var1 == 0 || var1 == 999) {
- if (!this.bChild) {
- int var6 = VersionRegistry.uninstallFileExists(this.regPackageName, this.vrName);
- if (var6 != 0) {
- this.bUpgrade = false;
- } else {
- this.bUpgrade = true;
- }
- } else if (VersionRegistry.inRegistry(this.vrName) == 0) {
- this.bUpgrade = true;
- } else {
- this.bUpgrade = false;
- }
-
- Integer var2 = VersionRegistry.getRefCount(this.vrName);
- if (!this.bUpgrade) {
- if (var2 != null) {
- int var3 = 1 + var2;
- VersionRegistry.installComponent(this.vrName, this.finalFile, this.versionInfo, var3);
- } else if (this.replace) {
- VersionRegistry.installComponent(this.vrName, this.finalFile, this.versionInfo, 2);
- } else {
- VersionRegistry.installComponent(this.vrName, this.finalFile, this.versionInfo, 1);
- }
- } else if (this.bUpgrade) {
- if (var2 == null) {
- VersionRegistry.installComponent(this.vrName, this.finalFile, this.versionInfo, 1);
- } else {
- VersionRegistry.installComponent(this.vrName, this.finalFile, this.versionInfo);
- }
- }
-
- if (!this.bChild && !this.bUpgrade) {
- VersionRegistry.uninstallAddFile(this.regPackageName, this.vrName);
- }
- }
-
- if (var1 == 999) {
- throw new SoftUpdateException(this.finalFile, var1);
- } else if (var1 != 0) {
- Object[] var7 = new Object[]{this.finalFile};
- throw new SoftUpdateException(MessageFormat.format(Strings.error_InstallFileUnexpected(), var7), var1);
- }
- }
-
- protected void Abort() {
- this.NativeAbort();
- }
-
- private native void NativeAbort();
-
- private native int NativeComplete();
-
- private native void AddToClasspath(String var1);
-
- public String toString() {
- Object[] var1 = new Object[]{this.finalFile};
- return this.replace ? MessageFormat.format(Strings.details_ReplaceFile(), var1) : MessageFormat.format(Strings.details_InstallFile(), var1);
- }
-
- protected boolean CanUninstall() {
- return true;
- }
-
- protected boolean RegisterPackageNode() {
- return true;
- }
- }
-