| #!/bin/bash |
| |
| |
|
|
| set -e |
|
|
| WORK_DIR="$1" |
| APP_NAME="$2" |
| PKG_NAME="$3" |
|
|
| echo "[HtStudio EXE] Başlıyor: $APP_NAME ($PKG_NAME)" |
|
|
| |
| PROJ="$WORK_DIR/electron_proj" |
| mkdir -p "$PROJ" |
|
|
| |
| cp "$WORK_DIR/index.html" "$PROJ/index.html" |
|
|
| |
| cat > "$PROJ/package.json" << EOF |
| { |
| "name": "$(echo $PKG_NAME | tr '.' '-')", |
| "version": "1.0.0", |
| "description": "$APP_NAME - HtStudio", |
| "main": "main.js", |
| "build": { |
| "appId": "$PKG_NAME", |
| "productName": "$APP_NAME", |
| "win": { |
| "target": "portable" |
| }, |
| "linux": { |
| "target": "AppImage" |
| } |
| } |
| } |
| EOF |
|
|
| |
| cat > "$PROJ/main.js" << 'MAINJS' |
| const { app, BrowserWindow } = require('electron'); |
| const path = require('path'); |
|
|
| function createWindow() { |
| const win = new BrowserWindow({ |
| width: 1024, |
| height: 768, |
| webPreferences: { |
| nodeIntegration: false, |
| contextIsolation: true |
| } |
| }); |
| win.loadFile('index.html'); |
| win.setMenuBarVisibility(false); |
| } |
|
|
| app.whenReady().then(createWindow); |
| app.on('window-all-closed', () => { if (process.platform !== 'darwin') app.quit(); }); |
| MAINJS |
|
|
| echo "[HtStudio EXE] npm install electron..." |
| cd "$PROJ" |
| npm install --save-dev electron --prefer-offline 2>&1 | tail -5 |
|
|
| echo "[HtStudio EXE] electron-builder ile EXE derleniyor..." |
| npx electron-builder --win portable --x64 2>&1 | tail -20 |
|
|
| |
| EXE_FILE=$(find "$PROJ/dist" -name "*.exe" 2>/dev/null | head -1) |
|
|
| if [ -z "$EXE_FILE" ]; then |
| echo "[HtStudio EXE] HATA: EXE bulunamadı" |
| exit 1 |
| fi |
|
|
| cp "$EXE_FILE" "$WORK_DIR/output.exe" |
| echo "[HtStudio EXE] Başarılı: $WORK_DIR/output.exe" |
|
|