// 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;
            }
        }