diff --git a/package/app.manifest b/package/app.manifest new file mode 100644 index 0000000..ea57069 --- /dev/null +++ b/package/app.manifest @@ -0,0 +1,2 @@ + +truetrue diff --git a/package/icon.ico b/package/icon.ico new file mode 100644 index 0000000..d845ecc Binary files /dev/null and b/package/icon.ico differ diff --git a/package/package.js b/package/package.js new file mode 100644 index 0000000..d7600f8 --- /dev/null +++ b/package/package.js @@ -0,0 +1,63 @@ +const fs = require("fs") +const pkg = require("pkg") +const { version } = require("../version") +const { execSync } = require("child_process") + +// noinspection DuplicatedCode +const log = (msg, ...params) => { + const time = new Date() + const timeStr = time.getHours().toString().padStart(2, "0") + ":" + time.getMinutes().toString().padStart(2, "0") + ":" + time.getSeconds().toString().padStart(2, "0") + console.log(`${timeStr} ${msg}`, ...params) +} + +const name = `YaeAchievement-${ version.isDev ? "DevBuild" : "Release" }-${((t = new Date()) => { + const p = i => i.toString().padStart(2, "0") + return `${p(t.getMonth()+1)}${p(t.getDate())}${p(t.getHours())}${p(t.getMinutes())}` +})()}` + +const generateAndCompileVersionInfo = () => { + const vci = version.name.split(".") + let content = fs.readFileSync("./version.rc", "utf-8") + content = content.replaceAll("${BID}" , vci[2] === undefined ? "0" : vci[2]) + content = content.replaceAll("${YEAR}" , (new Date()).getFullYear()) + content = content.replaceAll("${MAJOR_VERSION}", vci[0]) + content = content.replaceAll("${MINOR_VERSION}", vci[1]) + content = content.replaceAll("${ORIGINAL_NAME}", `${name}.exe`) + fs.writeFileSync("./tmp.rc", content, "utf-8") + execSync(`rh.exe -open tmp.rc -save tmp.res -action compile -log NUL`) + fs.rm("./tmp.rc", () => {}) +} + +const generateScript = (path) => { + let content = fs.readFileSync("./rh.script", "utf-8") + content = content.replaceAll("${PATH}", path) + fs.writeFileSync("./tmp.script", content, "utf-8") +} + +const cleanUp = () => { + fs.rm("./rh.ini", () => {}) + fs.rm("./tmp.res", () => {}) + fs.rm("./tmp.script", () => {}) +} + +const prepare = () => { + log("Generate and compile version info") + generateAndCompileVersionInfo() + log("Modify executable file resources") + const node = ["14.19.1", "16.14.2"] + node.forEach(v => { + const path = `C:/Users/holog/.pkg-cache/v3.3/built-v${v}-win-x64` + generateScript(path) + execSync(`rh.exe -script tmp.script`) + }) + cleanUp() + log("Done") +} + +prepare() +return + +/*await Promise.all([ + pkg.exec(`app.js -t node16-win-x64 -C Brotli --build -o ${name}.exe`.split(" ")), + pkg.exec(`app.js -t node14-win-x64 -C Brotli --build -o ${name}-Win7.exe`.split(" ")) +])*/ diff --git a/package/rh.exe b/package/rh.exe new file mode 100644 index 0000000..f224708 Binary files /dev/null and b/package/rh.exe differ diff --git a/package/rh.script b/package/rh.script new file mode 100644 index 0000000..fa3f92b --- /dev/null +++ b/package/rh.script @@ -0,0 +1,10 @@ +[FILENAMES] +Exe=${PATH} +SaveAs=${PATH} +Log=NUL +[COMMANDS] +-delete MANIFEST,, +-delete ICONGROUP,, +-addoverwrite icon.ico, ICONGROUP,1,0 +-addoverwrite tmp.res, VERSIONINFO,1,0 +-addoverwrite app.manifest MANIFEST,1,0 diff --git a/package/version.rc b/package/version.rc new file mode 100644 index 0000000..54a6cf1 --- /dev/null +++ b/package/version.rc @@ -0,0 +1,23 @@ +1 VERSIONINFO +FILEVERSION ${MAJOR_VERSION},${MINOR_VERSION},${BID},0 +PRODUCTVERSION ${MAJOR_VERSION},${MINOR_VERSION},${BID},0 +FILEOS 0x4 +FILETYPE 0x1 +{ +BLOCK "StringFileInfo" +{ + BLOCK "000004B0" + { + VALUE "ProductName", "YaeAchievement" + VALUE "ProductVersion", "${MAJOR_VERSION}.${MINOR_VERSION}.${BID}" + VALUE "FileDescription", "YaeAchievement" + VALUE "FileVersion", "${MAJOR_VERSION}.${MINOR_VERSION}.${BID}" + VALUE "OriginalFilename", "${ORIGINAL_NAME}" + VALUE "LegalCopyright", "Copyright (c) ${YEAR} HolographicHat" + } +} +BLOCK "VarFileInfo" +{ + VALUE "Translation", 0x0000 0x04B0 +} +} diff --git a/version.js b/version.js index 44a9d9c..a369b83 100644 --- a/version.js +++ b/version.js @@ -1,6 +1,7 @@ const version = { code: 6, - name: "1.5" + name: "1.5", + isDev: true } module.exports = { version }