前端 nodejs 命令行自动调用编译 inno setup 的.iss文件

简介: 前端 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()); 
});
相关文章
|
10月前
|
JavaScript API
深入探索fs.WriteStream:Node.js文件写入流的全面解析
深入探索fs.WriteStream:Node.js文件写入流的全面解析
|
5月前
|
Dart 前端开发
【05】flutter完成注册页面完善样式bug-增加自定义可复用组件widgets-严格规划文件和目录结构-规范入口文件-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
【05】flutter完成注册页面完善样式bug-增加自定义可复用组件widgets-严格规划文件和目录结构-规范入口文件-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
180 75
【05】flutter完成注册页面完善样式bug-增加自定义可复用组件widgets-严格规划文件和目录结构-规范入口文件-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
|
9月前
|
前端开发 JavaScript Java
前端限制打包文件数量
前端限制打包文件数量
221 65
|
3月前
|
资源调度 JavaScript 前端开发
前端开发必备!Node.js 18.x LTS保姆级安装教程(附国内镜像源配置)
本文详细介绍了Node.js的安装与配置流程,涵盖环境准备、版本选择(推荐LTS版v18.x)、安装步骤(路径设置、组件选择)、环境验证(命令测试、镜像加速)及常见问题解决方法。同时推荐开发工具链,如VS Code、Yarn等,并提供常用全局包安装指南,帮助开发者快速搭建高效稳定的JavaScript开发环境。内容基于官方正版软件,确保合规性与安全性。
1855 23
|
3月前
|
前端开发 Cloud Native Java
Java||Springboot读取本地目录的文件和文件结构,读取服务器文档目录数据供前端渲染的API实现
博客不应该只有代码和解决方案,重点应该在于给出解决方案的同时分享思维模式,只有思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
Java||Springboot读取本地目录的文件和文件结构,读取服务器文档目录数据供前端渲染的API实现
|
9月前
|
前端开发
前端引入字体文件
文章介绍了如何在前端项目中引入字体文件,并展示了具体的HTML和CSS代码示例,包括如何使用`@font-face`规则来定义字体和在页面中应用自定义字体。
304 1
前端引入字体文件
|
8月前
|
JavaScript 前端开发 程序员
前端学习笔记——node.js
前端学习笔记——node.js
135 0
|
9月前
|
前端开发 JavaScript API
前端JS读取文件内容并展示到页面上
前端JavaScript使用FileReader API读取文件内容,支持文本类型文件。在文件读取成功后,可以通过onload事件处理函数获取文件内容,然后展示到页面上。
277 2
前端JS读取文件内容并展示到页面上
|
9月前
|
前端开发
前端diff文件对比使用worker进行优化
如何使用Web Worker在React项目中优化文件对比差异功能的实现。
93 5
|
8月前
|
JavaScript 前端开发 应用服务中间件
vue前端开发中,通过vue.config.js配置和nginx配置,实现多个入口文件的实现方法
vue前端开发中,通过vue.config.js配置和nginx配置,实现多个入口文件的实现方法
458 0
下一篇
oss创建bucket