前端 nodejs 命令行自动调用编译 inno setup 的.iss文件
项目中需要把前端代码用 electronjs 打包成 windows 安装包
使用的是开源的 inno setup 制作安装包 官网
虽然 ElectronJS 也有 electron-builder 制作安装包的插件,为什么要使用这软件来制作安装包?
1、因为可以更好的自定义安装过程
2、electron-builder 安装包插件 在大文件如包文件超过2G的情况下会打包失败
安装完软件,按完安装包制作过程一步步完成后,会生成一个 .iss 后缀的编译文件,下一次打包,直接运行这个文件即可重新打包。
但每次打包都要手动双击这个.iss文件,显然不快乐。
现在前端都自动化了,所以编译这一步,也要用代码来完成。等前端代码打包完成后,自动运行 .iss 来生成安装包
打包过程很简单,只有两步在 nodejs 中 用 child_process 去调用
1、yarn electron:build
2、iscc "setup.iss"
iscc 命令是 inno setup 的
官方文档:
https://jrsoftware.org/ishelp/
documentation -> main help file -> other infomation -> Command Line Compiler Execution 一节有说明
如果直接在 powershell 或其它命令行中运行可能会失败,需要在在环境变量里添加一下
桌面 -> 右键我的电脑 -> 属性 -> 高级系统设置 -> 高级选项卡 -> 环境变量 -> 选中 Path 编辑 -> 浏览定位到 Inno Setup 安装目录 (如: C:\Program Files (x86)\Inno Setup 6)
我用的是 win10 其它系统可能略有差别,但要的就是把 iscc 命令添加到环境变量内,使得 命令行工具内能识别到 iscc 命令
nodejs 使用 child_process 来处理命令行调用
const { exec } = require('child_process');
如:
exec('yarn electron:build', (error, stdout, stderr) => {
if (error) {
console.error(`exec error: ${error}`);
return;
}
});
接着使用
const { exec } = require('child_process');
const cpExec = exec(`iscc "setup.iss"`, (error, stdout, stderr) => {
if (error) {
console.error(`exec error: ${error}`);
return;
}
});
注意:iscc "setup.iss" 就是.iss文件路径,一定要包含在引号内不要忘记引号
如果想在命令执行的时候打印出 .iss 文件编译的输出信息,则需要exec实例中使用 stdout.on 侦听 console.log 出 data
const { exec } = require('child_process');
const cpExec = exec(`iscc "setup.iss"`, (error, stdout, stderr) => {
if (error) {
console.error(`exec error: ${error}`);
return;
}
});
// 过程中打印输出信息
cpExec.stdout.on('data', function(data) {
console.log(data.toString());
});
转载入注明博客园池中物 willian12345@126.com sheldon.wang
github: https://github.com/willian12345
前端 nodejs 命令行自动调用编译 inno setup 的.iss文件的更多相关文章
- 直接用bat命令对Inno Setup的脚本文件.iss进行编译
直接用bat命令对Inno Setup的脚本文件.iss进行编译 2010-06-17 15:17 qjn0059 | 浏览 2163 次 编程语言外语学习 分享到: 2010-06-29 11: ...
- Mybatis上路_05-使用命令行自动生成
http://my.oschina.net/vigiles/blog/125127 目录[-] 1.数据准备: 1)建库: 2)建表: 3)预设数据: 2.编写Generator执行配置文件: 3.搭 ...
- Mybatis上路_05-使用命令行自动生成【转】
http://my.oschina.net/vigiles/blog/125127 Mybatis上路_05-使用命令行自动生成 1人收藏此文章, 我要收藏 发表于1个月前(2013-04-24 ...
- nodejs命令行执行时带参数
nodejs命令行执行时带参数 转 https://www.jianshu.com/p/474e6d76f867 今天项目里突然想在初始化时跑一些数据,于是想起以前在python时可以在命令行里带 ...
- php命令行模式下加载的php.ini文件可能和web模式下加载的php.ini不一致
php命令行模式下加载的php.ini文件可能和web模式下加载的php.ini不一致 命令行下查看加载的php.ini的路径: php -i|grep php.ini web模式下查看: <? ...
- InnoSetup 以命令行自动编译打包
本章介绍,在新建Innosetup的编译脚本iss文件后,在不运行Innosetup软件的基础上,以bat自动编译运行打包. 一.添加Innosetup软件包 下载InnoSetup软件包并解压到bu ...
- 前端技术之:如何创建一个NodeJs命令行交互项目
方法一:通过原生的NodeJs API,方法如下: #!/usr/bin/env node # test.js var argv = process.argv; console.log(argv) ...
- macos下命令行通过ndk编译android下可以执行的ELF程序(并验证opencl的调用)
源码如下,实现把一个JPG保存成灰度图格式的BMP 1 //jpg2bmp.cpp 2 #include <stdio.h> 3 #include <inttypes.h> 4 ...
- 在GNU/Linux下使用命令行自动挂载与卸载USB磁盘
在命令行环境下如果每次都是靠手动敲入mount与umount命令来挂载与卸载USB磁盘是件很麻烦的事情.尤其是mount命令的参数非常多.比如,磁盘的分区类型(vfat.ntfs等),挂载的目录节点, ...
- 命令行方式调用winrar对文件夹进行zip压缩示例代码
调用winRAR进行压缩 using System; using System.Collections.Generic; using System.Linq; using System.Text; u ...
随机推荐
- gitee 命令合集(从远程仓库拉取项目到推送项目到远程仓库)
1.配置用户的信息 git config --global user.name '你的用户名' git config --global user.email '你的邮箱' 2.初始化 Git 仓库,生 ...
- 树莓派4B改造成云桌面客户端,连接DoraCloud免费版
Raspberry Pi(树莓派) 是为学习计算机编程教育而设计的只有信用卡大小的微型电脑,自问世以来受众多计算机发烧友和创客的追捧,曾经一"派"难求. DoraCloud是一款多 ...
- 编译型,解释型,java
编译型:将全部程序翻译为计算机能理解执行的代码 解释型:边运行程序边翻译,解释一点运行一点 java先编译再解释,将java文件编译为class文件,class文件再通过解释器翻译给操作系统运行
- 【OpenVINO™】在 MacOS 上使用 OpenVINO™ C# API 部署 Yolov5
在 MacOS 上使用 OpenVINO C# API 部署 Yolov5 项目介绍 YOLOv5 是革命性的 "单阶段"对象检测模型的第五次迭代,旨在实时提供高速.高精度的结果, ...
- SpringBoot-MyBatis - Java枚举类型 <---> MySQL Int,建立 类型处理器(typeHandlers)
场景: MySQL里的某一个字段,比如:status状态,一共有5个状态,我们会在MySQL里 建立 status(int)字段,1.2.3.4.5 来标记5种状态:利用MyBatis在自动代码生成器 ...
- go中的 位预算,反码、补码、原码
https://baike.baidu.com/item/%E4%BD%8D%E8%BF%90%E7%AE%97/6888804 首先关于"位运算",看下百度百科就行了. 总结:在 ...
- 听说有 Hugging Face 陪伴的春节,是这样的…
辞旧迎新春节到,家家户户好热闹.Hugging Face 中国团队成员祝各位社区成员们新春快乐,万事如意! 过去的一年我们持续看到 AI 技术的腾飞和发展,以及诸多机构为开源 AI 作出巨大的贡献.非 ...
- JS 这一次彻底理解冒泡排序
壹 ❀ 引 在面试环节中,算法总是逃不掉的一关,对于我这种非班科出生且大学不接触数学的人来说,逻辑思维方面确实较为欠缺,昨晚跟百度的同学聊到凌晨,自我感觉差距较大,受了不小打击,所以决心抓一抓算法,做 ...
- Uniapp+Nodejs实现外卖App项目1-项目介绍
项目介绍 本项目采用uniapp和nodejs(数据接口).mongodb等技术实现了一个类似美团外卖的简易APP.项目主要目的是为了快速上手,如何快速使用uniapp开发一个app项目,同时掌握一些 ...
- Vue+SpringBoot+ElementUI实战学生管理系统-8.班级管理模块
1.章节介绍 前一篇介绍了专业管理模块,这一篇编写班级管理模块,需要的朋友可以拿去自己定制.:) 2.获取源码 源码是捐赠方式获取,详细请QQ联系我 :)! 3.实现效果 班级列表 修改班级 4.模块 ...