Update the rebranding and fix issues
This commit is contained in:
348
README-BUILD-SCRIPT.md
Normal file
348
README-BUILD-SCRIPT.md
Normal file
@@ -0,0 +1,348 @@
|
||||
# MoreMinimore Build Script Guide
|
||||
|
||||
## 🎯 Overview
|
||||
|
||||
The `build-moreminimore-app.sh` script is a comprehensive build automation tool that handles the complete process of building the MoreMinimore Electron application with proper configuration, error handling, and cross-platform support.
|
||||
|
||||
## 🚀 Quick Start
|
||||
|
||||
### **Development Build (Recommended for Testing)**
|
||||
```bash
|
||||
./scripts/build-moreminimore-app.sh
|
||||
```
|
||||
|
||||
### **Production Build (Requires Code Signing)**
|
||||
```bash
|
||||
./scripts/build-moreminimore-app.sh --production
|
||||
```
|
||||
|
||||
## 📋 Features
|
||||
|
||||
### **✅ Automatic Code Signing Management**
|
||||
- **Development builds**: Automatically disables code signing by setting `E2E_TEST_BUILD=true`
|
||||
- **Production builds**: Requires Apple Developer credentials for proper code signing
|
||||
|
||||
### **✅ Comprehensive Build Process**
|
||||
- Prerequisites checking (Node.js, npm, logo files)
|
||||
- Dependency installation
|
||||
- Build artifact cleanup
|
||||
- TypeScript compilation verification
|
||||
- Application building with Electron Forge
|
||||
- Build verification and output reporting
|
||||
|
||||
### **✅ Error Handling & Troubleshooting**
|
||||
- Detailed error messages with troubleshooting steps
|
||||
- Verbose mode for debugging
|
||||
- Automatic logo generation if missing
|
||||
- Graceful failure handling
|
||||
|
||||
### **✅ Cross-Platform Support**
|
||||
- **macOS**: Creates `.zip` distribution files
|
||||
- **Linux**: Creates `.deb` packages
|
||||
- **Windows**: Creates `.exe` installers
|
||||
|
||||
## 🔧 Usage Options
|
||||
|
||||
### **Command Line Options**
|
||||
```bash
|
||||
./scripts/build-moreminimore-app.sh [OPTIONS]
|
||||
|
||||
OPTIONS:
|
||||
--production Build for production (requires code signing setup)
|
||||
--clean-only Only clean build artifacts, don't build
|
||||
--skip-deps Skip dependency installation
|
||||
--verbose Enable verbose output
|
||||
--help, -h Show help message
|
||||
```
|
||||
|
||||
### **Usage Examples**
|
||||
|
||||
#### **Standard Development Build**
|
||||
```bash
|
||||
./scripts/build-moreminimore-app.sh
|
||||
```
|
||||
- Disables code signing automatically
|
||||
- Installs dependencies
|
||||
- Builds for current platform
|
||||
- Creates distributable package
|
||||
|
||||
#### **Production Build**
|
||||
```bash
|
||||
./scripts/build-moreminimore-app.sh --production
|
||||
```
|
||||
- Enables code signing
|
||||
- Requires Apple Developer credentials
|
||||
- Creates production-ready installer
|
||||
|
||||
#### **Clean Build Artifacts**
|
||||
```bash
|
||||
./scripts/build-moreminimore-app.sh --clean-only
|
||||
```
|
||||
- Removes `out/` directory
|
||||
- Cleans scaffold node_modules
|
||||
- Prepares for fresh build
|
||||
|
||||
#### **Verbose Debug Build**
|
||||
```bash
|
||||
./scripts/build-moreminimore-app.sh --verbose
|
||||
```
|
||||
- Shows detailed build output
|
||||
- Enables Electron Forge debug logging
|
||||
- Helpful for troubleshooting
|
||||
|
||||
#### **Fast Build (Skip Dependencies)**
|
||||
```bash
|
||||
./scripts/build-moreminimore-app.sh --skip-deps
|
||||
```
|
||||
- Skips `npm install`
|
||||
- Useful for repeated builds
|
||||
- Assumes dependencies are current
|
||||
|
||||
## 📁 Build Output
|
||||
|
||||
### **Development Builds**
|
||||
- **Location**: `out/make/zip/darwin/arm64/`
|
||||
- **File**: `moreminimore-darwin-arm64-0.31.0-beta.1.zip`
|
||||
- **Size**: ~180MB
|
||||
- **Code Signing**: Disabled (for development/testing)
|
||||
|
||||
### **Production Builds**
|
||||
- **Location**: `out/make/` with platform-specific subdirectories
|
||||
- **Formats**:
|
||||
- macOS: `.zip` and `.dmg`
|
||||
- Windows: `.exe` installer
|
||||
- Linux: `.deb` package
|
||||
- **Code Signing**: Enabled (requires credentials)
|
||||
|
||||
## 🔑 Code Signing Configuration
|
||||
|
||||
### **Development Builds**
|
||||
Automatically handled by setting:
|
||||
```bash
|
||||
export E2E_TEST_BUILD=true
|
||||
```
|
||||
This tells Electron Forge to skip code signing, which is perfect for development and testing.
|
||||
|
||||
### **Production Builds**
|
||||
Requires the following environment variables:
|
||||
|
||||
```bash
|
||||
export APPLE_TEAM_ID="your-apple-developer-team-id"
|
||||
export APPLE_ID="your-apple-id@example.com"
|
||||
export APPLE_PASSWORD="your-app-specific-password"
|
||||
export SM_CODE_SIGNING_CERT_SHA1_HASH="your-certificate-sha1-hash"
|
||||
```
|
||||
|
||||
#### **Setting Up Apple Developer Credentials**
|
||||
|
||||
1. **Get Apple Developer Account**
|
||||
- Sign up at [developer.apple.com](https://developer.apple.com)
|
||||
- Enroll in Apple Developer Program ($99/year)
|
||||
|
||||
2. **Create Development Certificate**
|
||||
- Go to Xcode → Preferences → Accounts
|
||||
- Add your Apple ID
|
||||
- Create a development certificate
|
||||
|
||||
3. **Find Your Team ID**
|
||||
```bash
|
||||
# This will show your team ID
|
||||
security find-identity -v -p codesigning
|
||||
```
|
||||
|
||||
4. **Generate App-Specific Password**
|
||||
- Go to [appleid.apple.com](https://appleid.apple.com)
|
||||
- Sign in with your Apple ID
|
||||
- Go to "Security" → "App-Specific Passwords"
|
||||
- Generate a new password for Electron building
|
||||
|
||||
5. **Get Certificate Hash**
|
||||
```bash
|
||||
# Get the SHA1 hash of your certificate
|
||||
security find-certificate -c "Your Certificate Name" -p | openssl x509 -noout -fingerprint -sha1
|
||||
```
|
||||
|
||||
## 🛠️ Troubleshooting
|
||||
|
||||
### **Common Issues & Solutions**
|
||||
|
||||
#### **Code Signing Errors**
|
||||
```
|
||||
Error: Failed to codesign your application
|
||||
```
|
||||
**Solution**: Use development build mode:
|
||||
```bash
|
||||
./scripts/build-moreminimore-app.sh
|
||||
```
|
||||
|
||||
#### **Missing Logo Files**
|
||||
```
|
||||
Error: Source logo not found: assets/moreminimorelogo.png
|
||||
```
|
||||
**Solution**: Ensure your logo is present:
|
||||
```bash
|
||||
# Place your logo at:
|
||||
assets/moreminimorelogo.png
|
||||
```
|
||||
|
||||
#### **TypeScript Compilation Errors**
|
||||
```
|
||||
Error: TypeScript compilation failed
|
||||
```
|
||||
**Solution**: Check compilation manually:
|
||||
```bash
|
||||
npm run ts
|
||||
```
|
||||
|
||||
#### **Dependency Issues**
|
||||
```
|
||||
Error: npm install failed
|
||||
```
|
||||
**Solution**: Clean and reinstall:
|
||||
```bash
|
||||
rm -rf node_modules package-lock.json
|
||||
npm install
|
||||
```
|
||||
|
||||
#### **Build Permission Errors**
|
||||
```
|
||||
Error: Permission denied
|
||||
```
|
||||
**Solution**: Make script executable:
|
||||
```bash
|
||||
chmod +x scripts/build-moreminimore-app.sh
|
||||
```
|
||||
|
||||
### **Debug Mode**
|
||||
For detailed troubleshooting:
|
||||
```bash
|
||||
./scripts/build-moreminimore-app.sh --verbose
|
||||
```
|
||||
|
||||
This will show:
|
||||
- Detailed npm output
|
||||
- Electron Forge debug logs
|
||||
- Step-by-step build process
|
||||
- Error stack traces
|
||||
|
||||
## 🔄 Build Process Flow
|
||||
|
||||
```
|
||||
1. Environment Setup
|
||||
├── Parse command line arguments
|
||||
├── Set code signing mode
|
||||
└── Configure debug options
|
||||
|
||||
2. Prerequisites Check
|
||||
├── Verify Node.js and npm
|
||||
├── Check package.json exists
|
||||
├── Validate logo files
|
||||
└── Generate logos if needed
|
||||
|
||||
3. Dependency Management
|
||||
├── Install npm dependencies
|
||||
└── Verify installation success
|
||||
|
||||
4. Build Preparation
|
||||
├── Clean previous builds
|
||||
├── Apply custom features
|
||||
└── Verify TypeScript compilation
|
||||
|
||||
5. Application Build
|
||||
├── Run Electron Forge
|
||||
├── Package application
|
||||
└── Create distributable
|
||||
|
||||
6. Verification
|
||||
├── Check build output
|
||||
├── Verify file sizes
|
||||
└── Show results
|
||||
```
|
||||
|
||||
## 📊 Build Performance
|
||||
|
||||
### **Typical Build Times**
|
||||
- **Clean Build**: 3-5 minutes
|
||||
- **Incremental Build**: 1-2 minutes
|
||||
- **Dependency Install**: 30-60 seconds
|
||||
|
||||
### **Build Sizes**
|
||||
- **Development ZIP**: ~180MB
|
||||
- **Production Installer**: ~200MB
|
||||
- **Source Code**: ~50MB
|
||||
|
||||
### **System Requirements**
|
||||
- **RAM**: Minimum 4GB, recommended 8GB+
|
||||
- **Storage**: 2GB free space for build artifacts
|
||||
- **Network**: Required for dependency installation
|
||||
|
||||
## 🎨 Integration with Workflow
|
||||
|
||||
### **Development Workflow**
|
||||
```bash
|
||||
# 1. Update code
|
||||
git pull origin main
|
||||
|
||||
# 2. Apply custom features
|
||||
./scripts/update-and-debrand.sh
|
||||
|
||||
# 3. Build application
|
||||
./scripts/build-moreminimore-app.sh
|
||||
|
||||
# 4. Test application
|
||||
open out/make/zip/darwin/arm64/moreminimore-darwin-arm64-*.zip
|
||||
```
|
||||
|
||||
### **Release Workflow**
|
||||
```bash
|
||||
# 1. Set up production credentials
|
||||
export APPLE_TEAM_ID="your-team-id"
|
||||
export APPLE_ID="your-apple-id@example.com"
|
||||
export APPLE_PASSWORD="your-app-password"
|
||||
export SM_CODE_SIGNING_CERT_SHA1_HASH="your-cert-hash"
|
||||
|
||||
# 2. Build production version
|
||||
./scripts/build-moreminimore-app.sh --production
|
||||
|
||||
# 3. Distribute
|
||||
# Upload out/make/ files to your distribution platform
|
||||
```
|
||||
|
||||
## 📝 Best Practices
|
||||
|
||||
### **Before Building**
|
||||
1. **Update dependencies**: `npm update`
|
||||
2. **Clean workspace**: `git clean -fd`
|
||||
3. **Check TypeScript**: `npm run ts`
|
||||
4. **Verify logos**: `ls -la assets/`
|
||||
|
||||
### **During Development**
|
||||
1. **Use development builds**: Avoid code signing overhead
|
||||
2. **Enable verbose mode**: For debugging issues
|
||||
3. **Clean regularly**: Prevent artifact accumulation
|
||||
4. **Test builds**: Verify after major changes
|
||||
|
||||
### **For Production**
|
||||
1. **Set up credentials**: Configure Apple Developer account
|
||||
2. **Test signing**: Verify code signing works
|
||||
3. **Clean build**: Start with fresh artifacts
|
||||
4. **Verify output**: Test installer on clean system
|
||||
|
||||
## 🔗 Related Documentation
|
||||
|
||||
- [Logo Integration Guide](README-LOGO-INTEGRATION.md)
|
||||
- [Debranding Script Guide](README-DEBRAND.md)
|
||||
- [Update Script Guide](README-UPDATE-SCRIPT.md)
|
||||
- [Custom Integration Guide](README-CUSTOM-INTEGRATION.md)
|
||||
|
||||
## 🆘 Support
|
||||
|
||||
If you encounter issues:
|
||||
|
||||
1. **Check the logs**: Run with `--verbose` flag
|
||||
2. **Verify prerequisites**: Ensure all requirements are met
|
||||
3. **Clean and retry**: Use `--clean-only` then rebuild
|
||||
4. **Check credentials**: For production builds, verify Apple Developer setup
|
||||
5. **Review logs**: Check both script output and npm logs
|
||||
|
||||
The build script is designed to handle most common issues automatically and provide clear guidance when manual intervention is needed.
|
||||
Reference in New Issue
Block a user