Exemple #1
0
        /// <summary>
        /// Allows application just run one instance.
        /// </summary>
        public static ApplicationConfigurationBuilder UseSingleInstance(this ApplicationConfigurationBuilder @this, Action onProcessAlreadyExists = null)
        {
            @this.Use(builder => {
                return((runtime, props) =>
                {
                    var thisProcess = Process.GetCurrentProcess();

                    var ProcessArry = Process.GetProcessesByName(thisProcess.ProcessName);
                    if (ProcessArry.Length <= 2)
                    {
                        foreach (var process in ProcessArry)
                        {
                            if (process.Id != thisProcess.Id)
                            {
                                process.Kill();
                            }
                        }
                    }

                    foreach (var process in Process.GetProcessesByName(thisProcess.ProcessName))
                    {
                        if (process.Id != thisProcess.Id)
                        {
                            onProcessAlreadyExists?.Invoke();

                            Environment.Exit(0);
                            return;
                        }
                    }
                });
            }, ExtensionExecutePosition.MainProcessStartup);

            return(@this);
        }
Exemple #2
0
        public static ApplicationConfigurationBuilder UseApplicationDataDirectory(this ApplicationConfigurationBuilder @this, string path)
        {
            @this.Use(builder =>
            {
                builder.Properties[nameof(UseApplicationDataDirectory)] = path;



                return((runtime, props) =>
                {
                    if (!props.ContainsKey(nameof(UseApplicationDataDirectory)))
                    {
                        return;
                    }

                    var path = (string)props[nameof(UseApplicationDataDirectory)];


                    runtime.ChromiumEnvironment.SettingConfigurations += new Action <CefSettings>(settings =>
                    {
                        settings.CachePath = path;
                        settings.LogFile = Path.Combine(path, "debug.log");
                    });
                });
            }, ExtensionExecutePosition.SubProcessStartup);

            return(@this);
        }
Exemple #3
0
        public static ApplicationConfigurationBuilder RegisterJavaScriptExtension(this ApplicationConfigurationBuilder @this, Func <JavaScriptExtensionBase> registerJavaScriptExtension)
        {
            @this.Use(builder =>
            {
                return((runtime, props) =>
                {
                    var extension = registerJavaScriptExtension.Invoke();

                    var extensionName = extension.Name.ToLower();

                    if (extensionName.StartsWith("nanui") || extensionName.StartsWith("winformium") || extensionName.StartsWith("formium"))
                    {
                        throw new ArgumentException($"The name {extension.Name} is not allowed.");
                    }

                    if (runtime.Container.IsRegistered <JavaScriptExtensionBase>(extensionName))
                    {
                        throw new ArgumentException($"Extension {extension.Name} already exists.");
                    }

                    runtime.Container.RegisterInstance(extension, extension.Name);
                });
            }, ExtensionExecutePosition.SubProcessStartup);
            return(@this);
        }
Exemple #4
0
        public static ApplicationConfigurationBuilder UseCustomResourceHandler(this ApplicationConfigurationBuilder @this, Func <ResourceSchemeConfiguration> getConfig)
        {
            @this.Use(builder =>
            {
                return((runtime, props) => {
                    var config = getConfig.Invoke();
                    runtime.RegisterCustomResourceHandler(config);
                });
            }, ExtensionExecutePosition.Initialized);

            return(@this);
        }
Exemple #5
0
        public static ApplicationConfigurationBuilder ClearCacheFile(this ApplicationConfigurationBuilder @this)
        {
            //const string CACHE_DIR = "Cache";

            @this.Use(builder =>
            {
                builder.Properties[nameof(ClearCacheFile)] = true;



                return((runtime, props) => {
                    var cachePath = WinFormium.DefaultAppDataDirectory;

                    if (props.ContainsKey(nameof(UseApplicationDataDirectory)))
                    {
                        cachePath = (string)props[nameof(UseApplicationDataDirectory)];
                    }

                    cachePath = Path.Combine(cachePath);

                    if (Directory.Exists(cachePath))
                    {
                        try
                        {
                            Directory.Delete(cachePath, true);
                        }
                        catch (Exception ex)
                        {
                            Console.WriteLine(ex);
                        }
                    }



                    WinFormium.GetLogger().Info("Cache has been cleared.");
                });
            }, ExtensionExecutePosition.MainProcessStartup);

            return(@this);
        }