UNPKG

resedit-cli

Version:

Command-line tool for editing Windows Resource data in executable binaries

45 lines (44 loc) 1.85 kB
import * as ResEdit from 'resedit'; import * as log from '../log.js'; export default async function emitVersion(res, lang, isExe, version) { if (!version) { return false; } log.info('[version] Emit version.'); const oldVers = ResEdit.Resource.VersionInfo.fromEntries(res.entries); if (oldVers.length > 0) { log.debug(`[version] Existing version resources will be dropped. (count = ${oldVers.length})`); } res.entries = res.entries.filter((e) => e.type !== 16); const outVersion = ResEdit.Resource.VersionInfo.create({ lang, fixedInfo: version.fixedInfo, strings: version.strings.map((s) => { const actualLanguage = typeof s.lang === 'number' ? s.lang : lang; log.debug(`[version] Output version string values (lang = ${actualLanguage})`); return { lang: actualLanguage, codepage: 1200, values: s.values, }; }), }); if (oldVers.length) { log.debug('[version] Use FIXEDINFO from (first) existing version resource.'); Object.assign(outVersion.fixedInfo, oldVers[0].fixedInfo, version.fixedInfo); } else { log.debug(`[version] Make default FIXEDINFO data (isExe = ${isExe ? 'true' : 'false'}).`); outVersion.fixedInfo.fileFlagsMask = 0x17; outVersion.fixedInfo.fileFlags = 0; outVersion.fixedInfo.fileOS = ResEdit.Resource.VersionFileOS.NT_Windows32; outVersion.fixedInfo.fileType = isExe ? ResEdit.Resource.VersionFileType.App : ResEdit.Resource.VersionFileType.DLL; outVersion.fixedInfo.fileSubtype = 0; } outVersion.outputToResourceEntries(res.entries); log.info('[version] Done.'); return true; }