Electron 一条命令打包成Windows平台安装包解决方案
发布于 4 年前 作者 Qquanwei 28825 次浏览 来自 分享

你是否还在用:

  • electron-winstaller
  • electron-packager

每次打包都是各种命令来一遍 或者你想使用inno-setup而不得不在’linux/osx’上编译出exe再切换到虚拟机上用inno-setup重新打包一遍 或者你在用electron自带的electron.autoUpdater 而不得不忍受着它非常繁琐的发包方式

为了解决以上问题,为了能够仅仅一个命令就能直接将你的源码 生成 一个inno-setup 方式的安装包

** electron-windows-inno-installer ** 诞生了 地址: (https://github.com/Qquanwei/electron-windows-inno-installer)

有了它,你在生成installer.exe的时候仅仅需要执行一条命令 electron-windows-inno-installer mysetup.iss --icon ./favicon.ico --platform win32-x64

它将自动将你的electron代码生成一个指定平台可执行文件 然后执行inno-setup将可执行文件上下文打包出一个安装文件。

electron-windows-inno-installer 将极大方便用户的 打包,更新,发包 而且无需考虑中间环节,其使用的electron版本目前也在保持与electron最新版尽量同步更新。

(为了能够让它更好用,欢迎push : https://github.com/Qquanwei/electron-windows-inno-installer )

12 回复

我用你提供的这个模块打包我的 electron 应用的时候 报如下错误,能否帮忙看下什么原因,多谢啦。 没加调试代码前错误是除红框外的信息输出。 QQ截图20160825172029.png 能帮忙看下 是哪一步出错了吗? 原因是啥?

好像是找不到 gulp 导致的。

但是你说本地执行gulp正常 很奇怪,gulp有在搜索路径里吗?

我不懂啊

@Qquanwei 是啊,我本地 gulp 运行没问题的,全局安装的,我们开发项目也要用的。

@Shaman05 提示信息显示的是 spawn 找不到 gulp

可以按照下面两种方式试下:

1

electron-windows-inno-installer/cli.js 文件中spawn那句话, 修改两处,改成如下(没有大括号):

spawn( {绝对路径的node.exe}, [ {绝对路径的gulp.js文件} , 
	`--gulpfile=${gulpfile}`,`--cwd=${process.cwd()}`,'inno'], { stdio: 'inherit' });

2

当然你也可以强制执行下面命令打包项目:

gulp --gulpfile=C:\\Users\\admin\\AppData\\Roaming\\npm\\node_modules\\electron-windows-inno-installer\\electron-inno-auto-update\\gulpfile.js --cwd=E:\\Pikachu\\resources\\app inno

缺点是不能在改命令中追加配置信息,可以参照cli.js中的环境变量增加你的配置

process.env.INNOFILE=options.issfile;
process.env.PLATFORMS=options.platform;
process.env.ICON=options.icon;

设置环境变量 INNOFILE 为你的inno路径,PLATFORMS 为平台列表,以逗号隔开,例如其值为 "win32-ia32,win32-x64" ICON为打包生成的exe图标路径

请问支持中文路径或文件名吗?

关于 autoUpdater。github上的例子是要引入 node-modules:const autoupdater = require(‘electron-windows-inno-installer’); 是不是打包是也要把 “node-modules/” 的所有模块打进去?

@josuabriter 打包的时候会根据package.json的dependences中指定的包打包进去

回到顶部