环境说明

electron+vue+elementui+electron-builder 在win下打包正常,在linux下打包错误,错误信息如下:

• building        target=AppImage arch=x64 file=dist_electron/BB-API-1.0.0.AppImage
  ⨯ unknown output format set
github.com/develar/app-builder/pkg/icons.convertSingleFile
        /Volumes/data/Documents/app-builder/pkg/icons/icon-converter.go:305
github.com/develar/app-builder/pkg/icons.doConvertIcon
        /Volumes/data/Documents/app-builder/pkg/icons/icon-converter.go:247
github.com/develar/app-builder/pkg/icons.ConvertIcon
        /Volumes/data/Documents/app-builder/pkg/icons/icon-converter.go:56
github.com/develar/app-builder/pkg/icons.ConfigureCommand.func1
        /Volumes/data/Documents/app-builder/pkg/icons/icon-converter.go:33
github.com/alecthomas/kingpin.(*actionMixin).applyActions 

以上问题困恼许久,最终解决方案如下,如有高手有更优解决方法请留下您的宝贵建议,谢谢!

问题解决过程

第一坑 发现问题真相

一开始错误提示,直接看到如下错误

⨯ unknown output format set

下意识的认为是打包格式设置错误,查找相关资料配置成如下是正确的,为什么还提示错误呢?

linux: {
    target: [
         "AppImage"
    ]
}

认真看报错的堆栈发现有icons的错误,这时反应过来不是打包格式错误,而是跟ico图标有关,既然跟ico有关,那问题就有针对性处理了。

第二坑 针对问题处理

既然是ico图标错误,下意识认为图标文件路径配置错误,查找相关资料肯定配置没错,可是为什么还是报错。配置如下

linux: {
    icon: path.resolve(__dirname, "bb.ico"),
    target: [
         "AppImage"
    ]
}

思考许久,突然想起来,在win下打包时,在制作ico时有系统平台格式,也就是ico是给win下使用的,linux就不行或者在mac下不行。我用的时icofx 3工具制作的。 到此问题更清晰了,原来是ico格式错误才打印⨯ unknown output format set,程序真不会骗人,这错误提示真的简单明了。

第三坑 再次被ico图标搞得人崩溃

既然ico格式错误,我把图标换成png格式,天哪,终于打包成功了。

 INFO  Building app with electron-builder:
  • electron-builder  version=22.9.1 os=5.4.70-amd64-desktop
  • description is missed in the package.json  appPackageFile=/home/loon/build/code/client-bb-api/dist_electron/bundled/package.json
  • writing effective config  file=dist_electron/builder-effective-config.yaml
  • packaging       platform=linux arch=x64 electron=9.3.5 appOutDir=dist_electron/linux-unpacked
  • building        target=AppImage arch=x64 file=dist_electron/BB-API-1.0.0.AppImage
 DONE  Build complete!

启动程序看下./BB-API-1.0.0.AppImage,程序正常启动,可是让人崩溃的问题是图标没有生效,显示的是默认的图标,千万只草泥马在挥舞奔腾...。

第四坑 浪子回头

我算是怕你了electron-builder,既然配置ico不行,我直接代码指定总可以吧,代码如下:

win = new BrowserWindow({
    width: 1000,
    height: 670,
    icon: path.join(__dirname, '/bb.png'), //这里指定图标
    webPreferences: {
      ...
    }
  })

再次启动程序,成功。此问题告一段! 接下来更精彩,请勿走开(以下是私事,不喜欢别往下看了)

好用的HTTP模拟请求工具

市面上有很多HTTP模拟请求工具,有yapi,有ApiPost,好不好用在此不做评价。这里推荐使用BB-API,功能全面,免费使用、资源无限制,自动生成接口文档,界面简洁大气。支持局域网部署,打造属于你、公司的HTTP 协议管理工具。 官网地址http://api.app-yun.com/bbapi/index.html

开源项目-web的远程控制

基于web的远程控制系统,没错,能够在web上发起远程控制,支持VNC,RDP协议,支持远程录像审计,支持企业级权限控制。关键还是免费开源、资源无限制、无广告 官网地址http://bb.app-yun.com/