在之前的博客:3、electron打包生成exe文件

我们已经得到了electron打包好的应用了,目录如下,但是我们如何整合成一个安装程序,发给客户使用呢?

我们可以使用grunt-electron-installer来生成

一. 准备

安装grunt-electron-installer。

1. 我们进入到HelloWorld-win32-x64的父级目录下。

2. 新建一个package.json,内容如下:

{
"name": "HelloWorld",
"version": "1.0.0"
}

3. 在上面的路径下打开DOC窗口,打开命令行,输入npm install grunt-electron-installer --save-dev安装grunt-electron-installer模块

npm install grunt-electron-installer --save-dev

4.接着输入npm install grunt --save-dev安装grunt

npm install grunt --save-dev

执行完之后,我们的目录结构如下:

在上面的目录下新建Gruntfile.js文件,内容如下:

关于Gruntfile.js一些配置信息如下:

注:如要设置图标iconUrl,图标必须是网络连接,不能是路径

应用图标iconUrl和安装程序的图标setupIcon都必须是ico格式的文件,不能为其他。我们可以在下面链接进行图片的格式转换

http://www.bitbug.net/

二. 配置生成桌面快捷方式

配置app添加监听并生成快捷方式

找到我们应用程序index.js添加如下代码:

//grunt 生成快捷方式
var path = require('path');
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;
}

添加之后在下面目录打开DOS执行npm run-script package得到out目录:

三. 打包

准备工作都完成之后,HelloWorld-win32-x64的父级目录如下,我们在执行grunt就可以了(执行中,最好退出360等软件,可能会造成干扰)。

报错:

如果有的同学运行grunt报错:

你需要先将Grunt命令行(CLI)安装到全局环境中。

npm install -g grunt-cli 

上述命令执行完后,grunt 命令就被加入到你的系统路径中了,以后就可以在任何目录下执行此命令了。

在目录下,会生成一个installer的文件夹,如下:

setup.exe就是安装程序了。

会有一个默认的安装等待动画:

安装成功之后,桌面生成了我们的快捷方式

Grunt打包Electron,生成exe的安装包的更多相关文章

  1. 使用InstallAnywhere7.1制作Java exe程序安装包

    [转[使用InstallAnywhere7.1制作Java exe程序安装包 使用InstallAnywhere7.1制作Java exe程序安装包 对于已经完成的Java应用程序开发项目,从商业化角 ...

  2. exe4j打包--exe转安装包

    前面一篇已经详细的说明了打包成exe的步骤了,下面谈谈exe如何压缩成安装文件.这里用到之前的另外一个软件,具体软件看这篇文章 exe4j打包成exe 打开inno 编辑器 打开软件后我们选择 用[脚 ...

  3. 制作Linux下程序安装包——使用脚本打包bin、run等安装包

    制作简单的安装包的时候可以简单的用cat命令连接两个文件,然后头部是脚本文件,执行的时候把下面的文件分解出来就行了.一般这个后部分的文件是个压缩 包,那样,就能够打包很多文件了,在脚本中解压出来即可. ...

  4. Oracle oledb 打包并集成到程序安装包(VC ADO訪问Oracle)

    近期有一个项目和oracle交互,我用的是ADO的方式进行试问操作. 首先把数据库连接的东东记录一下,老了记性不好啊! 操作例如以下: //连接串这么写的话就能够不用配置 tnsnames.ora配置 ...

  5. 原!!jar包 --可执行exe文件--安装包

    这几天由于部门统计名单,都是一边报,一边统计,感觉麻烦,写了个小工具,做成安装包.其他不多说,网上都有,我就自己按照网上操作,碰到了一些问题,对这些问题说下. ----------废话少说------ ...

  6. WPF 将DLL嵌入EXE文件(安装包)

    网上很多例子,各种套路,就是没有测试过. WPF 将DLL嵌入EXE文件的套路是这样的 1.将要引用的dll源文件添加到wpf 项目中,dll 的属性->生成操作为[嵌入的资源]. 2.监听  ...

  7. java源程序---可执行文件(.exe)----安装包

    众所周知,java源程序都可以导出为(executable jar file)可执行的.jar文件,但是该.jar文件需要在jre环境下才能执行. 那么如何能在没有装jre的电脑上运行呢?(那就要顺带 ...

  8. 在 Android studio 中 配置Gradle 进行 “动态编译期间,指定 远程服务器地址 ,生成多个安装包”

    需求: 在产品开发中,经常需要发布各个版本,每个版本的服务器地址有不同的服务器地址.比如 开发服务器使用 192.168.1.232服务器, 测试服务器使用 192.168.1.245服务器, 正式上 ...

  9. 把 python 程序打包成 egg 或者 whl 安装包

    原文出处:http://www.worldhello.net/2010/12/08/2178.html 本文略有改动 1.1 安装setuptools 首先要安装setuptools工具.Debian ...

随机推荐

  1. deep_learning_LSTM长短期记忆神经网络处理Mnist数据集

    1.RNN(Recurrent Neural Network)循环神经网络模型 详见RNN循环神经网络:https://www.cnblogs.com/pinard/p/6509630.html 2. ...

  2. IO模型(epoll)--详解-01

    写在前面 从事服务端开发,少不了要接触网络编程.epoll作为linux下高性能网络服务器的必备技术至关重要,nginx.redis.skynet和大部分游戏服务器都使用到这一多路复用技术. 本文会从 ...

  3. fiddler获取响应时间以及服务器IP

    抓包工具fiddler实现http协议请求应答抓包.在接口测试.性能测试.安全测试等软件测试活动过程中,可能会遇到需要获取接口响应时间.接口服务器IP这样的情况.默认情况下fiddler不支持接口响应 ...

  4. SVN 安装教程

    安装包:http://pan.baidu.com/s/1kTTcbJp 安装步骤看这个博主的就好了: http://www.cnblogs.com/xing901022/p/4399382.html ...

  5. keras训练大量数据的办法

    最近在做一个鉴黄的项目,数据量比较大,有几百个G,一次性加入内存再去训练模青型是不现实的. 查阅资料发现keras中可以用两种方法解决,一是将数据转为tfrecord,但转换后数据大小会方法不好:另外 ...

  6. java8学习之groupingBy源码分析

    继续接着上一次[http://www.cnblogs.com/webor2006/p/8366083.html]来分析Collectors中的各种收集器的实现, 对里它里面有个groupingby() ...

  7. file命令和readlink命令

    6. 如何软链接设备文件 设备文件比较特殊,如果要创建设备文件的链接,需要用到mknod命令: 1 2 3 4 5 [root@centos7 etc]# ll /dev/sda brw-rw---- ...

  8. mysql 在gtid环境下缺少一部分binlog部署从库

    我的环境: 有两台linux服务器 一台是192.168.1.1  mysql  端口3301 一台是192.168.1.2   mysql 端口3303 要讨论如何恢复从库,我们得先来了解如下一些概 ...

  9. Spring使用@AspectJ开发AOP(零配置文件)

    前言: AOP并不是Spring框架特有的.Spring只是支持AOP编程 (面向切面编程) 的框架之一. 概念: 1.切面(Aspect) 一系列Advice + Pointcut 的集合. 2.通 ...

  10. electron桌面通知,修改默认通知应用名electron.app.Electron为自己应用的名称

    在做electron桌面通知时,按照文档实现弹出通知,但是默认的应用名为electron.app.Electron 解决办法 就是在主进程中设置 app.setAppUserModelId('myAp ...