build script for pkg with icon and metainfo
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
if (process.argv[2] == undefined) process.exit(0); | |
if (process.argv[2] == "") process.exit(0); | |
const { pkg_fetch_version, node_version, pkg_cache_path, icon, version, description, company, name, copyright, file } = require(`./${process.argv[2]}.json`); | |
const ResEdit = require('resedit'); | |
const { DownloaderHelper } = require('node-downloader-helper'); | |
const path = require("path"); | |
const fs = require('fs'); | |
process.env['PKG_CACHE_PATH'] = path.join(__dirname, pkg_cache_path); | |
const pkg_fetch = path.join(process.env['PKG_CACHE_PATH'], `v${pkg_fetch_version}`); | |
const fetched = path.join(pkg_fetch, `fetched-v${node_version}-win-x64`); | |
const built = path.join(pkg_fetch, `built-v${node_version}-win-x64`); | |
const url = `https://github.com/vercel/pkg-fetch/releases/download/v${pkg_fetch_version}/node-v${node_version}-win-x64` | |
const { exec } = require('pkg'); | |
(async () => { | |
console.log('Downloading File'); | |
try { await fs.mkdirSync(process.env['PKG_CACHE_PATH']); } catch (e) { } | |
try { await fs.mkdirSync(pkg_fetch); } catch (e) { } | |
const dl = new DownloaderHelper(url, pkg_fetch, { fileName: `fetched-v${node_version}-win-x64`, override: true }); | |
await dl.start(); | |
console.log('Downloaded File'); | |
console.log('Reading EXE'); | |
let data = fs.readFileSync(fetched); | |
let exe = ResEdit.NtExecutable.from(data); | |
let res = ResEdit.NtExecutableResource.from(exe); | |
let viList = ResEdit.Resource.VersionInfo.fromEntries(res.entries); | |
console.log(viList[0].data.strings); | |
let vi = viList[0]; | |
const theversion = `${version}.0`.split("."); | |
console.log('Removing OriginalFilename'); | |
vi.removeStringValue({ lang: 1033, codepage: 1200 }, 'OriginalFilename'); | |
console.log('Removing InternalName'); | |
vi.removeStringValue({ lang: 1033, codepage: 1200 }, 'InternalName'); | |
console.log('Setting Product Version'); | |
vi.setProductVersion(theversion[0], theversion[1], theversion[2], theversion[3], 1033); | |
console.log('Setting File Version'); | |
vi.setFileVersion(theversion[0], theversion[1], theversion[2], theversion[3], 1033); | |
console.log('Setting File Info'); | |
vi.setStringValues( | |
{ lang: 1033, codepage: 1200 }, | |
{ | |
FileDescription: description, | |
ProductName: name, | |
CompanyName: company, | |
LegalCopyright: copyright | |
} | |
); | |
console.log(vi.data.strings); | |
vi.outputToResourceEntries(res.entries); | |
console.log('Replacing Icon'); | |
let iconFile = ResEdit.Data.IconFile.from(fs.readFileSync(path.join(__dirname, icon))); | |
ResEdit.Resource.IconGroupEntry.replaceIconsForResource( | |
res.entries, | |
1, | |
1033, | |
iconFile.icons.map((item) => item.data) | |
); | |
res.outputResource(exe); | |
console.log('Generating EXE'); | |
let newBinary = exe.generate(); | |
console.log('Saving EXE'); | |
fs.writeFileSync(built, Buffer.from(newBinary)); | |
console.log('Bundling App'); | |
await exec(['--build', '--config', `${process.argv[2]}.json`, `${file}`]); | |
})(); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"pkg": { | |
"targets": [ | |
"node14-win-x64" | |
], | |
"outputPath": "dist", | |
"assets": [ | |
"node_modules/printer/lib/node_printer.node" | |
] | |
}, | |
"pkg_fetch_version": "3.2", | |
"node_version": "14.17.2", | |
"pkg_cache_path": ".pkg-cache", | |
"icon": "icon.ico", | |
"name": "myapp", | |
"description": "myapp description", | |
"company": "mycompany", | |
"version": "1.0.0", | |
"copyright": "mycopyright Ltd", | |
"file": "index.js" | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
npm install node-downloader-helper resedit pkg --save-dev | |
node build.js myapp |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment