コード例 #1
0
ファイル: Program.cs プロジェクト: marcinotorowski/MSIX-Hero
        public static void Main(string[] args)
        {
            try
            {
                if (args.Length > 0 && args[0] == "--selfElevate")
                {
                    Logger.Debug("Preparing to start the pipe server...");

                    IConfigurationService configurationService = new LocalConfigurationService();
                    ISigningManager       signingManager       = new SigningManager(MsixHeroGistTimeStampFeed.CreateCached());
                    IAppAttachManager     appAttachManager     = new AppAttachManager(signingManager, configurationService);
                    IAppxVolumeManager    appxVolumeManager    = new AppxVolumeManager();
                    IRegistryManager      registryManager      = new RegistryManager();
                    IAppxPackageManager   appxPackageManager   = new AppxPackageManager();
                    IAppxPackageQuery     appxPackageQuery     = new AppxPackageQuery(registryManager, configurationService);
                    IAppxPackageInstaller appxPackageInstaller = new AppxPackageInstaller();
                    IAppxPackageRunner    appxPackageRunner    = new AppxPackageRunner();
                    IAppxLogManager       appxLogManager       = new AppxLogManager();

                    var receivers = new ISelfElevationProxyReceiver[]
                    {
                        new AppAttachManagerProxyReceiver(appAttachManager),
                        new AppxPackageManagerProxyReceiver(appxPackageManager),
                        new AppxPackageQueryProxyReceiver(appxPackageQuery),
                        new AppxPackageInstallerProxyReceiver(appxPackageInstaller),
                        new AppxPackageRunnerProxyReceiver(appxPackageRunner),
                        new AppxLogManagerProxyReceiver(appxLogManager),
                        new AppxVolumeManagerProxyReceiver(appxVolumeManager),
                        new RegistryManagerProxyReceiver(registryManager),
                        new SigningManagerProxyReceiver(signingManager)
                    };

                    var server = new Server(receivers);
                    server.Start().GetAwaiter().GetResult();
                    Console.ReadKey();
                }
                else
                {
                    Logger.Fatal("Unsupported command line arguments, terminating...");
                    Environment.ExitCode = 1;
                }
            }
            catch (AggregateException e)
            {
                Logger.Fatal(e.GetBaseException(), "Fatal exception, the program will be closed.");
            }
            catch (Exception e)
            {
                Logger.Fatal(e, "Fatal exception, the program will be closed.");
            }

            Logger.Info("Waiting for the user to press a key...");
            Console.ReadKey();
        }
コード例 #2
0
        private static async Task <int> Run(SignVerb arg)
        {
            var signingManager       = new SigningManager();
            var configurationService = new LocalConfigurationService();

            var console  = new ConsoleImpl(Console.Out, Console.Error);
            var executor = new SignVerbExecutor(arg, signingManager, configurationService, console);
            var exitCode = await executor.Execute().ConfigureAwait(false);

            Environment.ExitCode = exitCode;
            return(exitCode);
        }
コード例 #3
0
        static App()
        {
            var logLevel = MsixHeroLogLevel.Info;

            ExceptionGuard.Guard(() =>
            {
                var service = new LocalConfigurationService();
                var config  = service.GetCurrentConfiguration();

                logLevel = config.VerboseLogging ? MsixHeroLogLevel.Trace : MsixHeroLogLevel.Info;
            });

            LogManager.Initialize(logLevel);
        }
コード例 #4
0
ファイル: Program.cs プロジェクト: marcinotorowski/MSIX-Hero
        static Program()
        {
            AppDomain.CurrentDomain.UnhandledException += CurrentDomainOnUnhandledException;
            TaskScheduler.UnobservedTaskException      += TaskSchedulerOnUnobservedTaskException;

            var logLevel = MsixHeroLogLevel.Info;

            ExceptionGuard.Guard(() =>
            {
                var service = new LocalConfigurationService();
                var config  = service.GetCurrentConfiguration();

                logLevel = config.VerboseLogging ? MsixHeroLogLevel.Trace : MsixHeroLogLevel.Info;
            });

            LogManager.Initialize(logLevel);
        }
コード例 #5
0
ファイル: Program.cs プロジェクト: marcinotorowski/MSIX-Hero
        static async Task <int> Main(string[] args)
        {
            var logLevel = MsixHeroLogLevel.Trace;

            ExceptionGuard.Guard(() =>
            {
                var service = new LocalConfigurationService();
                var config  = service.GetCurrentConfiguration();

                logLevel = config.VerboseLogging ? MsixHeroLogLevel.Trace : MsixHeroLogLevel.Info;
            });

            LogManager.Initialize(logLevel);

            var console = new ConsoleImpl(Console.Out, Console.Error);

            try
            {
                // First argument is the "edit" verb.
                // Second argument is the path of the package.
                if (args.Length > 1 &&
                    string.Equals(args[0], "edit", StringComparison.OrdinalIgnoreCase) &&
                    !args[1].StartsWith("-", StringComparison.OrdinalIgnoreCase))
                {
                    return(await DoEditVerb(args[1], args.Skip(2), console));
                }

                return(await DoCommonVerbs(args, console));
            }
            catch (Exception e)
            {
                await console.WriteError(e.Message).ConfigureAwait(false);

                Environment.ExitCode = 1;
                return(1);
            }
        }