import MakerBase, { type MakerOptions } from "@electron-forge/maker-base"; import type { ForgePlatform } from "@electron-forge/shared-types"; import type { MakerInnosetupConfig } from "./types"; /** * Electron Forge 的 Inno Setup Maker * * 使用 Inno Setup 编译器(ISCC.exe)创建 Windows 安装程序 * * @example * ```typescript * import { MakerInnosetup } from 'electron-forge-maker-innosetup'; * * // 在 forge.config.ts 中 * const config: ForgeConfig = { * makers: [ * new MakerInnosetup({ * appName: 'My App', * appVersion: '1.0.0', * setupIconFile: './assets/icon.ico', * config: { * Setup: { * AppName: 'My App', * AppVersion: '1.0.0', * DefaultDirName: '{autopf}\\MyApp', * OutputDir: './out/installer', * }, * }, * }), * ], * }; * ``` */ export default class MakerInnosetup extends MakerBase { readonly name = "innosetup"; readonly defaultPlatforms: ForgePlatform[]; private scriptGenerator; /** * 从配置获取项目目录,若未配置则使用当前工作目录 */ private getProjectDir; /** * 从配置获取构建目录 */ private getBuildDir; /** * 从配置获取资源目录,若未配置则使用默认值 "assets" */ private getAssetsDir; constructor(config?: MakerInnosetupConfig, platforms?: ForgePlatform[]); /** * 从 ISS 文件创建 MakerInnosetupConfig * * @param issFilePath - ISS 文件路径 * @returns 解析后的配置对象 */ static fromIssFile(issFilePath: string): MakerInnosetupConfig; /** * 从 ISS 内容字符串创建 MakerInnosetupConfig * * @param issContent - ISS 文件内容 * @returns 解析后的配置对象 */ static fromIssContent(issContent: string): MakerInnosetupConfig; /** * 检查当前平台是否支持 * * @returns 当前平台是否为 Windows */ isSupportedOnCurrentPlatform(): boolean; /** * 创建安装程序 * * @param options - Electron Forge Maker 选项 * @returns 生成的安装程序文件路径数组 */ make(options: MakerOptions): Promise; /** * 查找 Inno Setup 编译器 * * 按以下顺序查找: * 1. 配置中指定的路径 * 2. 环境变量 INNOSETUP_PATH * 3. 默认搜索路径 * * @returns 编译器路径 * @throws CompilerNotFoundError 如果找不到编译器 */ private findInnosetupCompiler; /** * 解析相对于基础目录的路径 * * @param input - 输入路径 * @param baseDir - 基础目录 * @returns 解析后的绝对路径 */ private resolvePath; /** * 解析字符串中的路径占位符 * * 支持的占位符: * - {project} - 项目根目录 * - {build} - 构建输出目录 * - {assets} - 资源文件目录 * * @param input - 输入字符串 * @returns 替换占位符后的字符串 */ private resolvePathPlaceholders; /** * 解析配置中的所有路径 * * @param config - Inno Setup 配置 * @param appDir - 应用目录 */ private resolveConfigPaths; /** * 生成默认的 Inno Setup 配置 * * @param appDir - 应用目录 * @param appName - 应用名称 * @param appVersion - 应用版本 * @param arch - 目标架构 * @param outputDir - 输出目录 * @returns 默认配置对象 */ private generateDefaultConfig; /** * 合并用户配置与默认配置 * * @param defaultConfig - 默认配置 * @param userConfig - 用户配置 * @returns 合并后的配置 */ private mergeConfig; /** * 添加桌面图标和快速启动任务 * * @param config - Inno Setup 配置 * @param appName - 应用名称 */ private addTasks; /** * 编译 ISS 脚本 * * @param scriptPath - 脚本文件路径 * @param compilerPath - 编译器路径 * @returns 编译输出 * @throws CompilationError 编译失败 * @throws CompilationTimeoutError 编译超时 */ private compileScript; /** * 查找生成的安装程序文件 * * @param searchDir - 搜索目录 * @param appName - 应用名称 * @param appVersion - 应用版本 * @param archId - 架构标识 * @returns 安装程序文件路径数组 * @throws InstallerNotFoundError 如果找不到安装程序 */ private findInstaller; } //# sourceMappingURL=MakerInnosetup.d.ts.map