从 Windows 到 deepin:Electron 软件无损移植实战

为了降本增效,许多企业采用 Electron 框架开发软件。

Electron 框架跨平台,理论上讲,开发一次就能适配 Windows、MacOS 和 Linux 三个平台。但现实中,很多软件仅适配了 Windows 和 MacOS。对于日常使用 deepin 等 Linux 的用户而言,需要花时间配置 Wine 来运行。

有没有什么方法让 Electron 软件原生运行?

有!提取 Windows 版本的资源包搬到 Linux上运行!

deepin资深用户 @米饭虚拟机 以《PDF切题工具v2.4》为例,展示了在 deepin 25 上迁移 Electron 软件到 Linux 的思路。

一、迁移全攻略

1. 分析 Electron 结构

  • Electron 软件目录如下:
  • 进入 resources 文件夹,里面放着 app 文件夹或 .asar 文件:

app文件夹(示例)

asar文件(最常见)

Electron 软件(果) = app 文件夹 或 .asar 文件(核) + Electron 框架(壳)

2. 判断 Electron 版本

Electron 版本多,破坏性更改也多,选择合适的版本非常重要。

我们可以用 ImHex 查 Electron 版本。

  • deepin 应用商店搜索下载 ImHex:
  • 将 .exe 文件拖进 ImHex,Ctrl+f 调用搜索,找到关键词"Electron v",即可知道版本。

所用版本是 v28.3.3

3. 下载对应版本的 Electron 框架

  • 转至Github Electron 项目,并点击"Releases" :

项目地址:https://github.com/electron/electron

  • 搜索目标版本并下载:
  • 解压到桌面(注意要创建文件夹防止桌面变乱):

解压目录:/home/用户名/Desktop/xyz-amd64

4. 移动 app 文件夹或 .asar 文件

将 app 文件夹或 .asar 文件移动至步骤3 解压目录的 resources 文件夹中。

  • 如果是 app 文件夹,先压缩再移动:

app 文件夹小文件多,直接移动要花大量时间。压缩移动再解压反而省时。

  • 如果是 .asar 文件,直接移动即可:
  • 移动完成,删除 default_app.asar 文件(防止冲突):

5. 启动软件

  • 返回上一级,启动 electron 二进制文件:

稍等一会,软件界面出现在眼前:

顺利运行!

体验时,软件功能完整,流畅度跟 Windows 版别无二致。

6. 打包、安装 deb包

  • 按照 deepin 标准,将移植的软件打包成 deb 包:

deepin 标准的 deb 包结构

封包中......

  • 安装打好的 deb 包:

安装中,稍安勿躁......

  • 成功启动!

移植成功!

二、常见问题

1. 软件运行不起来怎么办?

软件无法启动,说明软件源码有问题。

右键终端执行命令看看报错。知道报错原因,用 asar 工具拆包。需要安装 Node.js 和 asar模块才能拆包。(安装方法可自行问ai)

右键终端,在 resources 目录执行 asar 拆包命令:

asar e app.asar ./app

这样就能改源码,针对性修 bug 了。

修好后仍用 asar 命令封包:

asar p ./app app.asar

终端重新执行启动命令,发现软件可以正常启动。

2. 怎么向 ARM 和 龙芯移植?

把资源文件放进 arm64版和龙芯版的 Electron 框架就行。

  • Release 的 Assets 中有 arm64版:
  • 龙芯版则要到龙芯开源社区下载:

地址:https://ftp.loongnix.cn/electron/LoongArch/

3. 如何获取软件图标?

可用"採图标"软件获取 exe 软件图标。

  • 到 deepin 应用商店搜索并下载"採图标":
  • 将 .exe文件拖进软件中,然后等待:

.exe 文件较大,软件读取图标需要一些时间。

  • 点"批量导出",选"确定"并放置在桌面上:
  • 打开目录,图标文件就出现了:

以上就是在 deepin 操作系统上进行 Electron 软件迁移的完整思路。

值得注意的是,该方法并不仅限于 deepin ------ 它利用 Electron 跨平台运行的本质,将 Windows 版本的资源包提取出来,搭配对应架构和版本的 Electron 二进制文件即可原生运行。因此,也同样适用于主流 Linux 发行版,用户可以按照上述步骤轻松完成迁移,为 Linux 生态贡献一份力量。

相关推荐
坤昱1 小时前
cfs调度类深入解刨——最新内核细节分析1
linux·cfs·cfs调度·linux 7.1·eevdf·核心调度结构·linux最新调度分析
MC皮蛋侠客1 小时前
Perf 火焰图深度实战:CPU 性能分析与异常排查完全指南
linux·c++·性能分析·perf·火焰图
maosheng11461 小时前
NFS服务器的搭建有多种类型linux-linux
linux·运维·服务器
普通young man1 小时前
Linux基础开发工具集合
linux·运维·服务器
z200509301 小时前
【Linux学习】Linux中进程终止和进程等待
linux·学习·操作系统
码农阿强1 小时前
OpenAI Codex 全平台详细安装与配置教程(Windows/Mac/Linux)
linux·windows·macos·ai
用户2367829801681 小时前
Linux mv 命令:文件移动与重命名的底层机制
linux
都在酒里2 小时前
Linux字符设备驱动开发(一):从零搭建一个可直接运行的驱动框架(附完整代码)
linux·运维·驱动开发