UNPKG

electron-windows-inno-installer

Version:
193 lines (115 loc) 4.58 kB
# Build Your Installer Easy to RELEASE & UPDATE [![Build Status](https://travis-ci.org/Qquanwei/electron-windows-inno-installer.svg?branch=master)](https://travis-ci.org/Qquanwei/electron-windows-inno-installer) [![Docker Build Status](https://img.shields.io/docker/build/quanwei/electron-windows-inno-installer.svg)](https://hub.docker.com/r/quanwei/electron-windows-inno-installer/) [![Youtube](http://img.youtube.com/vi/8LsJhDYZQPA/0.jpg)](http://www.youtube.com/watch?feature=player_embedded&v=8LsJhDYZQPA) ## Installation * `npm install electron-windows-inno-installer -g` ## Required(or using [[docker](#Build with Docker)]) * wine `brew install wine --devel` * gulp `npm install gulp -g` ## Build Your Project need your `*.iss` file in your work directory you can using `electron-windows-inno-installer --make-iss` and then `vim example.iss` to make your setup.iss file ``` rm -rf release/ electron-windows-inno-installer ./setup.iss --platform win32-x64 --icon ./favicon.ico ``` electron-windows-inno-installer will pack all you local file *without directory* , if you want customs pack files ,you can use 'sourceFiles' field in you `package.json` like this ``` ... "dependencies": { "electron-windows-inno-installer": "^0.1.3" }, "sourceFiles":[ "./index.js","./favicon.ico","./www/**/**"], ... ``` ### Build with Docker ``` docker run --rm -v ${pwd}:/app -w /app/ quanwei/electron-windows-inno-installer example.iss --platform win32-x64 ``` ### example.iss * #define SourcePath "release/v1.4.3/win32-ia32/" sourcePath is `release/{electron-version}/{platform}` * #define MyAppExeName "example.exe" MyAppExeName is `{package.json.name}.exe` ## AutoUpdater * npm install electron-windows-inno-installer --save ```javascript (electron app.js) const autoupdater = require('electron-windows-inno-installer'); //support http/https autoupdater.setFeedURL('http://demo/releases.json'); //release.json: //{ //"name": "demo1.1.2", //"version": "1.1.2", //"date": "2016-08-09", //"changelog": "upgrade \n\n\n\n\n?", //"updateURL": "http://10.8.3.31:8000/setup.exe" //} autoupdater.on('update-downloaded',function(releasefileJSON,fullpath){ console.log('release notes: ',releasefileJSON.changelog) console.log('write to :',fullpath); autoupdater.quitAndInstall(); // Upgrade }); autoupdater.on('update-not-available',function(){ console.log('INFO: Update not available'); }); autoupdater.on('update-available',function(releasefileJSON,next){ console.log('INFO: Update available',releasefileJSON); next(); //will be download }); autoupdater.on('progress',function(progress){ console.log(progress); // download progress }); ``` ## workflow: `(some html/js/css)` -> `electron-prebuild` -> `gulp-inno` -> `installer.exe` ## event ### Event:`checking-for-update` Emmitted when updater starts checking update, after 'checkForupdates' ### Event: `update-not-available` Emmitted when update unavailable,usually the version lowwer current version or server response is '204' ### Event: `update-available` Returns: * releasejson : `object` * next : `function` Emmitted when update available, you will be invoke `next` tell updater to download this installer ### Event: `update-downloaded` Returns: * releasejson: `object` * fullpath: `string` Emmitted when the installer package is downloaded. from then on , you can execute `updater.quitAndinstall()` to quit current process and install installer. ### Event `error` Returns: * err : `object` Emmitted when throw a error ### Event `done` Emmitted when updater stopped work ### Event `progress` Returns: progress the downloaded progress ## Methods ### `setFeedURL` Params: * url : `string` set feed url ### `checkForUpdates` Params: * isForce : `bool` if `isForce` is `true` , updater will do not check version start updater , updater will feed a update object from feedurl, updater will checking this object that has field `version` ### `quitAndinstall` when the event of `update-downloade` emmitted, thie method will quit-and-install the new installer ## FAQ There are some case in your building. * Download electron-v{version}-win32-x64.zip is slowly or failure download the file from `https://github.com/electron/electron/releases` or `https://npm.taobao.org/mirrors/electron/` to directory `.cache/{version}/{platform}`. example `wget https://npm.taobao.org/mirrors/electron/1.3.1/electron-v1.3.1-win32-ia32.zip -P /you/project/.cache/v1.3.1/` ## Contribution Very pleasure with anyone contribute code