-
Notifications
You must be signed in to change notification settings - Fork 21
/
makefile.js
68 lines (63 loc) · 1.83 KB
/
makefile.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
const packager = require('electron-packager')
const png2icons = require('png2icons')
const path = require('path')
const fs = require('fs')
const app = require('./package.json')
const suffix = process.platform === 'darwin' ? 'icns' : 'ico'
const ICON_PATH = `src/assets/images/icon.${suffix}`
// Check icon file
try {
fs.accessSync(ICON_PATH)
} catch (error) {
console.log('Generating program icon...')
const folder = path.dirname(ICON_PATH)
const input = fs.readFileSync(`${folder}/icon.png`)
const builder = suffix === 'icns' ? png2icons.createICNS : png2icons.createICO
const output = builder(input, png2icons.BICUBIC, false)
fs.writeFileSync(ICON_PATH, output)
}
const options = {
dir: '.',
name: app.name,
out: 'dist/',
overwrite: true,
asar: true,
icon: ICON_PATH,
ignore: [
'^/(?!src|package\\.json|window\\.js)',
'^/src/(components|plugins|resources|storage)($|/)',
'^/src/assets/.*\\.(ico|icns)$',
],
appVersion: app.executableVersion,
win32metadata: {
FileDescription: app.productName,
OriginalFilename: `${app.name}.exe`,
}
}
function copy(source, target) {
const basename = path.basename(source)
if (fs.lstatSync(source).isDirectory()) {
target = path.join(target, basename)
try {
fs.mkdirSync(target)
} catch (e) {}
const entries = fs.readdirSync(source)
for (const entry of entries) {
copy(path.join(source, entry), target)
}
} else {
fs.copyFileSync(source, path.join(target, basename))
}
}
packager(options).then(appPaths => {
appPaths.forEach(dir => {
copy('src/resources', dir)
if (dir.includes('win32')) {
const manifest = `${app.name}.VisualElementsManifest.xml`
fs.renameSync(`${dir}/resources/visual/${manifest}`, `${dir}/${manifest}`)
}
})
console.log('Build finished.')
}).catch(e => {
console.error(e)
})