Implement installers via electron-builder

This commit is contained in:
Kolja Lampe 2016-05-13 21:47:30 +02:00
parent 81bc16ca6e
commit 68b54ee4aa
4 changed files with 55 additions and 3 deletions

View file

@ -86,5 +86,10 @@ $ npm run package:linux
$ npm run package:all (Packages for all platform)
```
Create a windows installer with the following command. It will appear in the `release\windows-installer` directory.
```
$ npm run installer
```
## Contributing
Please see [CONTRIBUTING.md](./CONTRIBUTING.md).

View file

@ -25,7 +25,8 @@
"package:osx": "gulp package:osx",
"package:linux": "gulp build && build --platform linux --arch all -d deb",
"package:all": "gulp package:all",
"prettify": "gulp prettify"
"prettify": "gulp prettify",
"installer": "node ./script/installer.js"
},
"devDependencies": {
"babel-core": "^6.7.5",
@ -33,10 +34,12 @@
"babel-preset-react": "^6.5.0",
"chromedriver": "^2.20.0",
"del": "^2.2.0",
"electron-builder": "^3.11.0",
"electron-builder": "3.20.0",
"electron-connect": "^0.3.7",
"electron-packager": "^7.0.1",
"electron-prebuilt": "0.37.8",
"electron-squirrel-startup": "^1.0.0",
"electron-winstaller": "^2.2.0",
"esformatter": "^0.9.3",
"esformatter-jsx": "^5.0.0",
"gulp": "^3.9.0",
@ -47,6 +50,7 @@
"json-loader": "^0.5.4",
"mocha": "^2.3.4",
"mocha-circleci-reporter": "0.0.1",
"rimraf": "^2.5.2",
"should": "^8.0.1",
"style-loader": "^0.13.0",
"through2": "^2.0.1",
@ -56,11 +60,13 @@
"webpack-stream": "^3.1.0"
},
"build": {
"app-bundle-id": "com.mattermost.desktop",
"app-category-type": "public.app-category.productivity",
"linux": {
"synopsis": "Mattermost Desktop"
}
},
"directories":{
"directories": {
"buildResources": "resources",
"app": "dist",
"output": "release"

38
script/installer.js Normal file
View file

@ -0,0 +1,38 @@
#!/usr/bin/env node
const createWindowsInstaller = require('electron-winstaller').createWindowsInstaller
const path = require('path')
const rimraf = require('rimraf')
deleteOutputFolder()
.then(getInstallerConfig)
.then(createWindowsInstaller)
.catch((error) => {
console.error(error.message || error)
process.exit(1)
})
function getInstallerConfig() {
const rootPath = path.join(__dirname, '..')
const outPath = path.join(rootPath, 'release')
return Promise.resolve({
appDirectory: path.join(outPath, 'Mattermost-win32-x64'),
iconUrl: 'https://raw.githubusercontent.com/mattermost/desktop/master/resources/icon.ico',
//loadingGif: path.join(rootPath, 'assets', 'img', 'loading.gif'),
noMsi: true,
outputDirectory: path.join(outPath, 'windows-installer'),
setupExe: 'Mattermost.exe',
setupIcon: path.join(rootPath, 'resources', 'icon.ico'),
skipUpdateIcon: true,
exe: 'Mattermost.exe'
})
}
function deleteOutputFolder() {
return new Promise((resolve, reject) => {
rimraf(path.join(__dirname, '..', 'out', 'windows-installer'), (error) => {
error ? reject(error) : resolve()
})
})
}

View file

@ -2,6 +2,9 @@
const electron = require('electron');
const app = electron.app; // Module to control application life.
if (require('electron-squirrel-startup')) app.quit();
const BrowserWindow = electron.BrowserWindow; // Module to create native browser window.
const Menu = electron.Menu;
const Tray = electron.Tray;