/node-inno

exe packers for electron or nwjs base on nodejs and innosetup

Primary LanguageC++

一个基于innosetup的 nodejs自动化打包工具,通过json配置,可灵活定制安装界面和安装流程,为nwjs、electron或者其他应用进行exe的打包。

screenshot

screenshot

npm

npm

npm install node-inno

how to use

create build directory

Create the build directory in the root directory.

|-xxx
|-build
  |-inno-resource //non-essential. pictures of the installation package
  | |-bg.png
  | |-...
  |
  |-build.json

config build.json

{
	"installDetail": {
		"createShortcut": true,
		"startupOnFinish": true,
		"startupOnBootstrap": true,
		"agreeLicense": true,
		"installPath": "",
		"checkUninstallBeforeInstall":true,
		"requireUninstallBeforeInstall":false,
		"defaultInstallDir": "C:\\Program Files (x86)\\node-inno",
		"installerOutputDir": "C:/Users/cnlia/Desktop"
	},
	"app": {
		"id": "TakeColor 1.0.0",
		"name": "TakeColor",
		"version": "",
		"publisher": "maker",
		"mainPage": "",
		"comments": "myapp_installer",
		"exe": "build/app/TakeColor.exe",
		"package": "build/app/*"
	},
	"registry": [{
		"root": "HKCR",
		"subkey": "test\\DefaultIcon",
		"type": "string",
		"name": "URL Qiaoker Protocol",
		"value": "{app}\\test.exe",
		"flags": "CreateValueIfDoesntExist"
	}],
	"ui": {
		"encoding": "gbk",
		"fontName": "Microsoft YaHei",
		"clientWidth": 800,
		"clientHeight": 500,
		"checkboxSize":16,
		"uninstallMsgbox": {
			"text": "检测到已经安装xxxxx,安装前是否卸载HTML DOM confirm()",
			"color":"000000",
			"fontSize":16,
			"width":520,
			"height":430,

			"textTop":249,
			"textLeft":65,
			"textWidth":400,
			"textHeight":60,

			"btnOkTop":318,
			"btnOkLeft":275,
			"btnOkWidth":160,
			"btnOkHeight":60,

			"btnCancelTop":318,
			"btnCancelLeft":85,
			"btnCancelWidth":160,
			"btnCancelHeight":60
		},
		"checkTaskMsgbox": {
			"text": "检测到xxx正在运行,是否结束任务",
			"color":"000000",
			"fontSize":16,
			"width":520,
			"height":430,

			"textTop":249,
			"textLeft":65,
			"textWidth":400,
			"textHeight":60,

			"btnOkTop":318,
			"btnOkLeft":275,
			"btnOkWidth":160,
			"btnOkHeight":60,

			"btnCancelTop":318,
			"btnCancelLeft":85,
			"btnCancelWidth":160,
			"btnCancelHeight":60
		},
		"htmlAdBar": {
			"top": 0,
			"left": 0,
			"width": 800,
			"height": 350,
			"show": false
		},
		"simpleAdBar": {
			"images": [],
			"interval": 5000,
			"top": 0,
			"left": 0,
			"width": 800,
			"height": 350,
			"timeInterval": 3000,
			"show": true
		},
		"licenseText": {
			"text": "许可协议",
			"top": 482,
			"left": 172,
			"color": "FF8833",
			"show": true
		},
		"licenseCheckbox": {
			"text": "已经阅读",
			"top": 478,
			"left": 91,
			"checked": true,
			"show": true,
			"color": "000000"
		},
		"createShortcutCheckbox": {
			"text": "创建桌面快捷方式",
			"top": 478,
			"left": 465,
			"checked": true,
			"show": true,
			"color": "000000"
		},
		"startupOnFinishCheckbox": {
			"text": "立即运行程序",
			"top": 478,
			"left": 352,
			"checked": true,
			"show": true,
			"color": "000000"
		},
		"startupOnBootstrapCheckbox": {
			"text": "开机启动",
			"top": 478,
			"left": 253,
			"checked": true,
			"show": true,
			"color": "000000"
		},
		"installDirInput": {
			"top": 429,
			"left": 154,
			"height": 35,
			"width": 400,
			"color": "000000",
			"show": true,
			"fontSize":14,
			"enabled":false
		},
		"installDirBrowserButton": {
			"top": 429,
			"left": 553,
			"height": 35,
			"width": 80,
			"show": true
		},
		"cancleInstallMsgbox": {
			"text": "确定取消安装吗?",
			"show": true
		},
		"progressBar": {
			"top": 435,
			"left": 50,
			"width": 700,
			"height": 20,
			"show": true
		},
		"progressText": {
			"top": 390,
			"left": 0,
			"width": 800,
			"height": 30,
			"color": "E78E0E",
			"show": true
		},
		"installButton": {
			"top": 365,
			"left": 274,
			"width": 230,
			"height": 50,
			"show": true
		},
		"finishText": {
			"text": "安装完毕",
			"top": 385,
			"left": 0,
			"width": 800,
			"height": 30,
			"color": "20ad11",
			"show": true
		},
		"finishButton": {
			"top": 428,
			"left": 275,
			"width": 250,
			"height": 50,
			"show": true
		},
		"minimizeButton": {
			"top": 4,
			"left": 755,
			"width": 16,
			"height": 16,
			"show": true
		},
		"closeButton": {
			"top": 4,
			"left": 779,
			"width": 16,
			"height": 16,
			"show": true
		}
	}
}

build

let { NodeInno } = require("node-inno");
NodeInno.build(config, (code)=>{
	
});

For more details, please refer to the demo under the source directory.