Skip to content

Commit adacf1e

Browse files
committed
perf(mas): flat on electron-builder side
1 parent 9d31b42 commit adacf1e

File tree

3 files changed

+30
-18
lines changed

3 files changed

+30
-18
lines changed

.idea/dictionaries/develar.xml

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/macPackager.ts

Lines changed: 15 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,11 @@ import BluebirdPromise from "bluebird-lst-c"
66
import { log, warn, task } from "./util/log"
77
import { createKeychain, CodeSigningInfo, findIdentity } from "./codeSign"
88
import { deepAssign } from "./util/deepAssign"
9-
import { signAsync, flatAsync, BaseSignOptions, SignOptions, FlatOptions } from "electron-osx-sign-tf"
9+
import { signAsync, BaseSignOptions, SignOptions } from "electron-osx-sign-tf"
1010
import { DmgTarget } from "./targets/dmg"
1111
import { createCommonTarget, DEFAULT_TARGET } from "./targets/targetFactory"
1212
import { AppInfo } from "./appInfo"
13+
import { flatApplication } from "./targets/pkg"
1314

1415
export default class MacPackager extends PlatformPackager<MacOptions> {
1516
codeSigningInfo: Promise<CodeSigningInfo>
@@ -133,13 +134,13 @@ export default class MacPackager extends PlatformPackager<MacOptions> {
133134

134135
const baseSignOptions: BaseSignOptions = {
135136
app: path.join(appOutDir, `${this.appInfo.productFilename}.app`),
136-
platform: isMas ? "mas" : "darwin",
137137
keychain: keychainName || undefined,
138-
version: this.info.electronVersion
139138
}
140139

141140
const signOptions = Object.assign({
142141
identity: name,
142+
platform: isMas ? "mas" : "darwin",
143+
version: this.info.electronVersion,
143144
}, (<any>this.devMetadata.build)["osx-sign"], baseSignOptions)
144145

145146
const resourceList = await this.resourceList
@@ -151,35 +152,31 @@ export default class MacPackager extends PlatformPackager<MacOptions> {
151152
}
152153

153154
const customSignOptions = masOptions || this.platformSpecificBuildOptions
154-
if (customSignOptions.entitlements != null) {
155-
signOptions.entitlements = customSignOptions.entitlements
156-
}
157-
else {
155+
if (customSignOptions.entitlements == null) {
158156
const p = `entitlements.${isMas ? "mas" : "mac"}.plist`
159157
if (resourceList.includes(p)) {
160158
signOptions.entitlements = path.join(this.buildResourcesDir, p)
161159
}
162160
}
163-
164-
if (customSignOptions.entitlementsInherit != null) {
165-
signOptions["entitlements-inherit"] = customSignOptions.entitlementsInherit
166-
}
167161
else {
162+
signOptions.entitlements = customSignOptions.entitlements
163+
}
164+
165+
if (customSignOptions.entitlementsInherit == null) {
168166
const p = `entitlements.${isMas ? "mas" : "mac"}.inherit.plist`
169167
if (resourceList.includes(p)) {
170168
signOptions["entitlements-inherit"] = path.join(this.buildResourcesDir, p)
171169
}
172170
}
171+
else {
172+
signOptions["entitlements-inherit"] = customSignOptions.entitlementsInherit
173+
}
173174

174175
await task(`Signing app (identity: ${name})`, this.doSign(signOptions))
175176

176177
if (masOptions != null) {
177-
await task(`Signing app (identity: ${name})`, this.doSign(signOptions))
178178
const pkg = path.join(appOutDir, `${this.appInfo.productFilename}-${this.appInfo.version}.pkg`)
179-
await this.doFlat(Object.assign({
180-
pkg: pkg,
181-
identity: installerName,
182-
}, baseSignOptions))
179+
await this.doFlat(baseSignOptions, pkg, installerName!!)
183180
this.dispatchArtifactCreated(pkg, `${this.appInfo.name}-${this.appInfo.version}.pkg`)
184181
}
185182
}
@@ -190,8 +187,8 @@ export default class MacPackager extends PlatformPackager<MacOptions> {
190187
}
191188

192189
//noinspection JSMethodCanBeStatic
193-
protected async doFlat(opts: FlatOptions): Promise<any> {
194-
return flatAsync(opts)
190+
protected async doFlat(opts: BaseSignOptions, outFile: string, identity: string): Promise<any> {
191+
return flatApplication(opts, outFile, identity)
195192
}
196193

197194
protected packageInDistributableFormat(appOutDir: string, targets: Array<Target>, promises: Array<Promise<any>>): void {

src/targets/pkg.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
import { exec } from "../util/util"
2+
import { BaseSignOptions } from "electron-osx-sign-tf"
3+
4+
export function flatApplication(opts: BaseSignOptions, outFile: string, identity: string): Promise<any> {
5+
const args = [
6+
"--component", opts.app, "/Applications",
7+
"--sign", identity,
8+
]
9+
if (opts.keychain != null) {
10+
args.push("--keychain", opts.keychain)
11+
}
12+
args.push(outFile)
13+
return exec("productbuild", args)
14+
}

0 commit comments

Comments
 (0)