参考:
https://segmentfault.com/a/1190000007206301
http://www.shennongmin.org/?p=584
1.在应用目录打开命令行,需要进入根目录
常规打包需要用到electron-packager模块,所以先在命令行中输入npm install --save-dev electron-packager安装。
2.package.json里添加一条打包命令,免得每次打包都要输入一长串命令。
与webpack的命令类似
"scripts": {
"package": "electron-packager ./ yunfu --win --out ./outApp --arch=x64 --version 1.0.0 --overwrite --ignore=node_modules"
}
参数说明
electron-packager <location of project> <name of project> <platform> <architecture> <electron version> <optional options>
location of project:应用目录;
name of project:应用名称;
platform:要打包的平台;
architecture:x86 or x64架构;
electron version:electron 版本(不是应用版本);
optional options:其它选项;
3.执行npm run-script package开始打包。此时打包成功是类似免安装的版本。
打包完毕后,会多出来一个目录,比如我的是taobao,打开之后,会有一个taobao-win32-x64目录,里面就是打包生成的各种文件。
========================================================================================================
注意:之后操作的路径:
在之前打包之后,新建的文件夹根目录下面
我的,就是在当前目录的 outApp文件夹下面,这是我常规打包的输出目录
输出exe安装文件,需要在之前,常规的打包方式下面进行....
4.打包成安装版,在上面的步骤之后继续下去,在生成的outApp文件夹下,有taobao-win32-x64文件夹,在此文件夹的同层进行处理。
5.新建package.json文件,package.json的内容可以简单写下:
{
"name": "taobao",
"version": "1.0.0"
}
6.打开命令行,(之前,在这一步出的问题--没有装grunt-cli)
输入npm install grunt-electron-installer --save-dev安装grunt-electron-installer模块,
再安装grunt -cli,npm install -g grunt-cli,
接着输入npm install grunt --save-dev安装grunt。
7.配置Gruntfile.js。新建一个Gruntfile.js文件,并配置gurnt.config,我的配置如下:
var grunt = require("grunt");
grunt.config.init({
pkg: grunt.file.readJSON('package.json'),
'create-windows-installer': {
x64: {
appDirectory: 'taobao-win32-x64',
authors: 'zf.',
exe: 'taobao.exe',
description:"taobao",
}
}
})
grunt.loadNpmTasks('grunt-electron-installer');
grunt.registerTask('default', ['create-windows-installer']);
8.grunt打包,输入grunt。(不是npm grunt)
9.在main.js里加入生成快捷方式的功能。
//添加监听并生成快捷方式
var handleStartupEvent = function () {
if (process.platform !== 'win32') {
return false;
}
var squirrelCommand = process.argv[1];
switch (squirrelCommand) {
case '--squirrel-install':
case '--squirrel-updated':
install();
return true;
case '--squirrel-uninstall':
uninstall();
app.quit();
return true;
case '--squirrel-obsolete':
app.quit();
return true;
}
// 安装
function install() {
var cp = require('child_process');
var updateDotExe = path.resolve(path.dirname(process.execPath), '..', 'update.exe');
var target = path.basename(process.execPath);
var child = cp.spawn(updateDotExe, ["--createShortcut", target], { detached: true });
child.on('close', function(code) {
app.quit();
});
}
// 卸载
function uninstall() {
var cp = require('child_process');
var updateDotExe = path.resolve(path.dirname(process.execPath), '..', 'update.exe');
var target = path.basename(process.execPath);
var child = cp.spawn(updateDotExe, ["--removeShortcut", target], { detached: true });
child.on('close', function(code) {
app.quit();
});
}
};
if (handleStartupEvent()) {
return;
}
10.版本更新的时候:
重新打包 进入项目的根目录:
npm run-script package开始打包
重新创建安装文件:
进入outAppk路径下面:
grunt
貌似会报错,但是效果也是可以实现的.... 不知道为毛