Windows 代码签名流程

420 字
2 分钟
Windows 代码签名流程

过程#

⚠️ 注意事项:

如果屏幕右下角图标栏的这个图标是红色 X,需要先登录,否则后面的步骤进行不了,如果是蓝色可忽略此条注意事项。

electron-sing-windows
electron-sing-windows

👆👆👆 做好上面注意事项,下面流程才可以顺利执行。

只需要进行 yarn make 这一步就可以

前提是已经配置好下方的文件

---------------------------------------------START--------------------------------------------

需要配置的文件位置

electron-sing-windows1
electron-sing-windows1

新增文件:win-sign.ts#

import path from 'path'
import { buildLogger } from './logger'
import { execPromise } from './mac-sign'
const CERT_NAME = '北京企名片科技有限公司'
const SIGNTOOL_DIR = 'D:\\QMP\\sign-tool\\signtool'
/** 签名 windows */
export function signWin(appPath: string, APP_NAME: string) {
buildLogger.info(`【开始签名】: ${appPath}`)
appPath = path.resolve(appPath)
return execPromise(
`${SIGNTOOL_DIR} sign /n "${CERT_NAME}" /t http://time.certum.pl/ /fd sha1 /v "${appPath}"`
)
.then(({ stdout, stderr }) => {
buildLogger.info('【签名结果】', stdout, stderr)
return execPromise(`${SIGNTOOL_DIR} verify /pa "${appPath}"`)
})
.then(({ stdout, stderr }) => {
buildLogger.info('【签名校验】', stdout, stderr)
return stdout.includes('Successfully')
})
.then((isDone) => {
if (!isDone) throw new Error('签名失败!原因在日志文件里')
})
}

修改文件:forge.config.ts#

第一处:

import { signWin } from './deploy-config/win-sign'

electron-sing-windows2
electron-sing-windows2

第二处:

else {
await signWin(RELEASE_EXE_DIR, APP_NAME)
}

electron-sing-windows3
electron-sing-windows3

修改文件:mac-sign.ts#

export function execPromise(
command: string
): Promise<{ stdout: string, stderr: string }> {
return new Promise((resolve, reject) => {
exec(command, (err, stdout, stderr) => {
if (err) return reject(err)
else resolve({ stdout, stderr })
})
})
}

electron-sing-windows4
electron-sing-windows4

-----------------------------------------------END--------------------------------------------

相关链接#

第三方流程 pdf 文件地址:https://xxx.aliyuncs.com/im/2024/01/08/35a61c865ab3552ea0e5108e314a9c57/d172ca47_云版代码签名手册.pdf

windows 代码签名不信任问题#

原因:发布的 exe 是将生成的 exe 包装形成的,生成的 exe 签名,包装完成的 exe 没有签名导致不信任问题

electron-sing-windows5
electron-sing-windows5

解决:在生成的exe签名完成并包装后,对于包装形成的exe再次签名 代码:forge.config.ts新增

electron-sing-windows6
electron-sing-windows6

const RELEASE_OUT_EXE_DIR = path.join(__dirname, `./out/make/nsis/${ARCH}/${APP_NAME} Setup ${packageJson.version}.exe`)

electron-sing-windows7
electron-sing-windows7

await signWin(RELEASE_OUT_EXE_DIR, APP_NAME)
Windows 代码签名流程
https://wangxiang.website/posts/前端工程/electron-sign-windows/
作者
翔子
发布于
2023-08-03
许可协议
CC BY-NC-SA 4.0
Profile Image of the Author
翔子
前端开发工程师
公告
博客已从 VitePress 迁移到 Astro + Firefly 主题,223 篇文章全部保留。
音乐
封面

音乐

暂未播放

0:00 0:00
暂无歌词
分类
标签
站点统计
文章
221
分类
9
标签
28
总字数
411,914
运行时长
0
最后活动
0 天前

文章目录