| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- import {
- resolveDesktopAppId,
- resolveMacOSNotarizationEnvironment,
- resolveMacOSSigningEnvironment,
- } from './scripts/desktop-release-environment.mjs'
- import { notarizeMacOSDiskImageArtifact } from './scripts/notarize-macos-disk-images.mjs'
- import { verifyMacOSSignatureAfterSign } from './scripts/verify-macos-signature.mjs'
- import {
- createWindowsTokenSigner,
- installWindowsNsisBootstrapSigner,
- } from './scripts/windows-sign.mjs'
- /**
- * Create electron-builder configuration from one release environment.
- * @param {NodeJS.ProcessEnv} env - Packaging environment.
- * @param {NodeJS.Platform} hostPlatform - Build-host platform used when no explicit target is present.
- * @returns {object} electron-builder configuration.
- */
- export function createElectronBuilderConfig(env = process.env, hostPlatform = process.platform) {
- const appId = resolveDesktopAppId(env)
- const targetPlatform = env.DSH_DESKTOP_TARGET_PLATFORM
- const packagesMacOS = targetPlatform === 'darwin' || (targetPlatform === undefined && hostPlatform === 'darwin')
- const packagesWindows = targetPlatform === 'win32'
- const macOSSigning = packagesMacOS ? resolveMacOSSigningEnvironment(env) : undefined
- if (packagesMacOS) resolveMacOSNotarizationEnvironment(env)
- const windowsSigner = packagesWindows
- ? createWindowsTokenSigner({
- certificateFile: env.DSH_DESKTOP_WINDOWS_CER_FILE,
- signTool: env.DSH_DESKTOP_WINDOWS_SIGNTOOL,
- tokenPin: env.DSH_DESKTOP_WINDOWS_TOKEN_PIN,
- keyContainer: env.DSH_DESKTOP_WINDOWS_KEY_CONTAINER,
- })
- : undefined
- if (windowsSigner !== undefined) {
- installWindowsNsisBootstrapSigner({ sign: windowsSigner })
- }
- const publishUrl = env.DSH_DESKTOP_SHELL_UPDATE_URL
- return {
- appId,
- productName: 'DeepSeek Harness',
- artifactName: 'deepseek-harness-${version}-${os}-${arch}.${ext}',
- directories: { output: '.desktop-build/artifacts' },
- asar: true,
- files: [
- 'lib/*.js',
- 'lib/*.cjs',
- 'renderer/**/*',
- 'package.json',
- ],
- extraResources: [
- { from: '.desktop-build/runtime', to: 'runtime' },
- { from: '.desktop-build/seed', to: 'seed' },
- ],
- mac: {
- category: 'public.app-category.developer-tools',
- identity: macOSSigning?.signingIdentity,
- forceCodeSigning: true,
- hardenedRuntime: true,
- notarize: true,
- target: ['dmg', 'zip'],
- },
- dmg: {
- sign: true,
- writeUpdateInfo: false,
- },
- afterSign: context => {
- if (context.electronPlatformName !== 'darwin') return
- verifyMacOSSignatureAfterSign(context, macOSSigning ?? resolveMacOSSigningEnvironment(env))
- },
- artifactBuildCompleted: artifact => {
- if (!artifact.file.endsWith('.dmg')) return
- return notarizeMacOSDiskImageArtifact(
- artifact,
- env,
- macOSSigning ?? resolveMacOSSigningEnvironment(env),
- )
- },
- win: {
- forceCodeSigning: true,
- signtoolOptions: {
- sign: windowsSigner,
- signingHashAlgorithms: ['sha256'],
- },
- target: ['nsis'],
- },
- linux: {
- category: 'Development',
- target: ['AppImage'],
- },
- nsis: {
- oneClick: false,
- allowToChangeInstallationDirectory: true,
- differentialPackage: true,
- },
- publish: publishUrl === undefined || publishUrl === ''
- ? null
- : [{ provider: 'generic', url: publishUrl }],
- }
- }
- export default createElectronBuilderConfig()
|