This guide covers how to build and distribute the Codiner application for Windows, macOS, and Linux platforms.
- Node.js >= 20
- npm or yarn
- Git
- Visual Studio Build Tools (for native modules)
- Windows 10/11
- PowerShell
- macOS 10.13 or later
- Xcode Command Line Tools:
xcode-select --install - Apple Developer Account (for code signing)
- Ubuntu 18.04+ or equivalent
- Build tools:
sudo apt-get install build-essential libnss3-dev libatk-bridge2.0-dev libdrm2 libxkbcommon-dev libgtk-3-dev libgbm-dev
npm installnpm startnpm run packagenpm run make# Build for Windows
npm run make -- --platform win32
# Package only
npm run package -- --platform win32- Installer:
out/Codiner-win32-x64/Codiner-Setup-0.32.0.exe - Portable:
out/Codiner-win32-x64/Codiner-win32-x64-0.32.0.zip
Set environment variables for code signing:
export SM_CODE_SIGNING_CERT_SHA1_HASH="your_cert_hash"# Build for macOS
npm run make -- --platform darwin
# Package only
npm run package -- --platform darwinexport APPLE_TEAM_ID="YOUR_TEAM_ID"
export APPLE_ID="your.email@domain.com"
export APPLE_PASSWORD="your-app-specific-password"- DMG (Recommended):
out/Codiner-darwin-x64/Codiner-0.32.0.dmg - ZIP:
out/Codiner-darwin-x64/Codiner-darwin-x64-0.32.0.zip
export E2E_TEST_BUILD=true
npm run make -- --platform darwinDebian-based (Ubuntu, Linux Mint, etc.)
# Build DEB package
npm run make -- --platform linux --targets debRPM-based (Fedora, CentOS, RHEL)
# Build RPM package
npm run make -- --platform linux --targets rpmGeneric Linux (AppImage/tar.gz)
# Build ZIP archive
npm run make -- --platform linux --targets zipnpm run make -- --platform linuxDebian (.deb):
out/Codiner-linux-x64/Codiner_0.32.0_amd64.deb
RPM (.rpm):
out/Codiner-linux-x64/Codiner-0.32.0.x86_64.rpm
Generic (.zip):
out/Codiner-linux-x64/Codiner-linux-x64-0.32.0.zip
The Linux builds include:
- Protocol handler:
x-scheme-handler/codinerfor URL handling - Desktop integration: Proper .desktop file creation
- Icon support: PNG icons for desktop integration
The following makers are configured in forge.config.ts:
makers: [
new MakerSquirrel({}), // Windows installer
new MakerDMG({ format: "ULFO" }), // macOS DMG
new MakerZIP({}, ["darwin"]), // macOS ZIP (fallback)
new MakerRpm({}), // Linux RPM
new MakerDeb({ // Linux DEB
options: {
mimeType: ["x-scheme-handler/codiner"],
},
}),
]{
"package": "npm run clean && electron-forge package",
"make": "npm run clean && electron-forge make",
"publish": "npm run clean && electron-forge publish"
}# Install build tools (deprecated but still works)
npm install --global windows-build-tools
# Or use prebuilt binaries
npm config set rebuild:force false- Verify Apple Developer certificate is installed
- Check
APPLE_TEAM_IDmatches your certificate - Ensure Xcode Command Line Tools are installed
# Install build dependencies
sudo apt-get update
sudo apt-get install build-essential libnss3-dev libatk-bridge2.0-dev libdrm2 libxkbcommon-dev libgtk-3-dev libgbm-dev# Rebuild native modules
npx electron-rebuild
# Or use prebuilt binaries
npm run packageTo see detailed build logs:
DEBUG=electron-forge:* npm run makeTo ensure clean builds:
npm run clean
npm run makeThe project is configured for GitHub releases via Electron Forge:
publishers: [
{
name: "@electron-forge/publisher-github",
config: {
repository: {
owner: "Subhan-Haider",
name: "Codiner_Windows",
},
draft: true,
},
},
]After building, upload the generated files from the out/ directory to your distribution platform.
- Build for your current platform
- Test the generated installer/package
- Verify app functionality
- Check for any missing dependencies
For cross-platform development, consider using:
- GitHub Actions with macOS/Windows/Linux runners
- Docker containers for Linux builds
- Cloud build services (e.g., Electron Build Service)
- Use
asar: truefor smaller bundle sizes - Configure appropriate maker options
- Consider code splitting for large applications