Skip to content

Commit 5ba6276

Browse files
committed
fix(mas): cannot find mas installer
Closes #535
1 parent bbd0bd6 commit 5ba6276

File tree

1 file changed

+23
-7
lines changed

1 file changed

+23
-7
lines changed

src/codeSign.ts

Lines changed: 23 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -157,21 +157,37 @@ export function downloadCertificate(cscLink: string): Promise<string> {
157157
.thenReturn(certPath)
158158
}
159159

160-
export let findIdentityRawResult: Promise<string> | null = null
160+
export let findIdentityRawResult: Promise<Array<string>> | null = null
161161

162162
export async function findIdentity(namePrefix: CertType, qualifier?: string): Promise<string | null> {
163163
if (findIdentityRawResult == null) {
164164
// https://github.com/electron-userland/electron-builder/issues/481
165-
findIdentityRawResult = exec("security", ["find-identity", "-v", "-p", "codesigning", "-p", "appleID"])
165+
// https://github.com/electron-userland/electron-builder/issues/535
166+
findIdentityRawResult = BluebirdPromise.all([
167+
exec("security", ["find-identity", "-v"])
168+
.then(it => it.trim().split("\n").filter(it => {
169+
for (let prefix of appleCertificatePrefixes) {
170+
if (it.includes(prefix)) {
171+
return true
172+
}
173+
}
174+
return false
175+
})),
176+
exec("security", ["find-identity", "-v", "-p", "codesigning"])
177+
.then(it => it.trim().split(("\n"))),
178+
])
179+
.then(it => {
180+
const array = it[0].concat(it[1])
181+
.filter(it => !it.includes("(Missing required extension)") && !it.includes("valid identities found") && !it.includes("iPhone ") && !it.includes("com.apple.idms.appleid.prd."))
182+
// remove 1)
183+
.map(it => it.substring(it.indexOf(")") + 1).trim())
184+
return Array.from(new Set(array))
185+
})
166186
}
167187

168188
// https://github.com/electron-userland/electron-builder/issues/484
169189
//noinspection SpellCheckingInspection
170-
const lines = (await findIdentityRawResult)
171-
.trim()
172-
.split("\n")
173-
.filter(it => !it.includes("(Missing required extension)") && !it.includes("valid identities found") && !it.includes("iPhone ") && !it.includes("com.apple.idms.appleid.prd."))
174-
190+
const lines = await findIdentityRawResult
175191
for (let line of lines) {
176192
if (qualifier != null && !line.includes(qualifier)) {
177193
continue

0 commit comments

Comments
 (0)