Windows 代码签名流程
420 字
2 分钟
Windows 代码签名流程
过程
⚠️ 注意事项:
如果屏幕右下角图标栏的这个图标是红色 X,需要先登录,否则后面的步骤进行不了,如果是蓝色可忽略此条注意事项。

👆👆👆 做好上面注意事项,下面流程才可以顺利执行。
只需要进行 yarn make 这一步就可以
前提是已经配置好下方的文件
---------------------------------------------START--------------------------------------------
需要配置的文件位置

新增文件: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'
第二处:
else { await signWin(RELEASE_EXE_DIR, APP_NAME) }
修改文件: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 }) }) })}
-----------------------------------------------END--------------------------------------------
相关链接
第三方流程 pdf 文件地址:https://xxx.aliyuncs.com/im/2024/01/08/35a61c865ab3552ea0e5108e314a9c57/d172ca47_云版代码签名手册.pdf
windows 代码签名不信任问题
原因:发布的 exe 是将生成的 exe 包装形成的,生成的 exe 签名,包装完成的 exe 没有签名导致不信任问题

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

const RELEASE_OUT_EXE_DIR = path.join(__dirname, `./out/make/nsis/${ARCH}/${APP_NAME} Setup ${packageJson.version}.exe`)
await signWin(RELEASE_OUT_EXE_DIR, APP_NAME) Windows 代码签名流程
https://wangxiang.website/posts/前端工程/electron-sign-windows/