配置应用

概述

WinFormium 使用 WinFormiumApp 类的静态方法 CreateBuilder 来创建应用程序的构建器 AppBuilder。在构建器中您可以设置 CEF 的环境参数、应用程序的运行模式、应用程序的用户数据文件夹、应用程序的资源文件夹等。

AppBuilder 提供了一系列的方法用于配置 WinFormium 应用程序,在您配置完这些参数后,使用 Build 方法创建一个 WinFormium 应用程序实例并使用 Run 方法来启动应用程序。

  1. var app = WinFormiumApp.CreateBuilder()
  2. // 在这里配置应用程序
  3. // ...
  4. .Build()
  5. .Run();

请参考本章节内容了解如何配置 WinFormium 应用程序。

使用启动配置

使用 WinFormium 应用构造器 AppBuilder 的 UseWinFormiumApp<T>() 泛型方法传入启动配置类,更多内容请参考《启动配置》。

启用内置浏览器

在使用 WinFormium 应用时,当用户点击应用程序中的链接时,WinFormium 应用会自动打开系统默认浏览器来打开链接。如果您希望使用 WinFormium 内置的浏览器窗口打开链接,您可以使用 AppBuilder.UseBuiltInBrowser() 方法启用内置浏览器。

  1. var app = WinFormiumApp.CreateBuilder()
  2. .UseBuiltInBrowser()
  3. //...
  4. ;

配置应用程序的语言和区域性

WinFormium 应用程序默认使用当前系统的语言和区域性,您可以使用 AppBuilder.UseCulture() 方法来配置应用程序的语言和区域性。UserCulture 方法接受一个 string 类型的参数,该参数为语言和区域性的标识符,例如 zh-CN 表示中文简体,en-US 表示英文美国。

  1. var app = WinFormiumApp.CreateBuilder()
  2. .UseCulture("en-US")
  3. //...
  4. ;

配置应用程序以单例模式运行

使用 AppBuilder.UseSingleInstance() 方法配置应用程序以单例模式运行,如果应用程序已经在运行,则可以选择激活已经运行的应用程序。UseSingleInstance 方法接受一个 Aciton<OnApplicationInstanceRunningHanlder> 参数,OnApplicationInstanceRunningHanlder 包含以下参数和方法:

  • int ProcessId { get; } 已经运行的应用程序的进程 ID。
  • IntPtr MainWindowHandle { get; } 已经运行的应用程序的主窗体句柄。
  • Process RunningProcess { get; } 已经运行的应用程序的进程对象。
  • void ActiveRunningInstance() 激活已经运行的应用程序。
  1. var app = WinFormiumApp.CreateBuilder()
  2. .UseSingleApplicationInstanceMode(handler =>
  3. {
  4. var retval = MessageBox.Show($"已经有一个实例在运行了:{handler.ProcessId}。\r\n是否打开其主窗体?", "单例模式已启用", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
  5. if (retval == DialogResult.Yes)
  6. {
  7. handler.ActiveRunningInstance();
  8. }
  9. })
  10. //...
  11. ;

配置服务

使用 AppBuilder.UseServices() 方法配置应用程序的服务,该方法接受一个 Action<IServiceCollection> 参数,该参数包含了一个 IServiceCollection 类型的参数,您可以在这里注册您的服务。使用 AppBuilder 服务将会在应用程序的每个进程中注册。

如果服务近需要在主进程中运行,则应该在 WinFormiumStartup 的 WinFormiumMain 方法中注册服务。有关 WinFormiumStartup 的详细信息,请参考《启动配置》。

启用开发工具菜单

在设计 WinFormium 应用程序时,使用 DevTools 调试工具是非常有用的。您可以在 Formium 中使用 OpenDevTools 方法打开 DevTools 调试工具。如果您希望在应用程序中启用 DevTools 菜单,您可以使用 AppBuilder.UseDevToolsMenu() 方法启用 DevTools 菜单,这样您就可以在任意位置单击鼠标右键,在上下文菜单中开启 DevTools。

  1. var app = WinFormiumApp.CreateBuilder()
  2. .UseDevToolsMenu()
  3. //...
  4. ;

清空浏览器缓存

在 CEF 的接口中,没有提供清空浏览器缓存的方法。虽然 WinFormium 提供了 AppBuilder.ClearCache() 方法来清空浏览器缓存,但这是使用了非常暴力的方式来清空缓存,该方法会删除 CEF 用户数据文件夹中的 Cache 文件夹,这样做的后果是您的应用程序中的所有缓存都会被清空,包括 Cookie、浏览器历史记录等,因此您无法指定删除某种类型的缓存。

并且,当 CEF 加载后会锁定用户数据文件夹,这样您就无法删除用户数据文件夹中的文件,因此您必须在 CEF 加载前清空缓存。

  1. var app = WinFormiumApp.CreateBuilder()
  2. .ClearCache()
  3. //...
  4. ;

另请参阅