// Entry point that is called by "InstallUtil". public static void InstallHelper(String[] args) { ManagedInstallerClass inst; inst = new ManagedInstallerClass(args); int exitCode = inst.Install(); if(exitCode != 0) { Environment.Exit(exitCode); } }
public static void InstallHelper(string[] args) { bool flag1 = false; bool flag2 = false; TransactedInstaller transactedInstaller = new TransactedInstaller(); bool flag3 = false; try { ArrayList arrayList = new ArrayList(); for (int index = 0; index < args.Length; ++index) { if (args[index].StartsWith("/", StringComparison.Ordinal) || args[index].StartsWith("-", StringComparison.Ordinal)) { string strA = args[index].Substring(1); if (string.Compare(strA, "u", StringComparison.OrdinalIgnoreCase) == 0 || string.Compare(strA, "uninstall", StringComparison.OrdinalIgnoreCase) == 0) { flag1 = true; } else if (string.Compare(strA, "?", StringComparison.OrdinalIgnoreCase) == 0 || string.Compare(strA, "help", StringComparison.OrdinalIgnoreCase) == 0) { flag3 = true; } else if (string.Compare(strA, "AssemblyName", StringComparison.OrdinalIgnoreCase) == 0) { flag2 = true; } else { arrayList.Add((object)args[index]); } } else { Assembly assembly; try { assembly = !flag2?Assembly.LoadFrom(args[index]) : Assembly.Load(args[index]); } catch (Exception ex) { if (args[index].IndexOf('=') != -1) { throw new ArgumentException(Res.GetString("InstallFileDoesntExistCommandLine", new object[1] { (object)args[index] }), ex); } else { throw; } } AssemblyInstaller assemblyInstaller = new AssemblyInstaller(assembly, (string[])arrayList.ToArray(typeof(string))); transactedInstaller.Installers.Add((Installer)assemblyInstaller); } } if (flag3 || transactedInstaller.Installers.Count == 0) { flag3 = true; transactedInstaller.Installers.Add((Installer) new AssemblyInstaller()); throw new InvalidOperationException(ManagedInstallerClass.GetHelp((Installer)transactedInstaller)); } else { transactedInstaller.Context = new InstallContext("InstallUtil.InstallLog", (string[])arrayList.ToArray(typeof(string))); } } catch (Exception ex) { if (flag3) { throw ex; } throw new InvalidOperationException(Res.GetString("InstallInitializeException", (object)ex.GetType().FullName, (object)ex.Message)); } try { string strA1 = transactedInstaller.Context.Parameters["installtype"]; if (strA1 != null && string.Compare(strA1, "notransaction", StringComparison.OrdinalIgnoreCase) == 0) { string strA2 = transactedInstaller.Context.Parameters["action"]; if (strA2 != null && string.Compare(strA2, "rollback", StringComparison.OrdinalIgnoreCase) == 0) { transactedInstaller.Context.LogMessage(Res.GetString("InstallRollbackNtRun")); for (int index = 0; index < transactedInstaller.Installers.Count; ++index) { transactedInstaller.Installers[index].Rollback((IDictionary)null); } } else if (strA2 != null && string.Compare(strA2, "commit", StringComparison.OrdinalIgnoreCase) == 0) { transactedInstaller.Context.LogMessage(Res.GetString("InstallCommitNtRun")); for (int index = 0; index < transactedInstaller.Installers.Count; ++index) { transactedInstaller.Installers[index].Commit((IDictionary)null); } } else if (strA2 != null && string.Compare(strA2, "uninstall", StringComparison.OrdinalIgnoreCase) == 0) { transactedInstaller.Context.LogMessage(Res.GetString("InstallUninstallNtRun")); for (int index = 0; index < transactedInstaller.Installers.Count; ++index) { transactedInstaller.Installers[index].Uninstall((IDictionary)null); } } else { transactedInstaller.Context.LogMessage(Res.GetString("InstallInstallNtRun")); for (int index = 0; index < transactedInstaller.Installers.Count; ++index) { transactedInstaller.Installers[index].Install((IDictionary)null); } } } else if (!flag1) { IDictionary stateSaver = (IDictionary) new Hashtable(); transactedInstaller.Install(stateSaver); } else { transactedInstaller.Uninstall((IDictionary)null); } } catch (Exception ex) { throw ex; } }