home *** CD-ROM | disk | FTP | other *** search
- package netscape.softupdate;
-
- import java.util.Enumeration;
- import java.util.Hashtable;
- import java.util.Vector;
- import netscape.javascript.JSObject;
- import netscape.security.AppletSecurity;
- import netscape.security.AppletSecurityException;
- import netscape.security.ForbiddenTargetException;
- import netscape.security.Principal;
- import netscape.security.PrivilegeManager;
- import netscape.security.Target;
-
- public final class SoftwareUpdate {
- public static final int LIMITED_INSTALL = 0;
- public static final int FULL_INSTALL = 1;
- public static final int NO_STATUS_DLG = 2;
- public static final int NO_FINALIZE_DLG = 4;
- protected static final String IMPERSONATOR = "Impersonator";
- public static final String INSTALL_PRIV = "SoftwareInstall";
- public static final String SILENT_PRIV = "SilentInstall";
- public static final String FOLDER_FILE_URL = "file:///";
- public static final int BAD_PACKAGE_NAME = -200;
- public static final int UNEXPECTED_ERROR = -201;
- public static final int ACCESS_DENIED = -202;
- public static final int TOO_MANY_CERTIFICATES = -203;
- public static final int NO_INSTALLER_CERTIFICATE = -204;
- public static final int NO_CERTIFICATE = -205;
- public static final int NO_MATCHING_CERTIFICATE = -206;
- public static final int UNKNOWN_JAR_FILE = -207;
- public static final int INVALID_ARGUMENTS = -208;
- public static final int ILLEGAL_RELATIVE_PATH = -209;
- public static final int USER_CANCELLED = -210;
- public static final int INSTALL_NOT_STARTED = -211;
- public static final int SILENT_MODE_DENIED = -212;
- public static final int NO_SUCH_COMPONENT = -213;
- public static final int FILE_DOES_NOT_EXIST = -214;
- public static final int FILE_READ_ONLY = -215;
- public static final int FILE_IS_DIRECTORY = -216;
- public static final int NETWORK_FILE_IS_IN_USE = -217;
- public static final int APPLE_SINGLE_ERR = -218;
- public static final int INVALID_PATH_ERR = -219;
- public static final int PATCH_BAD_DIFF = -220;
- public static final int PATCH_BAD_CHECKSUM_TARGET = -221;
- public static final int PATCH_BAD_CHECKSUM_RESULT = -222;
- public static final int UNINSTALL_FAILED = -223;
- public static final int SUCCESS = 0;
- public static final int REBOOT_NEEDED = 999;
- protected String packageName;
- protected String userPackageName;
- protected Vector installedFiles;
- protected Hashtable patchList;
- protected VersionInfo versionInfo;
- private boolean bShowProgress;
- private boolean bShowFinalize;
- private FolderSpec packageFolder;
- private ProgressDetails confdlg;
- private int userChoice;
- private int progwin;
- private boolean silent;
- private boolean force;
- private boolean bUninstallPackage;
- private boolean bRegisterPackage;
- private boolean bUserCancelled;
- private int lastError;
- private String filesep;
- private String installerJarName;
- private String jarName;
- private String jarCharset;
- private int zigPtr;
- private Principal installPrincipal;
-
- private native long NativeDiskSpaceAvailable(String var1);
-
- private native String NativeFileURLToNative(String var1);
-
- private native String[] ExtractDirEntries(String var1);
-
- public SoftwareUpdate(JSObject var1, String var2) {
- this.userPackageName = var2;
- this.installPrincipal = null;
- this.packageName = null;
- this.packageFolder = null;
- this.confdlg = null;
- this.progwin = 0;
- this.patchList = new Hashtable();
- this.zigPtr = 0;
- this.userChoice = -1;
- this.lastError = 0;
- this.bUninstallPackage = false;
- this.bRegisterPackage = false;
- this.bShowProgress = true;
- this.bShowFinalize = true;
- this.bUserCancelled = false;
- this.VerifyJSObject(var1);
- this.jarName = (String)var1.getMember("src");
- this.jarCharset = (String)var1.getMember("jarCharset");
-
- try {
- this.silent = (Boolean)var1.getMember("silent");
- this.force = (Boolean)var1.getMember("force");
- } catch (Throwable var3) {
- System.out.println("Unexpected throw getting silent/force");
- this.silent = false;
- this.force = false;
- }
-
- if (System.getProperty("os.name").equalsIgnoreCase("Mac OS")) {
- this.filesep = ":";
- } else {
- this.filesep = System.getProperty("file.separator");
- }
- }
-
- protected void finalize() throws Throwable {
- this.CleanUp();
- super.finalize();
- }
-
- private native void VerifyJSObject(JSObject var1);
-
- private void InitializeInstallerCertificate() throws SoftUpdateException {
- Object var1 = null;
- var1 = this.getCertificates(this.zigPtr, this.installerJarName);
- if (var1 != null && ((Object[])var1).length != 0) {
- if (((Object[])var1).length > 1) {
- throw new SoftUpdateException(Strings.error_TooManyCertificates(), -203);
- } else {
- this.installPrincipal = new Principal(14, (byte[])((Object[])var1)[0]);
- }
- } else {
- throw new SoftUpdateException(Strings.error_NoCertificate(), -204);
- }
- }
-
- private void CheckSilentPrivileges() {
- if (this.silent) {
- try {
- PrivilegeManager var1 = AppletSecurity.getPrivilegeManager();
- Target var2 = Target.findTarget("Impersonator");
- var1.enablePrivilege(var2);
- Target var3 = Target.findTarget("SilentInstall");
- var1.checkPrivilegeGranted(var3, this.GetPrincipal(), (Object)null);
- } catch (Throwable var4) {
- System.out.println(Strings.error_SilentModeDenied());
- this.silent = false;
- }
- }
- }
-
- private void RequestSecurityPrivileges() {
- PrivilegeManager var1 = AppletSecurity.getPrivilegeManager();
- Target var2 = Target.findTarget("Impersonator");
- var1.enablePrivilege(var2);
- Target var3 = Target.findTarget("SoftwareInstall");
- var1.enablePrivilege(var3, this.GetPrincipal());
- }
-
- protected final Principal GetPrincipal() {
- return this.installPrincipal;
- }
-
- protected final String GetUserPackageName() {
- return this.userPackageName;
- }
-
- protected final String GetRegPackageName() {
- return this.packageName;
- }
-
- protected final boolean GetSilent() {
- return this.silent;
- }
-
- protected final Enumeration GetInstallQueue() {
- return this.installedFiles != null ? this.installedFiles.elements() : null;
- }
-
- public int GetLastError() {
- return this.lastError;
- }
-
- public void ResetError() {
- this.lastError = 0;
- }
-
- private int saveError(int var1) {
- if (var1 != 0) {
- this.lastError = var1;
- }
-
- return var1;
- }
-
- public FolderSpec GetComponentFolder(String var1) {
- FolderSpec var3 = null;
-
- try {
- String var4 = this.GetQualifiedPackageName(var1);
- String var2 = VersionRegistry.getDefaultDirectory(var4);
- if (var2 == null) {
- var2 = VersionRegistry.componentPath(var4);
- int var5;
- if (var2 != null && (var5 = var2.lastIndexOf(this.filesep)) > 0) {
- char[] var6 = new char[var5 + 1];
- var2.getChars(0, var5 + 1, var6, 0);
- var2 = new String(var6);
- }
- }
-
- if (var2 != null) {
- if (!var2.endsWith(this.filesep)) {
- var2 = var2 + this.filesep;
- }
-
- var3 = new FolderSpec("Installed", var2, this.userPackageName);
- }
- } catch (SoftUpdateException var7) {
- var7.GetError();
- }
-
- return var3;
- }
-
- public FolderSpec GetComponentFolder(String var1, String var2) {
- return this.GetFolder(this.GetComponentFolder(var1), var2);
- }
-
- public void SetPackageFolder(FolderSpec var1) {
- this.packageFolder = var1;
- }
-
- public Object GetWinProfile(FolderSpec var1, String var2) {
- WinProfile var3 = null;
- String var4 = System.getProperty("os.name");
-
- try {
- this.SanityCheck();
- if (var4.indexOf("Windows") >= 0 || var4.equals("Win32s") || var4.equals("OS/2")) {
- var3 = new WinProfile(this, var1, var2);
- }
- } catch (Throwable var6) {
- var3 = null;
- var6.printStackTrace();
- }
-
- return var3;
- }
-
- public Object GetWinRegistry() {
- WinReg var1 = null;
- String var2 = System.getProperty("os.name");
-
- try {
- this.SanityCheck();
- if (var2.indexOf("Windows") >= 0 || var2.equals("Win32s")) {
- var1 = new WinReg(this);
- }
- } catch (Throwable var4) {
- var1 = null;
- var4.printStackTrace();
- }
-
- return var1;
- }
-
- private native void OpenJARFile() throws SoftUpdateException;
-
- private native void CloseJARFile();
-
- private native Object[] getCertificates(int var1, String var2);
-
- protected String ExtractJARFile(String var1, String var2) throws SoftUpdateException, AppletSecurityException {
- if (this.zigPtr == 0) {
- throw new SoftUpdateException("JAR file has not been opened", -207);
- } else {
- PrivilegeManager var4 = AppletSecurity.getPrivilegeManager();
- Target var3 = Target.findTarget("SoftwareInstall");
- var4.checkPrivilegeEnabled(var3);
- boolean var6 = false;
- Object var7 = null;
- var7 = this.getCertificates(this.zigPtr, var1);
- if (var7 != null && ((Object[])var7).length != 0) {
- for(int var5 = 0; var5 < ((Object[])var7).length; ++var5) {
- Principal var8 = new Principal(14, (byte[])((Object[])var7)[var5]);
- if (this.installPrincipal.equals(var8)) {
- var6 = true;
- break;
- }
- }
-
- if (!var6) {
- throw new SoftUpdateException(Strings.error_MismatchedCertificate() + var1, -206);
- } else {
- String var10 = this.NativeExtractJARFile(var1, var2);
- return var10;
- }
- } else {
- throw new SoftUpdateException("Missing certificate for " + var1, -205);
- }
- }
- }
-
- private void ParseFlags(int var1) {
- if ((var1 & 2) == 2) {
- this.bShowProgress = false;
- }
-
- if ((var1 & 4) == 4) {
- this.bShowFinalize = false;
- }
-
- }
-
- private native String NativeExtractJARFile(String var1, String var2) throws SoftUpdateException;
-
- public int StartInstall(String var1, VersionInfo var2, int var3) {
- int var4 = 0;
- this.ResetError();
- this.ParseFlags(var3);
- this.bUserCancelled = false;
- this.packageName = null;
-
- try {
- if (var1 == null) {
- throw new SoftUpdateException(Strings.error_BadPackageName(), -200);
- }
-
- char[] var5;
- for(this.packageName = this.GetQualifiedPackageName(var1); this.packageName.endsWith("/"); this.packageName = new String(var5)) {
- var5 = new char[this.packageName.length() - 1];
- this.packageName.getChars(0, this.packageName.length() - 1, var5, 0);
- }
-
- this.versionInfo = var2;
- this.installedFiles = new Vector();
- this.OpenJARFile();
- this.InitializeInstallerCertificate();
- this.CheckSilentPrivileges();
- this.RequestSecurityPrivileges();
- if (this.bShowProgress) {
- this.OpenProgressDialog();
- }
-
- String var9 = VersionRegistry.getDefaultDirectory(this.packageName);
- if (var9 != null) {
- this.packageFolder = new FolderSpec("Installed", var9, this.userPackageName);
- }
- } catch (SoftUpdateException var6) {
- var4 = var6.GetError();
- this.packageName = null;
- } catch (ForbiddenTargetException var7) {
- var4 = -202;
- this.packageName = null;
- } catch (Exception var8) {
- ((Throwable)var8).printStackTrace();
- var4 = -201;
- this.packageName = null;
- }
-
- this.saveError(var4);
- return var4;
- }
-
- public int StartInstall(String var1, String var2) {
- return this.StartInstall(var1, (VersionInfo)(new VersionInfo(var2)), 0);
- }
-
- public int StartInstall(String var1, String var2, int var3) {
- return this.StartInstall(var1, new VersionInfo(var2), var3);
- }
-
- protected void UserCancelled() {
- this.userChoice = 0;
- }
-
- protected void UserApproved() {
- this.userChoice = 1;
- }
-
- public int FinalizeInstall() {
- boolean var1 = false;
- int var2 = 0;
-
- try {
- this.SanityCheck();
- if (this.installedFiles == null || this.installedFiles.size() == 0) {
- this.CleanUp();
- byte var24 = 0;
- return var24;
- }
-
- if (!this.silent && this.UserWantsConfirm()) {
- this.confdlg = new ProgressDetails(this);
-
- while(this.userChoice == -1) {
- Thread.sleep(10L);
- }
-
- this.confdlg = null;
- if (this.userChoice != 1) {
- this.AbortInstall();
- int var3 = this.saveError(-210);
- return var3;
- }
- }
-
- if (this.bShowFinalize) {
- this.OpenProgressDialog();
- } else {
- this.CloseProgressDialog();
- }
-
- this.SetProgressDialogItem("");
- this.SetProgressDialogRange(this.installedFiles.size());
- Enumeration var6 = this.GetInstallQueue();
- InstallObject var7 = null;
-
- try {
- int var8 = 0;
- if (this.bUninstallPackage) {
- VersionRegistry.uninstallCreate(this.packageName, this.userPackageName);
- }
-
- while(var6.hasMoreElements()) {
- var7 = (InstallObject)var6.nextElement();
-
- try {
- var7.Complete();
- } catch (SoftUpdateException var18) {
- if (var18.GetError() != 999) {
- throw var18;
- }
-
- var1 = true;
- }
-
- ++var8;
- this.SetProgressDialogThermo(var8);
- }
- } catch (Throwable var19) {
- if (var7 != null) {
- var7.Abort();
- }
-
- while(var6.hasMoreElements()) {
- try {
- var7 = (InstallObject)var6.nextElement();
- var7.Abort();
- } catch (Throwable var17) {
- }
- }
-
- throw var19;
- }
-
- if (this.versionInfo != null && this.bRegisterPackage) {
- var2 = VersionRegistry.installComponent(this.packageName, (String)null, this.versionInfo);
- if (this.packageFolder != null) {
- VersionRegistry.setDefaultDirectory(this.packageName, this.packageFolder.toString());
- }
- }
- } catch (SoftUpdateException var20) {
- var2 = var20.GetError();
- } catch (ForbiddenTargetException var21) {
- var2 = -202;
- } catch (Throwable var22) {
- var22.printStackTrace();
- System.out.println(Strings.error_Unexpected() + " FinalizeInstall");
- var2 = -201;
- } finally {
- if (this.installedFiles != null) {
- this.installedFiles.removeAllElements();
- }
-
- this.CleanUp();
- }
-
- if (var2 == 0 && var1) {
- var2 = 999;
- }
-
- this.saveError(var2);
- return var2;
- }
-
- public synchronized void AbortInstall() {
- try {
- if (this.installedFiles != null) {
- Enumeration var3 = this.GetInstallQueue();
-
- while(var3.hasMoreElements()) {
- InstallObject var4 = (InstallObject)var3.nextElement();
-
- try {
- var4.Abort();
- } catch (Throwable var11) {
- }
- }
-
- this.installedFiles.removeAllElements();
- this.installedFiles = null;
- }
-
- this.CloseJARFile();
- } catch (Throwable var12) {
- System.out.println(Strings.error_Unexpected() + " AbortInstall");
- var12.printStackTrace();
- } finally {
- try {
- this.CleanUp();
- } catch (Throwable var10) {
- var10.printStackTrace();
- }
-
- }
-
- }
-
- private synchronized void CleanUp() {
- this.CloseJARFile();
- this.confdlg = null;
- this.zigPtr = 0;
- if (this.installedFiles != null) {
- Enumeration var1 = this.GetInstallQueue();
-
- while(var1.hasMoreElements()) {
- InstallObject var2 = (InstallObject)var1.nextElement();
- var2.Abort();
- }
-
- this.installedFiles.removeAllElements();
- }
-
- this.installedFiles = null;
- this.packageName = null;
- this.CloseProgressDialog();
- }
-
- protected void ScheduleForInstall(InstallObject var1) throws SoftUpdateException {
- this.SetProgressDialogItem(var1.toString());
- var1.Prepare();
- this.installedFiles.addElement(var1);
- if (var1.CanUninstall()) {
- this.bUninstallPackage = true;
- }
-
- if (var1.RegisterPackageNode()) {
- this.bRegisterPackage = true;
- }
-
- }
-
- private String GetQualifiedRegName(String var1) throws SoftUpdateException {
- String var2 = this.packageName.length() == 0 ? "" : this.packageName + "/";
- if (var1.toUpperCase().startsWith("=COMM=/")) {
- var1 = (var1.substring(7) + "===").substring(0, var1.length() - 7);
- } else if (var1.toUpperCase().startsWith("=USER=/")) {
- var1 = this.CurrentUserNode() + var1.substring(7);
- } else if (var1.charAt(0) != '/') {
- var1 = var2 + var1;
- }
-
- if (this.BadRegName(var1)) {
- throw new SoftUpdateException(Strings.error_BadPackageName(), -200);
- } else {
- return var1;
- }
- }
-
- private String GetQualifiedPackageName(String var1) throws SoftUpdateException {
- if (var1.toUpperCase().startsWith("=USER=/")) {
- var1 = this.CurrentUserNode() + var1.substring(7);
- }
-
- if (this.BadRegName(var1)) {
- throw new SoftUpdateException(Strings.error_BadPackageName(), -200);
- } else {
- return var1;
- }
- }
-
- private void SanityCheck() throws SoftUpdateException {
- if (this.packageName == null) {
- throw new SoftUpdateException(Strings.error_MustCallStart(), -211);
- } else if (this.bUserCancelled) {
- this.AbortInstall();
- this.saveError(-210);
- throw new SoftUpdateException("", -210);
- }
- }
-
- private native String NativeProfileName();
-
- private String CurrentUserNode() {
- return "/Netscape/Users/" + this.NativeProfileName() + "/";
- }
-
- private boolean BadRegName(String var1) {
- if (var1 == null) {
- return true;
- } else if (!var1.startsWith(" ") && !var1.endsWith(" ")) {
- if (var1.indexOf("//") > -1) {
- return true;
- } else if (var1.indexOf("/ ") <= -1 && var1.indexOf(" /") <= -1) {
- return var1.indexOf("=") > -1;
- } else {
- return true;
- }
- } else {
- return true;
- }
- }
-
- public int AddSubcomponent(String var1, VersionInfo var2, String var3, FolderSpec var4, String var5, boolean var6) {
- int var8 = 0;
-
- try {
- if (var3 == null || var3.length() == 0 || var4 == null) {
- throw new SoftUpdateException("", -208);
- }
-
- this.SanityCheck();
- if (var1 != null && var1.length() != 0) {
- var1 = this.GetQualifiedRegName(var1);
- } else {
- var1 = this.GetQualifiedRegName(var3);
- }
-
- if (var5 == null || var5.length() == 0) {
- var5 = var3;
- }
-
- boolean var9 = false;
- if (!var6 && var2 != null && VersionRegistry.validateComponent(var1) == 0) {
- VersionInfo var10 = VersionRegistry.componentVersion(var1);
- if (var2.compareTo(var10) >= 0) {
- var9 = true;
- }
- } else {
- var9 = true;
- }
-
- if (var9) {
- InstallFile var7 = new InstallFile(this, var1, var2, var3, var4, var5, var6);
- this.ScheduleForInstall(var7);
- }
- } catch (SoftUpdateException var11) {
- var8 = var11.GetError();
- } catch (ForbiddenTargetException var12) {
- var8 = -202;
- } catch (Throwable var13) {
- System.out.println(Strings.error_Unexpected() + "AddSubcomponent");
- var13.printStackTrace();
- var8 = -201;
- }
-
- this.saveError(var8);
- return var8;
- }
-
- public int AddSubcomponent(String var1) {
- return this.AddSubcomponent("", this.versionInfo, var1, this.packageFolder, "", this.force);
- }
-
- public int AddSubcomponent(String var1, String var2, FolderSpec var3, String var4) {
- return this.AddSubcomponent(var1, this.versionInfo, var2, var3, var4, this.force);
- }
-
- public int AddSubcomponent(String var1, String var2, String var3, FolderSpec var4, String var5) {
- return this.AddSubcomponent(var1, new VersionInfo(var2), var3, var4, var5, this.force);
- }
-
- public int AddSubcomponent(String var1, String var2, String var3, FolderSpec var4, String var5, boolean var6) {
- return this.AddSubcomponent(var1, new VersionInfo(var2), var3, var4, var5, var6);
- }
-
- public int Execute(String var1) {
- return this.Execute(var1, (String)null);
- }
-
- public int Execute(String var1, String var2) {
- int var3 = 0;
-
- try {
- this.SanityCheck();
- InstallExecute var4 = new InstallExecute(this, var1, var2);
- this.ScheduleForInstall(var4);
- } catch (SoftUpdateException var5) {
- var3 = var5.GetError();
- } catch (ForbiddenTargetException var6) {
- var3 = -202;
- } catch (Throwable var7) {
- var7.printStackTrace();
- System.out.println(Strings.error_Unexpected() + "Execute");
- var3 = -201;
- }
-
- this.saveError(var3);
- return var3;
- }
-
- public int[] Gestalt(String var1) {
- int[] var2 = new int[]{0, 0};
-
- try {
- var2[1] = this.NativeGestalt(var1);
- } catch (SoftUpdateException var4) {
- var2[0] = var4.GetError();
- } catch (Throwable var5) {
- var2[0] = -1;
- System.out.println(Strings.error_Unexpected() + "Gestalt");
- }
-
- return var2;
- }
-
- private native int NativeGestalt(String var1) throws SoftUpdateException;
-
- public int Patch(String var1, VersionInfo var2, String var3, FolderSpec var4, String var5) {
- if (var4 != null && var1 != null && var1.length() != 0 && var3 != null) {
- int var6 = 0;
-
- try {
- this.SanityCheck();
- String var7 = this.GetQualifiedRegName(var1);
- InstallPatch var8 = new InstallPatch(this, var7, var2, var3, var4, var5);
- this.ScheduleForInstall(var8);
- } catch (SoftUpdateException var9) {
- var6 = var9.GetError();
- } catch (ForbiddenTargetException var10) {
- var6 = -202;
- } catch (Throwable var11) {
- System.out.println(Strings.error_Unexpected() + "Patch");
- var11.printStackTrace();
- var6 = -201;
- }
-
- this.saveError(var6);
- return var6;
- } else {
- return this.saveError(-208);
- }
- }
-
- public int Patch(String var1, String var2, FolderSpec var3, String var4) {
- return this.Patch(var1, this.versionInfo, var2, var3, var4);
- }
-
- public int Patch(String var1, String var2, String var3, FolderSpec var4, String var5) {
- return this.Patch(var1, new VersionInfo(var2), var3, var4, var5);
- }
-
- private native int NativeMakeDirectory(String var1);
-
- public int DeleteFile(FolderSpec var1, String var2) {
- int var3 = 0;
-
- try {
- this.SanityCheck();
- InstallDelete var4 = new InstallDelete(this, var1, var2);
- this.ScheduleForInstall(var4);
- } catch (SoftUpdateException var5) {
- var3 = var5.GetError();
- if (var3 == -214) {
- var3 = 0;
- }
- } catch (ForbiddenTargetException var6) {
- var3 = -202;
- } catch (Throwable var7) {
- var7.printStackTrace();
- var3 = -201;
- }
-
- this.saveError(var3);
- return var3;
- }
-
- public int DeleteComponent(String var1) {
- int var2 = 0;
-
- try {
- this.SanityCheck();
- String var3 = this.GetQualifiedRegName(var1);
- InstallDelete var4 = new InstallDelete(this, var3);
- this.ScheduleForInstall(var4);
- } catch (SoftUpdateException var5) {
- var2 = var5.GetError();
- if (var2 == -214) {
- var2 = 0;
- }
- } catch (ForbiddenTargetException var6) {
- var2 = -202;
- } catch (Throwable var7) {
- var7.printStackTrace();
- var2 = -201;
- }
-
- if (var2 == -214) {
- var2 = 0;
- }
-
- this.saveError(var2);
- return var2;
- }
-
- public FolderSpec GetFolder(String var1) {
- try {
- if (!var1.equalsIgnoreCase("Installed") && !var1.equalsIgnoreCase("file:///")) {
- FolderSpec var2 = new FolderSpec(var1, this.packageName, this.userPackageName);
- return var2.GetDirectoryPath() == null ? null : var2;
- } else {
- return null;
- }
- } catch (Throwable var3) {
- return null;
- }
- }
-
- public FolderSpec GetFolder(Object var1, String var2) {
- if (var1 instanceof FolderSpec) {
- return this.GetFolder((FolderSpec)var1, var2);
- } else {
- return var1 instanceof String ? this.GetFolder((String)var1, var2) : null;
- }
- }
-
- public FolderSpec GetFolder(String var1, String var2) {
- if (var1 == null) {
- return null;
- } else if (var1.equalsIgnoreCase("file:///")) {
- String var4 = this.NativeFileURLToNative("/" + var2);
- if (var4 != null) {
- if (var4.endsWith(this.filesep)) {
- return new FolderSpec("Installed", var4, this.userPackageName);
- } else {
- String var3 = var4 + this.filesep;
- return new FolderSpec("Installed", var3, this.userPackageName);
- }
- } else {
- return null;
- }
- } else {
- return this.GetFolder(this.GetFolder(var1), var2);
- }
- }
-
- public FolderSpec GetFolder(FolderSpec var1, String var2) {
- if (var2 != null && var2.length() != 0) {
- if (var1 != null) {
- String var3;
- try {
- var3 = var1.MakeFullPath(var2);
- } catch (Exception var5) {
- return null;
- }
-
- if (var3 != null) {
- if (var3.endsWith(this.filesep)) {
- return new FolderSpec("Installed", var3, this.userPackageName);
- }
-
- String var4 = var3 + this.filesep;
- return new FolderSpec("Installed", var4, this.userPackageName);
- }
- }
-
- return null;
- } else {
- return var1;
- }
- }
-
- public long DiskSpaceAvailable(FolderSpec var1) {
- String var2 = var1.toString();
- return var2 == null ? 0L : this.NativeDiskSpaceAvailable(var2);
- }
-
- public int AddDirectory(String var1, VersionInfo var2, String var3, FolderSpec var4, String var5, boolean var6) {
- int var8 = 0;
-
- try {
- if (var3 == null || var3.length() == 0 || var4 == null) {
- throw new SoftUpdateException("", -208);
- }
-
- this.SanityCheck();
- if (var1 != null && var1.length() != 0) {
- var1 = this.GetQualifiedRegName(var1);
- } else {
- var1 = this.GetQualifiedRegName(var3);
- }
-
- if (var5 == null) {
- var5 = "";
- } else if (var5.length() != 0) {
- var5 = var5 + "/";
- }
-
- String[] var12 = this.ExtractDirEntries(var3);
-
- for(int var9 = 0; var9 < var12.length; ++var9) {
- String var13 = var1 + "/" + var12[var9];
- boolean var10;
- if (!var6 && var2 != null && VersionRegistry.validateComponent(var13) == 0) {
- VersionInfo var11 = VersionRegistry.componentVersion(var13);
- var10 = var2.compareTo(var11) >= 0;
- } else {
- var10 = true;
- }
-
- if (var10) {
- InstallFile var7 = new InstallFile(this, var13, var2, var3 + "/" + var12[var9], var4, var5 + var12[var9], var6);
- this.ScheduleForInstall(var7);
- }
- }
- } catch (SoftUpdateException var15) {
- var8 = var15.GetError();
- } catch (ForbiddenTargetException var16) {
- var8 = -202;
- } catch (Throwable var17) {
- var17.printStackTrace();
- System.out.println(Strings.error_Unexpected() + "AddDirectory");
- var8 = -201;
- }
-
- this.saveError(var8);
- return var8;
- }
-
- public int AddDirectory(String var1) {
- return this.AddDirectory("", this.versionInfo, var1, this.packageFolder, "", this.force);
- }
-
- public int AddDirectory(String var1, String var2, FolderSpec var3, String var4) {
- return this.AddDirectory(var1, this.versionInfo, var2, var3, var4, this.force);
- }
-
- public int AddDirectory(String var1, String var2, String var3, FolderSpec var4, String var5) {
- return this.AddDirectory(var1, new VersionInfo(var2), var3, var4, var5, this.force);
- }
-
- public int AddDirectory(String var1, String var2, String var3, FolderSpec var4, String var5, boolean var6) {
- return this.AddDirectory(var1, new VersionInfo(var2), var3, var4, var5, var6);
- }
-
- public int Uninstall(String var1) {
- int var2 = 0;
-
- try {
- this.SanityCheck();
- String var3 = this.GetQualifiedPackageName(var1);
- UninstallObject var4 = new UninstallObject(this, var3);
- this.ScheduleForInstall(var4);
- } catch (SoftUpdateException var5) {
- var2 = var5.GetError();
- } catch (ForbiddenTargetException var6) {
- var2 = -202;
- } catch (Throwable var7) {
- var7.printStackTrace();
- System.out.println(Strings.error_Unexpected() + "Uninstall");
- var2 = -201;
- }
-
- this.saveError(var2);
- return var2;
- }
-
- void OpenProgressDialog() {
- if (!this.silent && this.progwin == 0) {
- this.progwin = this.NativeOpenProgDlg(this.GetUserPackageName());
- }
-
- }
-
- void CloseProgressDialog() {
- if (this.progwin != 0) {
- this.NativeCloseProgDlg(this.progwin);
- this.progwin = 0;
- }
-
- }
-
- void SetProgressDialogItem(String var1) {
- if (this.progwin != 0) {
- this.NativeSetProgDlgItem(this.progwin, var1);
- }
-
- }
-
- void SetProgressDialogRange(int var1) {
- if (this.progwin != 0) {
- this.NativeSetProgDlgRange(this.progwin, var1);
- }
-
- }
-
- void SetProgressDialogThermo(int var1) {
- if (this.progwin != 0) {
- this.NativeSetProgDlgThermo(this.progwin, var1);
- }
-
- }
-
- private native int NativeOpenProgDlg(String var1);
-
- private native void NativeCloseProgDlg(int var1);
-
- private native void NativeSetProgDlgItem(int var1, String var2);
-
- private native void NativeSetProgDlgRange(int var1, int var2);
-
- private native void NativeSetProgDlgThermo(int var1, int var2);
-
- private native boolean UserWantsConfirm();
- }
-