htstudio-builder-python / build_exe.sh
CrimsonSorcerer's picture
Upload 4 files
4f87b7e verified
Raw
History Blame Contribute Delete
1.77 kB
#!/bin/bash
# build_exe.sh <work_dir> <app_name> <pkg_name>
# Çıktı: <work_dir>/output.exe
set -e
WORK_DIR="$1"
APP_NAME="$2"
PKG_NAME="$3"
echo "[HtStudio EXE] Başlıyor: $APP_NAME ($PKG_NAME)"
# Electron proje klasörü
PROJ="$WORK_DIR/electron_proj"
mkdir -p "$PROJ"
# index.html zaten $WORK_DIR içinde, kopyala
cp "$WORK_DIR/index.html" "$PROJ/index.html"
# package.json
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
# main.js (Electron ana dosyası)
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
# Çıktıyı bul
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"