electron-forge-maker-innosetup 0.3.3 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +29 -43
- package/dist/MakerInnosetup.d.ts +119 -50
- package/dist/MakerInnosetup.d.ts.map +1 -0
- package/dist/MakerInnosetup.js +448 -428
- package/dist/MakerInnosetup.js.map +1 -0
- package/dist/errors.d.ts +56 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +87 -0
- package/dist/errors.js.map +1 -0
- package/dist/generator.d.ts +125 -42
- package/dist/generator.d.ts.map +1 -0
- package/dist/generator.js +435 -407
- package/dist/generator.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +22 -1
- package/dist/index.js.map +1 -0
- package/dist/logger.d.ts +32 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +55 -0
- package/dist/logger.js.map +1 -0
- package/dist/parser.d.ts +49 -26
- package/dist/parser.d.ts.map +1 -0
- package/dist/parser.js +590 -400
- package/dist/parser.js.map +1 -0
- package/dist/types.d.ts +605 -618
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +37 -1
- package/dist/types.js.map +1 -0
- package/dist/utils/index.d.ts +2 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +18 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/path.d.ts +46 -0
- package/dist/utils/path.d.ts.map +1 -0
- package/dist/utils/path.js +122 -0
- package/dist/utils/path.js.map +1 -0
- package/package.json +21 -7
package/README.md
CHANGED
|
@@ -13,26 +13,17 @@ npm install --save-dev electron-forge-maker-innosetup
|
|
|
13
13
|
### 导入方式
|
|
14
14
|
|
|
15
15
|
```typescript
|
|
16
|
-
//
|
|
16
|
+
// 命名导入
|
|
17
17
|
import { MakerInnosetup } from "electron-forge-maker-innosetup";
|
|
18
18
|
|
|
19
19
|
// 默认导入
|
|
20
20
|
import MakerInnosetup from "electron-forge-maker-innosetup";
|
|
21
21
|
|
|
22
22
|
// 导入解析器
|
|
23
|
-
import {
|
|
24
|
-
MakerInnosetup,
|
|
25
|
-
InnoScriptParser,
|
|
26
|
-
} from "electron-forge-maker-innosetup";
|
|
23
|
+
import { MakerInnosetup, InnoScriptParser } from "electron-forge-maker-innosetup";
|
|
27
24
|
```
|
|
28
25
|
|
|
29
|
-
###
|
|
30
|
-
|
|
31
|
-
**为什么推荐?**
|
|
32
|
-
|
|
33
|
-
- **可移植** - 配置可在不同机器间共享
|
|
34
|
-
- **团队协作** - 每个开发者的路径可以不同
|
|
35
|
-
- **CI/CD 友好** - 自动化构建无需修改配置
|
|
26
|
+
### 方式一:使用相对路径
|
|
36
27
|
|
|
37
28
|
在 `forge.config.ts` 中:
|
|
38
29
|
|
|
@@ -105,9 +96,11 @@ export default config;
|
|
|
105
96
|
|
|
106
97
|
#### 支持的路径占位符
|
|
107
98
|
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
99
|
+
| 占位符 | 说明 | 示例 |
|
|
100
|
+
| ----------- | --------------------------- | ------------------------------ |
|
|
101
|
+
| `{project}` | 项目根目录 | `{project}/resources/icon.ico` |
|
|
102
|
+
| `{build}` | Electron Forge 打包输出目录 | `{build}\\*` |
|
|
103
|
+
| `{assets}` | 资源目录(默认为 `assets`) | `{assets}/icons/icon.ico` |
|
|
111
104
|
|
|
112
105
|
示例:
|
|
113
106
|
|
|
@@ -134,11 +127,11 @@ new MakerInnosetup({
|
|
|
134
127
|
});
|
|
135
128
|
```
|
|
136
129
|
|
|
137
|
-
|
|
130
|
+
详细文档:[docs/path-resolution.md](docs/path-resolution.md)
|
|
138
131
|
|
|
139
132
|
### 方式二:使用绝对路径
|
|
140
133
|
|
|
141
|
-
|
|
134
|
+
如果需要使用绝对路径,可以禁用自动解析:
|
|
142
135
|
|
|
143
136
|
```typescript
|
|
144
137
|
import type { ForgeConfig } from "@electron-forge/shared-types";
|
|
@@ -285,7 +278,7 @@ const config: MakerInnosetupConfig = {
|
|
|
285
278
|
|
|
286
279
|
### 使用自定义 Innosetup 脚本
|
|
287
280
|
|
|
288
|
-
|
|
281
|
+
如果已有现成的 `.iss` 脚本文件:
|
|
289
282
|
|
|
290
283
|
#### 方法 1: 直接使用 ISS 文件
|
|
291
284
|
|
|
@@ -296,7 +289,6 @@ const config: MakerInnosetupConfig = {
|
|
|
296
289
|
scriptPath: './installer.iss'
|
|
297
290
|
}
|
|
298
291
|
}
|
|
299
|
-
|
|
300
292
|
```
|
|
301
293
|
|
|
302
294
|
#### 方法 2: 解析 ISS 文件为配置
|
|
@@ -323,30 +315,30 @@ const forgeConfig: ForgeConfig = {
|
|
|
323
315
|
};
|
|
324
316
|
```
|
|
325
317
|
|
|
326
|
-
|
|
318
|
+
详细文档:[iss-parser.md](./docs/iss-parser.md)
|
|
327
319
|
|
|
328
|
-
|
|
320
|
+
注意:如果 ISS 脚本中定义了 `OutputDir`,Maker 会自动解析并在正确的目录中查找安装包。详见 [custom-script-output.md](./docs/custom-script-output.md)
|
|
329
321
|
|
|
330
322
|
## 配置选项
|
|
331
323
|
|
|
332
324
|
### MakerInnosetupConfig
|
|
333
325
|
|
|
334
|
-
| 选项 | 类型 | 默认值
|
|
335
|
-
| ----------------------- | ----------------- |
|
|
336
|
-
| `config` | `InnoSetupConfig` | -
|
|
337
|
-
| `scriptPath` | `string` | -
|
|
338
|
-
| `innosetupPath` | `string` | 自动查找
|
|
339
|
-
| `outputDir` | `string` |
|
|
340
|
-
| `appName` | `string` | -
|
|
341
|
-
| `appVersion` | `string` | -
|
|
342
|
-
| `appPublisher` | `string` | -
|
|
343
|
-
| `appId` | `string` | -
|
|
344
|
-
| `licenseFile` | `string` | -
|
|
345
|
-
| `setupIconFile` | `string` | -
|
|
346
|
-
| `createDesktopIcon` | `boolean` | `false`
|
|
347
|
-
| `createQuickLaunchIcon` | `boolean` | `false`
|
|
348
|
-
| `gui` | `boolean` | `false`
|
|
349
|
-
| `isccOptions` | `string[]` | -
|
|
326
|
+
| 选项 | 类型 | 默认值 | 说明 |
|
|
327
|
+
| ----------------------- | ----------------- | ------------------------------------ | --------------------------------------- |
|
|
328
|
+
| `config` | `InnoSetupConfig` | - | 完整的 Innosetup 配置对象 |
|
|
329
|
+
| `scriptPath` | `string` | - | 自定义脚本路径(如果提供则忽略 config) |
|
|
330
|
+
| `innosetupPath` | `string` | 自动查找 | Innosetup 编译器路径 |
|
|
331
|
+
| `outputDir` | `string` | `{makeDir}/innosetup.windows/{arch}` | 输出目录(可选) |
|
|
332
|
+
| `appName` | `string` | - | 应用程序名称 |
|
|
333
|
+
| `appVersion` | `string` | - | 应用程序版本 |
|
|
334
|
+
| `appPublisher` | `string` | - | 应用程序发布者 |
|
|
335
|
+
| `appId` | `string` | - | 应用程序唯一 ID |
|
|
336
|
+
| `licenseFile` | `string` | - | 许可证文件路径 |
|
|
337
|
+
| `setupIconFile` | `string` | - | 安装图标文件路径 |
|
|
338
|
+
| `createDesktopIcon` | `boolean` | `false` | 是否创建桌面图标 |
|
|
339
|
+
| `createQuickLaunchIcon` | `boolean` | `false` | 是否创建快速启动图标 |
|
|
340
|
+
| `gui` | `boolean` | `false` | 是否使用 GUI 模式编译 |
|
|
341
|
+
| `isccOptions` | `string[]` | - | 额外的 ISCC 命令行参数 |
|
|
350
342
|
|
|
351
343
|
### InnoSetupConfig
|
|
352
344
|
|
|
@@ -434,12 +426,6 @@ AppVersion={#MyAppVersion}
|
|
|
434
426
|
AppPublisher={#MyAppPublisher}
|
|
435
427
|
```
|
|
436
428
|
|
|
437
|
-
**优势:**
|
|
438
|
-
|
|
439
|
-
- 🔄 更易维护:集中管理常量,修改一处即可
|
|
440
|
-
- 📖 更清晰:生成的 ISS 脚本更具可读性
|
|
441
|
-
- 🔧 更灵活:支持 Inno Setup 原生的预处理器功能
|
|
442
|
-
|
|
443
429
|
### 添加自定义 Pascal 代码
|
|
444
430
|
|
|
445
431
|
```typescript
|
package/dist/MakerInnosetup.d.ts
CHANGED
|
@@ -1,95 +1,164 @@
|
|
|
1
|
-
import MakerBase, { MakerOptions } from "@electron-forge/maker-base";
|
|
2
|
-
import { ForgePlatform } from "@electron-forge/shared-types";
|
|
3
|
-
import { MakerInnosetupConfig } from "./types";
|
|
1
|
+
import MakerBase, { type MakerOptions } from "@electron-forge/maker-base";
|
|
2
|
+
import type { ForgePlatform } from "@electron-forge/shared-types";
|
|
3
|
+
import type { MakerInnosetupConfig } from "./types";
|
|
4
4
|
/**
|
|
5
|
-
* Electron Forge
|
|
5
|
+
* Electron Forge 的 Inno Setup Maker
|
|
6
|
+
*
|
|
7
|
+
* 使用 Inno Setup 编译器(ISCC.exe)创建 Windows 安装程序
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```typescript
|
|
11
|
+
* import { MakerInnosetup } from 'electron-forge-maker-innosetup';
|
|
12
|
+
*
|
|
13
|
+
* // 在 forge.config.ts 中
|
|
14
|
+
* const config: ForgeConfig = {
|
|
15
|
+
* makers: [
|
|
16
|
+
* new MakerInnosetup({
|
|
17
|
+
* appName: 'My App',
|
|
18
|
+
* appVersion: '1.0.0',
|
|
19
|
+
* setupIconFile: './assets/icon.ico',
|
|
20
|
+
* config: {
|
|
21
|
+
* Setup: {
|
|
22
|
+
* AppName: 'My App',
|
|
23
|
+
* AppVersion: '1.0.0',
|
|
24
|
+
* DefaultDirName: '{autopf}\\MyApp',
|
|
25
|
+
* OutputDir: './out/installer',
|
|
26
|
+
* },
|
|
27
|
+
* },
|
|
28
|
+
* }),
|
|
29
|
+
* ],
|
|
30
|
+
* };
|
|
31
|
+
* ```
|
|
6
32
|
*/
|
|
7
33
|
export default class MakerInnosetup extends MakerBase<MakerInnosetupConfig> {
|
|
8
|
-
name
|
|
9
|
-
defaultPlatforms: ForgePlatform[];
|
|
34
|
+
readonly name = "innosetup";
|
|
35
|
+
readonly defaultPlatforms: ForgePlatform[];
|
|
10
36
|
private scriptGenerator;
|
|
11
37
|
/**
|
|
12
|
-
*
|
|
38
|
+
* 从配置获取项目目录,若未配置则使用当前工作目录
|
|
13
39
|
*/
|
|
14
40
|
private getProjectDir;
|
|
15
41
|
/**
|
|
16
|
-
*
|
|
42
|
+
* 从配置获取构建目录
|
|
17
43
|
*/
|
|
18
44
|
private getBuildDir;
|
|
19
45
|
/**
|
|
20
|
-
*
|
|
46
|
+
* 从配置获取资源目录,若未配置则使用默认值 "assets"
|
|
21
47
|
*/
|
|
22
48
|
private getAssetsDir;
|
|
23
49
|
constructor(config?: MakerInnosetupConfig, platforms?: ForgePlatform[]);
|
|
24
50
|
/**
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
* @param
|
|
28
|
-
* @returns
|
|
29
|
-
*/
|
|
30
|
-
private resolvePath;
|
|
31
|
-
/**
|
|
32
|
-
* 解析配置中的路径占位符
|
|
33
|
-
* 支持:{project}, {assets}, {build}, {app}
|
|
34
|
-
* @param pathStr 包含占位符的路径字符串
|
|
35
|
-
* @returns 解析后的路径
|
|
36
|
-
*/
|
|
37
|
-
private resolvePathPlaceholders;
|
|
38
|
-
/**
|
|
39
|
-
* 处理配置对象中的所有路径
|
|
40
|
-
* @param config Innosetup 配置对象
|
|
41
|
-
* @param appDir 应用目录
|
|
42
|
-
*/
|
|
43
|
-
private resolveConfigPaths;
|
|
44
|
-
/**
|
|
45
|
-
* 从 ISS 文件解析配置
|
|
46
|
-
* @param issFilePath ISS 文件路径
|
|
47
|
-
* @returns MakerInnosetupConfig 配置对象
|
|
51
|
+
* 从 ISS 文件创建 MakerInnosetupConfig
|
|
52
|
+
*
|
|
53
|
+
* @param issFilePath - ISS 文件路径
|
|
54
|
+
* @returns 解析后的配置对象
|
|
48
55
|
*/
|
|
49
56
|
static fromIssFile(issFilePath: string): MakerInnosetupConfig;
|
|
50
57
|
/**
|
|
51
|
-
* 从 ISS
|
|
52
|
-
*
|
|
53
|
-
* @
|
|
58
|
+
* 从 ISS 内容字符串创建 MakerInnosetupConfig
|
|
59
|
+
*
|
|
60
|
+
* @param issContent - ISS 文件内容
|
|
61
|
+
* @returns 解析后的配置对象
|
|
54
62
|
*/
|
|
55
63
|
static fromIssContent(issContent: string): MakerInnosetupConfig;
|
|
56
64
|
/**
|
|
57
|
-
*
|
|
65
|
+
* 检查当前平台是否支持
|
|
66
|
+
*
|
|
67
|
+
* @returns 当前平台是否为 Windows
|
|
58
68
|
*/
|
|
59
69
|
isSupportedOnCurrentPlatform(): boolean;
|
|
60
70
|
/**
|
|
61
|
-
*
|
|
71
|
+
* 创建安装程序
|
|
72
|
+
*
|
|
73
|
+
* @param options - Electron Forge Maker 选项
|
|
74
|
+
* @returns 生成的安装程序文件路径数组
|
|
75
|
+
*/
|
|
76
|
+
make(options: MakerOptions): Promise<string[]>;
|
|
77
|
+
/**
|
|
78
|
+
* 查找 Inno Setup 编译器
|
|
79
|
+
*
|
|
80
|
+
* 按以下顺序查找:
|
|
81
|
+
* 1. 配置中指定的路径
|
|
82
|
+
* 2. 环境变量 INNOSETUP_PATH
|
|
83
|
+
* 3. 默认搜索路径
|
|
84
|
+
*
|
|
85
|
+
* @returns 编译器路径
|
|
86
|
+
* @throws CompilerNotFoundError 如果找不到编译器
|
|
62
87
|
*/
|
|
63
88
|
private findInnosetupCompiler;
|
|
64
89
|
/**
|
|
65
|
-
*
|
|
90
|
+
* 解析相对于基础目录的路径
|
|
91
|
+
*
|
|
92
|
+
* @param input - 输入路径
|
|
93
|
+
* @param baseDir - 基础目录
|
|
94
|
+
* @returns 解析后的绝对路径
|
|
95
|
+
*/
|
|
96
|
+
private resolvePath;
|
|
97
|
+
/**
|
|
98
|
+
* 解析字符串中的路径占位符
|
|
99
|
+
*
|
|
100
|
+
* 支持的占位符:
|
|
101
|
+
* - {project} - 项目根目录
|
|
102
|
+
* - {build} - 构建输出目录
|
|
103
|
+
* - {assets} - 资源文件目录
|
|
104
|
+
*
|
|
105
|
+
* @param input - 输入字符串
|
|
106
|
+
* @returns 替换占位符后的字符串
|
|
66
107
|
*/
|
|
67
|
-
private
|
|
108
|
+
private resolvePathPlaceholders;
|
|
68
109
|
/**
|
|
69
|
-
*
|
|
110
|
+
* 解析配置中的所有路径
|
|
111
|
+
*
|
|
112
|
+
* @param config - Inno Setup 配置
|
|
113
|
+
* @param appDir - 应用目录
|
|
70
114
|
*/
|
|
71
|
-
private
|
|
115
|
+
private resolveConfigPaths;
|
|
72
116
|
/**
|
|
73
|
-
*
|
|
117
|
+
* 生成默认的 Inno Setup 配置
|
|
118
|
+
*
|
|
119
|
+
* @param appDir - 应用目录
|
|
120
|
+
* @param appName - 应用名称
|
|
121
|
+
* @param appVersion - 应用版本
|
|
122
|
+
* @param arch - 目标架构
|
|
123
|
+
* @param outputDir - 输出目录
|
|
124
|
+
* @returns 默认配置对象
|
|
74
125
|
*/
|
|
75
126
|
private generateDefaultConfig;
|
|
76
127
|
/**
|
|
77
|
-
*
|
|
128
|
+
* 合并用户配置与默认配置
|
|
129
|
+
*
|
|
130
|
+
* @param defaultConfig - 默认配置
|
|
131
|
+
* @param userConfig - 用户配置
|
|
132
|
+
* @returns 合并后的配置
|
|
78
133
|
*/
|
|
79
134
|
private mergeConfig;
|
|
80
135
|
/**
|
|
81
|
-
*
|
|
136
|
+
* 添加桌面图标和快速启动任务
|
|
137
|
+
*
|
|
138
|
+
* @param config - Inno Setup 配置
|
|
139
|
+
* @param appName - 应用名称
|
|
82
140
|
*/
|
|
83
141
|
private addTasks;
|
|
84
142
|
/**
|
|
85
|
-
*
|
|
143
|
+
* 编译 ISS 脚本
|
|
144
|
+
*
|
|
145
|
+
* @param scriptPath - 脚本文件路径
|
|
146
|
+
* @param compilerPath - 编译器路径
|
|
147
|
+
* @returns 编译输出
|
|
148
|
+
* @throws CompilationError 编译失败
|
|
149
|
+
* @throws CompilationTimeoutError 编译超时
|
|
86
150
|
*/
|
|
87
151
|
private compileScript;
|
|
88
152
|
/**
|
|
89
|
-
*
|
|
153
|
+
* 查找生成的安装程序文件
|
|
154
|
+
*
|
|
155
|
+
* @param searchDir - 搜索目录
|
|
156
|
+
* @param appName - 应用名称
|
|
157
|
+
* @param appVersion - 应用版本
|
|
158
|
+
* @param archId - 架构标识
|
|
159
|
+
* @returns 安装程序文件路径数组
|
|
160
|
+
* @throws InstallerNotFoundError 如果找不到安装程序
|
|
90
161
|
*/
|
|
91
|
-
|
|
162
|
+
private findInstaller;
|
|
92
163
|
}
|
|
93
|
-
|
|
94
|
-
export { InnoScriptGenerator } from "./generator";
|
|
95
|
-
export { InnoScriptParser } from "./parser";
|
|
164
|
+
//# sourceMappingURL=MakerInnosetup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MakerInnosetup.d.ts","sourceRoot":"","sources":["../src/MakerInnosetup.ts"],"names":[],"mappings":"AAGA,OAAO,SAAS,EAAE,EAAE,KAAK,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,KAAK,EACV,oBAAoB,EAMrB,MAAM,SAAS,CAAC;AAgCjB;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,CAAC,OAAO,OAAO,cAAe,SAAQ,SAAS,CAAC,oBAAoB,CAAC;IACzE,QAAQ,CAAC,IAAI,eAAe;IAC5B,QAAQ,CAAC,gBAAgB,EAAE,aAAa,EAAE,CAAa;IAEvD,OAAO,CAAC,eAAe,CAAsB;IAE7C;;OAEG;IACH,OAAO,CAAC,aAAa;IAIrB;;OAEG;IACH,OAAO,CAAC,WAAW;IAInB;;OAEG;IACH,OAAO,CAAC,YAAY;gBAIR,MAAM,GAAE,oBAAyB,EAAE,SAAS,CAAC,EAAE,aAAa,EAAE;IAU1E;;;;;OAKG;IACH,MAAM,CAAC,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,oBAAoB;IAQ7D;;;;;OAKG;IACH,MAAM,CAAC,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,oBAAoB;IAK/D;;;;OAIG;IACH,4BAA4B,IAAI,OAAO;IAIvC;;;;;OAKG;IACG,IAAI,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAmGpD;;;;;;;;;;OAUG;IACH,OAAO,CAAC,qBAAqB;IA6B7B;;;;;;OAMG;IACH,OAAO,CAAC,WAAW;IAmBnB;;;;;;;;;;OAUG;IACH,OAAO,CAAC,uBAAuB;IAqB/B;;;;;OAKG;IACH,OAAO,CAAC,kBAAkB;IAwE1B;;;;;;;;;OASG;IACH,OAAO,CAAC,qBAAqB;IA2D7B;;;;;;OAMG;IACH,OAAO,CAAC,WAAW;IA8BnB;;;;;OAKG;IACH,OAAO,CAAC,QAAQ;IAkDhB;;;;;;;;OAQG;YACW,aAAa;IA+E3B;;;;;;;;;OASG;IACH,OAAO,CAAC,aAAa;CAiDtB"}
|