线上Electron应用具备哪些特征?( 二 )

应用程序缓存目录用户第一次启动 Electron 应用后 , Electron 会在如下目录创建相应的缓存文件 , 该目录的文件结构及功能说明如下:
C:\Users\[yourOsUserName]\AppData\Roaming\[yourAppName]├─ IndexedDB(Electron应用渲染进程IndexedDB数据存放目录)├─ Local Storage(Electron应用渲染进程Local Storage数据存放目录)├─ Session Storage(Electron应用渲染进程Session Storage数据存放目录)├─ Crashpad(Electron应用崩溃日志数据存放目录)├─ Code Cache(Electron应用渲染进程源码文件缓存目录 , wasm的缓存也会存在此处)├─ Partitions(如果你的应用中适应了自定义协议 , 或根据字符串产生了session , 此目录将有相应的内容)├─ GPUCache(Electron应用渲染进程GPU运行过程产生的缓存数据)└─ ......(其他Electron渲染进程缓存文件)Mac 操作系统下的缓存目录为:
MacintoshHD/用户/[yourOsUserName]/资源库/ApplicationSupport/[yourAppName]该目录下的内容与子目录结构与 Windows 操作系统类似 , 不再赘述 。
需要注意的是 , 虽然以上目录内的文件都是加密存储的 , 但你只要把这个目录下的文件拷贝到另一台机器上 , 就可以用一个伪造的 Electron 程序读取到这些缓存文件内的数据 。
另外 , 我们前面章节介绍的客户端数据库文件也是存放在这个目录下的 。
Electron 为我们提供了一个便捷的 API 来获取此路径 , 此方法执行时会判断当前应用正运行在什么操作系统上 , 然后根据操作系统的名称返回具体的路径地址 。
app.getPath("userData");注册表键值如果开发者使用 Electron 提供的开机自启动 API , 为应用程序设置了开机自启动功能 , 那么在 Windows 操作系统下 , 用户注册表如下路径下会增加一个键值对:
计算机\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run键:electron.app.[yourAppName]值:C:\Program Files (x86)\[yourAppName]\[yourAppName].exe设置开机自启动的代码如下所示:
import { app } from "electron";app.setLoginItemSettings({openAtLogin: true,});另外 99% 的 Electron 应用是通过安装包分发给最终用户的 , 有安装包势必就有卸载程序 , 操作系统一般会在注册表如下三个路径下记录系统的卸载程序路径:
计算机\HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall计算机\HKEY_LOCAL_MACHINE\Software\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall计算机\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Uninstall如果开发者使用 app 对象的 setAsDefaultProtocolClient 方法 , 把自己的应用设置成可以通过外部连接唤起的应用 , 那么这个操作也会在用户的注册表内留下痕迹 , 如下为 GitHubDesktop 在我的注册表中写入的内容:
键:计算机\HKEY_CURRENT_USER\Software\Classes\github-windows\shell\open\command值:"C:\Users\liuxiaolun\AppData\Local\GitHubDesktop\app-2.9.0\GitHubDesktop.exe" --protocol-launcher "%1"如你所见 , 当用户点击连接唤起我们的应用时 , 这个注册表键值不但给我的应用传递了--protocol-launcher 参数 , 还中转了连接中的参数给我的应用 。
Mac 没有注册表 , 相关的信息都是通过 Info.plist 文件和应用程序共同完成的 。
升级程序缓存目录前文我们介绍了全量升级 Electron 应用的方案 , 当 electron-updater 检测到升级服务器上存在新版本的应用程序时 , 会下载新版本相关的文件 , 并保存在如下目录中:

经验总结扩展阅读