我一直试图通过创建一个新的maker来扩展electron-forge,来使用innosetup。
现在,关于如何通过扩展MakerBase并实现isSupportedOnCurrentPlatform和make来创建新的maker的文档非常清晰,但是我对如何在我的代码中使用/注册新创建的maker感到有点困惑。
maker-inno.js
const path = require("path");
const fs = require("fs");
class MakerInno extends require("@electron-forge/maker-base").default {
isSupportedOnCurrentPlatform() {
return process.platform === "win32";
}
async make(options) {
...
return [pathToOutput];
}
}
module.exports = MakerInno;forge.config.js
const InnoMaker = require("./scripts/maker-inno.js");
const innoMakerConfig = {};
module.exports = {
...
makers : [
new InnoMaker(innoMakerConfig)
]
...
}现在,我已经将forge make代码调试到@forge forge/core/api/make...但是,在加载配置和使用maker时,forgeConfig被封装在代理对象中,maker也是如此,从那时起,它就无法检查maker了。
这就是说,在这上面的一个指针是正确的。
附注:我真的讨厌使用require().default来扩展类,我的代码必须是typescript格式的,但当涉及到配置文件时,我会不知所措,如果能用更简洁的方式来做这件事,我会很感激的:p
发布于 2021-02-25 05:10:17
我不能仅仅通过一个本地类让它工作,所以我必须在我的项目下创建一个本地包
{
"name": "electron-forge-maker-inno",
"version": "1.0.0",
"description": "InnoSetup maker for Electron Forge",
"main": "dist/index.js",
"scripts": {
"build": "tsc --project tsconfig.json"
},
"engines": {
"node": ">= 10.0.0"
},
"dependencies": {
"@electron-forge/maker-base": "6.0.0-beta.54",
"@electron-forge/shared-types": "6.0.0-beta.54",
"innosetup-compiler": "^5.6.1"
}
}并在主项目package.json中引用它
"devDependencies": {
...
"electron-forge-maker-inno": "file:scripts/maker-inno",
...
}然后,我可以将制造商添加到我的forge配置中
module.exports = {
...
makers : [
{ name: "electron-forge-maker-inno", config: innoConfig },
]
...
}这感觉很糟糕,但它又起作用了,理想情况下,有人会添加一个Inno设置制造商来伪造。"innosetup-compiler"已经完成了必须的工作,它只需要一个伪造制造商的包装器。
https://stackoverflow.com/questions/66318858
复制相似问题