From 589ff1ad381d90710864d2eefb42a859e935e266 Mon Sep 17 00:00:00 2001 From: Jan Prochazka Date: Tue, 12 Apr 2022 21:52:56 +0200 Subject: [PATCH 01/13] apple code signing --- .github/workflows/build-app-beta.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/build-app-beta.yaml b/.github/workflows/build-app-beta.yaml index b32ef51bf..03153247d 100644 --- a/.github/workflows/build-app-beta.yaml +++ b/.github/workflows/build-app-beta.yaml @@ -48,6 +48,8 @@ jobs: GH_TOKEN: ${{ secrets.GH_TOKEN }} # token for electron publish WIN_CSC_LINK: ${{ secrets.WINCERT_CERTIFICATE }} WIN_CSC_KEY_PASSWORD: ${{ secrets.WINCERT_PASSWORD }} + CSC_LINK: ${{ secrets.APPLECERT_CERTIFICATE }} + CSC_KEY_PASSWORD: ${{ secrets.APPLECERT_PASSWORD }} - name: Save snap login if: matrix.os == 'ubuntu-18.04' From f83d45356f2303a068c627e8cd93ab0fe07faf89 Mon Sep 17 00:00:00 2001 From: Jan Prochazka Date: Tue, 12 Apr 2022 21:53:16 +0200 Subject: [PATCH 02/13] v4.8.4-beta.3 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index f1c69a0a6..7ae679905 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "private": true, - "version": "4.8.4-beta.2", + "version": "4.8.4-beta.3", "name": "dbgate-all", "workspaces": [ "packages/*", From ce6b750a1ccf6727a2a1e932d917bc5fb3178a6c Mon Sep 17 00:00:00 2001 From: Jan Prochazka Date: Tue, 12 Apr 2022 22:35:10 +0200 Subject: [PATCH 03/13] build only mac --- .github/workflows/build-app-beta.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build-app-beta.yaml b/.github/workflows/build-app-beta.yaml index 03153247d..22b0d2a2b 100644 --- a/.github/workflows/build-app-beta.yaml +++ b/.github/workflows/build-app-beta.yaml @@ -11,8 +11,8 @@ jobs: strategy: matrix: - # os: [ubuntu-18.04, windows-2016] - os: [macOS-10.15, windows-2022, ubuntu-18.04] + # os: [macOS-10.15, windows-2022, ubuntu-18.04] + os: [macOS-10.15] steps: - name: Context From c55c1f3aaf9321d2a858eabbc38569443bfe10f3 Mon Sep 17 00:00:00 2001 From: Jan Prochazka Date: Tue, 12 Apr 2022 22:35:24 +0200 Subject: [PATCH 04/13] v4.8.4-beta.4 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 7ae679905..845dead54 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "private": true, - "version": "4.8.4-beta.3", + "version": "4.8.4-beta.4", "name": "dbgate-all", "workspaces": [ "packages/*", From 89fdfbe8c15b14b17f1fc5360be686b4b58f66ed Mon Sep 17 00:00:00 2001 From: Jan Prochazka Date: Thu, 14 Apr 2022 08:08:17 +0200 Subject: [PATCH 05/13] arm build --- .github/workflows/build-app-beta.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-app-beta.yaml b/.github/workflows/build-app-beta.yaml index 22b0d2a2b..56e264436 100644 --- a/.github/workflows/build-app-beta.yaml +++ b/.github/workflows/build-app-beta.yaml @@ -12,7 +12,7 @@ jobs: strategy: matrix: # os: [macOS-10.15, windows-2022, ubuntu-18.04] - os: [macOS-10.15] + os: [macos-arm64] steps: - name: Context From b254c90f33fbb015caada34c69d2ffd246d4cf3f Mon Sep 17 00:00:00 2001 From: Jan Prochazka Date: Thu, 14 Apr 2022 08:08:30 +0200 Subject: [PATCH 06/13] v4.8.4-beta.5 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 845dead54..d4bce62bd 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "private": true, - "version": "4.8.4-beta.4", + "version": "4.8.4-beta.5", "name": "dbgate-all", "workspaces": [ "packages/*", From bf4b7beadb99bd9f099a1f6f950f7e2ca24d97ba Mon Sep 17 00:00:00 2001 From: Jan Prochazka Date: Thu, 14 Apr 2022 08:10:18 +0200 Subject: [PATCH 07/13] mac universal build --- .github/workflows/build-app-beta.yaml | 2 +- app/package.json | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build-app-beta.yaml b/.github/workflows/build-app-beta.yaml index 56e264436..22b0d2a2b 100644 --- a/.github/workflows/build-app-beta.yaml +++ b/.github/workflows/build-app-beta.yaml @@ -12,7 +12,7 @@ jobs: strategy: matrix: # os: [macOS-10.15, windows-2022, ubuntu-18.04] - os: [macos-arm64] + os: [macOS-10.15] steps: - name: Context diff --git a/app/package.json b/app/package.json index 77566f39b..0c9466c0a 100644 --- a/app/package.json +++ b/app/package.json @@ -26,8 +26,7 @@ "target": { "target": "default", "arch": [ - "arm64", - "x64" + "universal" ] } }, From 0187bb74eec19846184953e1203f8d7430b75f41 Mon Sep 17 00:00:00 2001 From: Jan Prochazka Date: Thu, 14 Apr 2022 08:10:33 +0200 Subject: [PATCH 08/13] v4.8.4-beta.6 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index d4bce62bd..27a130fb1 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "private": true, - "version": "4.8.4-beta.5", + "version": "4.8.4-beta.6", "name": "dbgate-all", "workspaces": [ "packages/*", From 5a42e8e963f0876420fd3dfdb682d650936fc776 Mon Sep 17 00:00:00 2001 From: Jan Prochazka Date: Thu, 14 Apr 2022 11:05:33 +0200 Subject: [PATCH 09/13] app exit - mac --- app/src/electron.js | 74 ++++++++++++++++-------- app/src/mainMenuDefinition.js | 2 +- packages/web/src/commands/stdCommands.ts | 8 ++- 3 files changed, 57 insertions(+), 27 deletions(-) diff --git a/app/src/electron.js b/app/src/electron.js index c9fb22cde..f98776ecd 100644 --- a/app/src/electron.js +++ b/app/src/electron.js @@ -20,6 +20,7 @@ const { settings } = require('cluster'); const configRootPath = path.join(app.getPath('userData'), 'config-root.json'); let initialConfig = {}; +let apiLoaded = false; try { initialConfig = JSON.parse(fs.readFileSync(configRootPath, { encoding: 'utf-8' })); @@ -41,6 +42,7 @@ try { // be closed automatically when the JavaScript object is garbage collected. let mainWindow; let mainMenu; +let runCommandOnLoad = null; log.transports.file.level = 'debug'; autoUpdater.logger = log; @@ -59,15 +61,24 @@ function formatKeyText(keyText) { return keyText.replace('CtrlOrCommand+', 'Ctrl+'); } -function commandItem(id) { +function commandItem(item) { + const id = item.command; const command = commands[id]; + if (item.skipInApp) { + return { skip: true }; + } return { id, label: command ? command.menuName || command.toolbarName || command.name : id, accelerator: formatKeyText(command ? command.keyText : undefined), enabled: command ? command.enabled : false, click() { - mainWindow.webContents.send('run-command', id); + if (mainWindow) { + mainWindow.webContents.send('run-command', id); + } else { + runCommandOnLoad = id; + createWindow(); + } }, }; } @@ -79,11 +90,17 @@ function buildMenu() { } if (item.command) { - return commandItem(item.command); + return commandItem(item); } }); - return Menu.buildFromTemplate(template); + const templateFiltered = _cloneDeepWith(template, item => { + if (Array.isArray(item) && item.find(x => x.skip)) { + return item.filter(x => x && !x.skip); + } + }); + + return Menu.buildFromTemplate(templateFiltered); } ipcMain.on('update-commands', async (event, arg) => { @@ -105,8 +122,12 @@ ipcMain.on('update-commands', async (event, arg) => { menu.enabled = command.enabled; } }); -ipcMain.on('close-window', async (event, arg) => { - mainWindow.close(); +ipcMain.on('quit-app', async (event, arg) => { + if (os.platform() == 'darwin') { + app.quit(); + } else { + mainWindow.close(); + } }); ipcMain.on('set-title', async (event, arg) => { mainWindow.setTitle(arg); @@ -250,27 +271,34 @@ function createWindow() { mainWindow.setIcon(path.resolve(__dirname, '../icon.png')); } // mainWindow.webContents.toggleDevTools(); + if (runCommandOnLoad) { + mainWindow.webContents.send('run-command', runCommandOnLoad); + runCommandOnLoad = null; + } } - const apiPackage = path.join( - __dirname, - process.env.DEVMODE ? '../../packages/api/src/index' : '../packages/api/dist/bundle.js' - ); + if (!apiLoaded) { + const apiPackage = path.join( + __dirname, + process.env.DEVMODE ? '../../packages/api/src/index' : '../packages/api/dist/bundle.js' + ); - global.API_PACKAGE = apiPackage; - global.NATIVE_MODULES = path.join(__dirname, 'nativeModules'); + global.API_PACKAGE = apiPackage; + global.NATIVE_MODULES = path.join(__dirname, 'nativeModules'); - // console.log('global.API_PACKAGE', global.API_PACKAGE); - const api = require(apiPackage); - // console.log( - // 'REQUIRED', - // path.resolve( - // path.join(__dirname, process.env.DEVMODE ? '../../packages/api/src/index' : '../packages/api/dist/bundle.js') - // ) - // ); - const main = api.getMainModule(); - main.initializeElectronSender(mainWindow.webContents); - main.useAllControllers(null, electron); + // console.log('global.API_PACKAGE', global.API_PACKAGE); + const api = require(apiPackage); + // console.log( + // 'REQUIRED', + // path.resolve( + // path.join(__dirname, process.env.DEVMODE ? '../../packages/api/src/index' : '../packages/api/dist/bundle.js') + // ) + // ); + const main = api.getMainModule(); + main.initializeElectronSender(mainWindow.webContents); + main.useAllControllers(null, electron); + apiLoaded = true; + } loadMainWindow(); diff --git a/app/src/mainMenuDefinition.js b/app/src/mainMenuDefinition.js index 6cd62895a..94bcbd0ea 100644 --- a/app/src/mainMenuDefinition.js +++ b/app/src/mainMenuDefinition.js @@ -17,7 +17,7 @@ module.exports = [ { command: 'group.saveAs', hideDisabled: true }, { divider: true }, { command: 'file.exit', hideDisabled: true }, - { command: 'app.logout', hideDisabled: true }, + { command: 'app.logout', hideDisabled: true, skipInApp: true }, ], }, { diff --git a/packages/web/src/commands/stdCommands.ts b/packages/web/src/commands/stdCommands.ts index 058afaf5a..7b4f5d641 100644 --- a/packages/web/src/commands/stdCommands.ts +++ b/packages/web/src/commands/stdCommands.ts @@ -29,6 +29,7 @@ import { apiCall } from '../utility/api'; import runCommand from './runCommand'; import { openWebLink } from '../utility/exportFileTools'; import { getSettings } from '../utility/metadataLoaders'; +import { isMac } from '../utility/common'; // function themeCommand(theme: ThemeDefinition) { // return { @@ -97,7 +98,7 @@ registerCommand({ toolbarOrder: 2, name: 'Query', toolbarName: 'New query', - keyText: 'CtrlOrCommand+Q', + keyText: 'CtrlOrCommand+T', onClick: () => newQuery(), }); @@ -457,9 +458,10 @@ if (hasPermission('settings/change')) { registerCommand({ id: 'file.exit', category: 'File', - name: 'Exit', + name: isMac() ? 'Quit DbGate' : 'Exit', + keyText: isMac() ? 'Command+Q' : null, testEnabled: () => getElectron() != null, - onClick: () => getElectron().send('close-window'), + onClick: () => getElectron().send('quit-app'), }); registerCommand({ From cc639df5667fc1df6e0d206ba40358a2bed00ac0 Mon Sep 17 00:00:00 2001 From: Jan Prochazka Date: Thu, 14 Apr 2022 11:35:09 +0200 Subject: [PATCH 10/13] handle ctrl & command key --- packages/web/src/datagrid/DataGridCore.svelte | 6 ++++-- packages/web/src/datagrid/InplaceEditor.svelte | 3 ++- packages/web/src/designer/DesignerTable.svelte | 3 ++- packages/web/src/formview/FormView.svelte | 4 +++- packages/web/src/utility/common.ts | 7 +++++++ 5 files changed, 18 insertions(+), 5 deletions(-) diff --git a/packages/web/src/datagrid/DataGridCore.svelte b/packages/web/src/datagrid/DataGridCore.svelte index 7cd5be1e2..febd606c1 100644 --- a/packages/web/src/datagrid/DataGridCore.svelte +++ b/packages/web/src/datagrid/DataGridCore.svelte @@ -306,6 +306,7 @@ import EditJsonModal from '../modals/EditJsonModal.svelte'; import { apiCall } from '../utility/api'; import getElectron from '../utility/getElectron'; + import { isCtrlOrCommandKey } from '../utility/common'; export let onLoadNextData = undefined; export let grider = undefined; @@ -976,7 +977,7 @@ const oldCurrentCell = currentCell; currentCell = cell; - if (event.ctrlKey) { + if (isCtrlOrCommandKey(event)) { if (isRegularCell(cell)) { if (selectedCells.find(x => x[0] == cell[0] && x[1] == cell[1])) { selectedCells = selectedCells.filter(x => x[0] != cell[0] || x[1] != cell[1]); @@ -1116,6 +1117,7 @@ if ( !event.ctrlKey && !event.altKey && + !event.metaKey && ((event.keyCode >= keycodes.a && event.keyCode <= keycodes.z) || (event.keyCode >= keycodes.n0 && event.keyCode <= keycodes.n9) || (event.keyCode >= keycodes.numPad0 && event.keyCode <= keycodes.numPad9) || @@ -1150,7 +1152,7 @@ function handleCursorMove(event) { if (!isRegularCell(currentCell)) return null; let rowCount = grider.rowCount; - if (event.ctrlKey) { + if (isCtrlOrCommandKey(event)) { switch (event.keyCode) { case keycodes.upArrow: case keycodes.pageUp: diff --git a/packages/web/src/datagrid/InplaceEditor.svelte b/packages/web/src/datagrid/InplaceEditor.svelte index 4b27ebd1b..81d85d389 100644 --- a/packages/web/src/datagrid/InplaceEditor.svelte +++ b/packages/web/src/datagrid/InplaceEditor.svelte @@ -13,6 +13,7 @@ import createRef from '../utility/createRef'; import _ from 'lodash'; import { arrayToHexString, parseCellValue, stringifyCellValue } from 'dbgate-tools'; + import { isCtrlOrCommandKey } from '../utility/common'; export let inplaceEditorState; export let dispatchInsplaceEditor; @@ -43,7 +44,7 @@ dispatchInsplaceEditor({ type: 'close', mode: 'enter' }); break; case keycodes.s: - if (event.ctrlKey) { + if (isCtrlOrCommandKey(event)) { if (isChangedRef.get()) { onSetValue(parseCellValue(domEditor.value)); // grider.setCellValue(rowIndex, uniqueName, editor.value); diff --git a/packages/web/src/designer/DesignerTable.svelte b/packages/web/src/designer/DesignerTable.svelte index ff7d9b9d6..072d00533 100644 --- a/packages/web/src/designer/DesignerTable.svelte +++ b/packages/web/src/designer/DesignerTable.svelte @@ -10,6 +10,7 @@ import { showModal } from '../modals/modalTools'; import { currentThemeDefinition } from '../stores'; import VirtualForeignKeyEditorModal from '../tableeditor/VirtualForeignKeyEditorModal.svelte'; + import { isCtrlOrCommandKey } from '../utility/common'; import contextMenu from '../utility/contextMenu'; import moveDrag from '../utility/moveDrag'; import ColumnLine from './ColumnLine.svelte'; @@ -217,7 +218,7 @@ e.stopPropagation(); onBringToFront(table); if (settings?.canSelectTables && !table?.isSelectedTable) { - onSelectTable(table, e.ctrlKey); + onSelectTable(table, isCtrlOrCommandKey(e)); } } }} diff --git a/packages/web/src/formview/FormView.svelte b/packages/web/src/formview/FormView.svelte index 7e75085e5..06a00b3df 100644 --- a/packages/web/src/formview/FormView.svelte +++ b/packages/web/src/formview/FormView.svelte @@ -177,6 +177,7 @@ import { apiCall } from '../utility/api'; import { copyTextToClipboard, extractRowCopiedValue } from '../utility/clipboard'; + import { isCtrlOrCommandKey } from '../utility/common'; import contextMenu, { getContextMenu, registerMenu } from '../utility/contextMenu'; import createActivator, { getActiveComponent } from '../utility/createActivator'; import createReducer from '../utility/createReducer'; @@ -383,6 +384,7 @@ if ( !event.ctrlKey && + !event.metaKey && !event.altKey && ((event.keyCode >= keycodes.a && event.keyCode <= keycodes.z) || (event.keyCode >= keycodes.n0 && event.keyCode <= keycodes.n9) || @@ -472,7 +474,7 @@ return moveCurrentCell(columnIndex % formDisplay.columns.length, Math.floor(columnIndex / rowCount) * 2); }; - if (event.ctrlKey) { + if (isCtrlOrCommandKey(event)) { switch (event.keyCode) { case keycodes.leftArrow: return moveCurrentCell(currentCell[0], 0); diff --git a/packages/web/src/utility/common.ts b/packages/web/src/utility/common.ts index 2e31ab5a6..423555269 100644 --- a/packages/web/src/utility/common.ts +++ b/packages/web/src/utility/common.ts @@ -64,3 +64,10 @@ export function resolveKeyText(keyText: string): string { } return keyText.replace('CtrlOrCommand+', 'Ctrl+'); } + +export function isCtrlOrCommandKey(event) { + if (isMac()) { + return event.metaKey; + } + return event.ctrlKey; +} From 374c8205673de5c4c59cdd945d4f3e81d7af0219 Mon Sep 17 00:00:00 2001 From: Jan Prochazka Date: Thu, 14 Apr 2022 12:33:03 +0200 Subject: [PATCH 11/13] invoke commands from menu on mac --- app/src/electron.js | 10 ++++++---- packages/web/src/App.svelte | 2 ++ 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/app/src/electron.js b/app/src/electron.js index f98776ecd..0a424f0c1 100644 --- a/app/src/electron.js +++ b/app/src/electron.js @@ -138,6 +138,12 @@ ipcMain.on('open-link', async (event, arg) => { ipcMain.on('open-dev-tools', () => { mainWindow.webContents.openDevTools(); }); +ipcMain.on('app-started', async (event, arg) => { + if (runCommandOnLoad) { + mainWindow.webContents.send('run-command', runCommandOnLoad); + runCommandOnLoad = null; + } +}); ipcMain.on('window-action', async (event, arg) => { switch (arg) { case 'minimize': @@ -271,10 +277,6 @@ function createWindow() { mainWindow.setIcon(path.resolve(__dirname, '../icon.png')); } // mainWindow.webContents.toggleDevTools(); - if (runCommandOnLoad) { - mainWindow.webContents.send('run-command', runCommandOnLoad); - runCommandOnLoad = null; - } } if (!apiLoaded) { diff --git a/packages/web/src/App.svelte b/packages/web/src/App.svelte index 8ab6892ff..8edbf3d54 100644 --- a/packages/web/src/App.svelte +++ b/packages/web/src/App.svelte @@ -17,6 +17,7 @@ import { apiCall } from './utility/api'; import { getConfig, getSettings, getUsedApps } from './utility/metadataLoaders'; import AppTitleProvider from './utility/AppTitleProvider.svelte'; + import getElectron from './utility/getElectron'; let loadedApi = false; let loadedPlugins = false; @@ -63,6 +64,7 @@ if (loadedApi && $loadingPluginStore?.loaded) { setAppLoaded(); loadedPlugins = true; + getElectron()?.send('app-started'); } } From d52cfadfc44175301902b4fc2d3e3eba9ffe53b6 Mon Sep 17 00:00:00 2001 From: Jan Prochazka Date: Thu, 14 Apr 2022 13:21:06 +0200 Subject: [PATCH 12/13] mac menu --- app/src/electron.js | 29 ++++++++++++++++++++---- packages/web/src/commands/stdCommands.ts | 4 ++-- 2 files changed, 26 insertions(+), 7 deletions(-) diff --git a/app/src/electron.js b/app/src/electron.js index 0a424f0c1..e2d7f7013 100644 --- a/app/src/electron.js +++ b/app/src/electron.js @@ -22,6 +22,8 @@ const configRootPath = path.join(app.getPath('userData'), 'config-root.json'); let initialConfig = {}; let apiLoaded = false; +const isMac = () => os.platform() == 'darwin'; + try { initialConfig = JSON.parse(fs.readFileSync(configRootPath, { encoding: 'utf-8' })); } catch (err) { @@ -84,7 +86,7 @@ function commandItem(item) { } function buildMenu() { - const template = _cloneDeepWith(mainMenuDefinition, item => { + let template = _cloneDeepWith(mainMenuDefinition, item => { if (item.divider) { return { type: 'separator' }; } @@ -94,13 +96,30 @@ function buildMenu() { } }); - const templateFiltered = _cloneDeepWith(template, item => { + template = _cloneDeepWith(template, item => { if (Array.isArray(item) && item.find(x => x.skip)) { return item.filter(x => x && !x.skip); } }); - return Menu.buildFromTemplate(templateFiltered); + if (isMac()) { + template = [ + { + label: 'DbGate', + submenu: [ + commandItem({ command: 'about.show' }), + { role: 'services' }, + { role: 'hide' }, + { role: 'hideOthers' }, + { role: 'unhide' }, + { role: 'quit' }, + ], + }, + ...template, + ]; + } + + return Menu.buildFromTemplate(template); } ipcMain.on('update-commands', async (event, arg) => { @@ -123,7 +142,7 @@ ipcMain.on('update-commands', async (event, arg) => { } }); ipcMain.on('quit-app', async (event, arg) => { - if (os.platform() == 'darwin') { + if (isMac()) { app.quit(); } else { mainWindow.close(); @@ -329,7 +348,7 @@ app.on('ready', onAppReady); app.on('window-all-closed', function () { // On OS X it is common for applications and their menu bar // to stay active until the user quits explicitly with Cmd + Q - if (process.platform !== 'darwin') { + if (!isMac()) { app.quit(); } }); diff --git a/packages/web/src/commands/stdCommands.ts b/packages/web/src/commands/stdCommands.ts index 7b4f5d641..359b2c5c2 100644 --- a/packages/web/src/commands/stdCommands.ts +++ b/packages/web/src/commands/stdCommands.ts @@ -458,8 +458,8 @@ if (hasPermission('settings/change')) { registerCommand({ id: 'file.exit', category: 'File', - name: isMac() ? 'Quit DbGate' : 'Exit', - keyText: isMac() ? 'Command+Q' : null, + name: isMac() ? 'Quit' : 'Exit', + // keyText: isMac() ? 'Command+Q' : null, testEnabled: () => getElectron() != null, onClick: () => getElectron().send('quit-app'), }); From 8032bf272bf4e25f0416f0c2f348e7bb56e37f8d Mon Sep 17 00:00:00 2001 From: Jan Prochazka Date: Thu, 14 Apr 2022 13:27:26 +0200 Subject: [PATCH 13/13] product name --- app/package.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/package.json b/app/package.json index 0c9466c0a..4d3146bb0 100644 --- a/app/package.json +++ b/app/package.json @@ -15,8 +15,9 @@ "url": "https://github.com/dbgate/dbgate.git" }, "build": { - "artifactName": "${productName}-${version}-${os}_${arch}.${ext}", + "artifactName": "dbgate-${version}-${os}_${arch}.${ext}", "appId": "org.dbgate", + "productName": "DbGate", "mac": { "category": "database", "icon": "icon512.png",