- MacOS 10.15 之前,應用如果沒有進行簽名,首次打開的時候就會出現“惡意軟件”提示。
- 首先你要有一個蘋果開發者賬號 交完年費的那種
- arm64(M系列芯片) 架構打包需要增加兼容 x86 處理
- 開發者證書慎重申請,Developer ID Application 這個證書申請一個就夠了,其他證書可以刪除 這個得發郵件給蘋果刪除
- 申請一個本地證書
- 打開 https://developer.apple.com/account/resources/certificates/list 左側菜單欄切換到 Certificates
- Identifiers 配置 AppId
- Devices 把下圖中三個對勾的寫入 第一個選擇 macOS 第二個取一個名稱 第三個 在關於本機 系統信息 中找;
- 輸入 sudo vim ~/.bash_profile 來打開配置文件
- 按 i 進入編輯狀態
- 輸入變量:CSC_KEY_PASSWORD 密碼沒有設置可以不填寫
- 按 ESC 退出編輯;按 :wq 保存退出
- 刷新環境變量:source ~/.bash_profile
- 輸入 env 查看環境變量配置結果
const { defineConfig } = require('@vue/cli-service') const AutoImport = require('unplugin-auto-import/webpack') const Components = require('unplugin-vue-components/webpack') const { ElementPlusResolver } = require('unplugin-vue-components/resolvers') const Icons = require('unplugin-icons/webpack') const IconsResolver = require('unplugin-icons/resolver') const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin; module.exports = defineConfig({ transpileDependencies: true, lintOnSave: false, outputDir: "dist/web", configureWebpack: { plugins: [ new BundleAnalyzerPlugin(), AutoImport({ resolvers: [ // 自動導入element-plus組件 ElementPlusResolver(), // 自動導入圖標組件 IconsResolver({ prefix: 'Icon' }) ], }), Components({ resolvers: [ // 自動導入element-plus組件 ElementPlusResolver(), // 自動導入圖標組件 IconsResolver({ prefix: false, enabledCollections: ['ep'] }) ], }), // 自動導入圖標組件 Icons({ autoInstall: true, }) ] }, pluginOptions: { // vue-cli-plugin-electron-builder配置 electronBuilder: { nodeIntegration: true, "buildDependenciesFromSource": true, "nodeGypRebuild": false, "npmRebuild": false, // externals: ['usb'], customFileProtocol: './', externals: ['better-sqlite3'], builderOptions: { // productName: 'xender_electron.exe', artifactName: "${productName}_${version}.${ext}", appId: "com.andou.musixmeta", afterSign: "scripts/notarize.js", publish: [{ "provider": "generic", "channel": "latest", "url": "" //"url": "https://test-file.xendercdn.com/pcd/" //"url": "https://xendergif.web.app/", }], win: { requestedExecutionLevel: "requireAdministrator", icon: "build/electron-icon/icon.ico", // 圖標路徑 windows系統中icon需要256*256的ico格式圖片,更換應用圖標亦在此處 target: [{ // 打包成一個獨立的 exe 安裝程序 target: "nsis", // target: "msi", // 這個意思是打出來32 bit + 64 bit的包,但是要注意:這樣打包出來的安裝包體積比較大,所以建議直接打32的安裝包。 arch: [ "x64" // 'ia32' ], }, ], }, linux: { icon: "build/electron-icon/icon.png", target: "AppImage", }, "dmg": { "sign": false, "contents": [ { "x": 410, "y": 150, "type": "link", "path": "/Applications" }, { "x": 130, "y": 150, "type": "file" } ] }, mac: { hardenedRuntime: true, gatekeeperAssess: false, // entitlements: "entitlements.mac.plist", // entitlementsInherit: "entitlements.mac.plist", icon: 'build/electron-icon/icon.icns', category: 'public.app-category.utilities', // target: ['dmg', 'zip', 'pkg'], // arch: [ // "arm64" // ], target: { target: 'dmg', arch: 'x64' } }, files: ["**/*"], asar: true, nsis: { // 是否一鍵安裝,建議爲 false,可以讓用戶點擊下一步、下一步、下一步的形式安裝程序,如果爲true,當用戶雙擊構建好的程序,自動安裝程序並打開,即:一鍵安裝(one-click installer) oneClick: true, // 允許請求提升。 如果爲false,則用戶必須使用提升的權限重新啓動安裝程序。 allowElevation: true, // 允許修改安裝目錄,建議爲 true,是否允許用戶改變安裝目錄,默認是不允許 //allowToChangeInstallationDirectory: true, // 安裝圖標 installerIcon: "build/electron-icon/icon.ico", // 卸載圖標 uninstallerIcon: "build/electron-icon/icon.ico", // 安裝時頭部圖標 installerHeaderIcon: "build/electron-icon/icon.ico", // 創建桌面圖標 createDesktopShortcut: true, // 創建開始菜單圖標 createStartMenuShortcut: true, }, msi:{ oneClick: false, }, extraResources: { from: 'icons/', to: 'icons/' } }, chainWebpackMainProcess: (config) => { config.plugin("define").tap((args) => { args[0]["IS_ELECTRON"] = true; return args; }); }, chainWebpackRendererProcess: (config) => { config.plugin("define").tap((args) => { args[0]["IS_ELECTRON"] = true; return args; }); }, outputDir: "./dist/electron", mainProcessFile: "src/main/background.js", mainProcessWatch: ["src/main"], }, }, })