Files
raven/V8-DEV-VM-SETUP-GUIDE.md

677 lines
17 KiB
Markdown

# AyaNova v8 Build VM Setup Guide
> **Purpose**: Step-by-step instructions to create a portable Windows virtual machine containing the complete AyaNova v8 build environment. This VM can run on Windows or Linux hosts.
---
## Overview
This guide will help you create a VirtualBox VM that:
- Contains all tools needed to build every AyaNova v8 target
- Is portable (can be moved between machines)
- Can be snapshotted (save known-good states)
- Works on both Windows and Linux host machines
**Time estimate**: 3-4 hours for initial setup
---
## Part 1: Prerequisites and Purchases
### 1.1 Windows License
You'll need a legitimate Windows license for the VM. Options:
| Option | Approximate Cost | Notes |
|--------|------------------|-------|
| Windows 11 Pro (Retail) | $200 USD | Transferable to new hardware, recommended |
| Windows 11 Pro (OEM) | $120-150 USD | Tied to "one machine" but works for VMs |
| Windows 11 Home | $140 USD | Works but Pro has Hyper-V/dev features |
| Windows 10 Pro | $120-150 USD | Still fully supported, lighter weight |
**Recommendation**: Windows 11 Pro retail license. It's transferable and will remain supported longest.
**Where to buy**:
- Microsoft Store (microsoft.com) - Full retail price, guaranteed legitimate
- Amazon - Often has retail boxed copies
- Newegg - Same as Amazon
**Avoid**: Grey market key resellers (G2A, Kinguin, etc.) - Keys may be revoked.
### 1.2 Host Machine Requirements
Your Linux laptop will need:
- **RAM**: 16GB minimum (8GB for VM + 8GB for host)
- **Disk**: 100GB free space for VM
- **CPU**: 4+ cores recommended (VM will use 2-4)
- **Virtualization**: VT-x/AMD-V enabled in BIOS
Your current ThinkPad X13 (16GB RAM, Ryzen 7) will work, though it'll be tight on RAM. A machine with 32GB would be more comfortable.
### 1.3 Software to Download (All Free)
Download these before starting:
1. **VirtualBox** (host machine)
- https://www.virtualbox.org/wiki/Downloads
- Get the version for your Linux distribution
- Also get the Extension Pack (same page)
2. **Windows 11 ISO** (for VM)
- https://www.microsoft.com/software-download/windows11
- Download the ISO directly (not the Media Creation Tool)
---
## Part 2: Create the Virtual Machine
### 2.1 Install VirtualBox on Linux Host
For Ubuntu/Debian-based:
```bash
sudo apt update
sudo apt install virtualbox virtualbox-ext-pack
```
For Fedora:
```bash
sudo dnf install VirtualBox
```
Or download from virtualbox.org for other distributions.
### 2.2 Create New VM
1. Open VirtualBox Manager
2. Click **New**
3. Configure:
- **Name**: `AyaNova-Build-v8`
- **Folder**: Choose a location with plenty of space
- **ISO Image**: Select the Windows 11 ISO you downloaded
- **Type**: Microsoft Windows
- **Version**: Windows 11 (64-bit)
- Check "Skip Unattended Installation" (gives you more control)
4. Click **Next**
### 2.3 Hardware Configuration
| Setting | Value | Notes |
|---------|-------|-------|
| Base Memory | 8192 MB (8GB) | Minimum for VS 2022 |
| Processors | 4 CPUs | More if your host has them |
| Enable EFI | Yes | Required for Windows 11 |
Click **Next**
### 2.4 Virtual Hard Disk
| Setting | Value | Notes |
|---------|-------|-------|
| Create Virtual Hard Disk | Yes | |
| Disk Size | 120 GB | VS alone is 20-40GB |
| Pre-allocate Full Size | No | Saves initial space |
Click **Next**, then **Finish**
### 2.5 Additional VM Settings
Before starting the VM, click **Settings**:
**System → Motherboard:**
- Enable EFI: ✓ (should already be set)
- TPM: v2.0 (required for Windows 11)
**Display:**
- Video Memory: 128 MB
- Graphics Controller: VBoxSVGA
- Enable 3D Acceleration: ✓
**Storage:**
- Verify Windows ISO is attached to IDE Controller
**Shared Folders** (optional, configure later):
- Can share folders between host and VM
**Network:**
- Attached to: NAT (default, fine for building)
- Or: Bridged Adapter (if you need VM on your network)
Click **OK**
---
## Part 3: Install Windows
### 3.1 Start VM and Install
1. Start the VM
2. Press any key to boot from ISO when prompted
3. Follow Windows 11 installer:
- Language: Your preference
- Click "Install now"
- Enter your product key (or "I don't have a product key" to enter later)
- Select **Windows 11 Pro**
- Accept license terms
- Choose **Custom: Install Windows only**
- Select the virtual drive, click **Next**
- Wait for installation (10-20 minutes)
### 3.2 Initial Windows Setup
When Windows restarts:
1. Select region and keyboard layout
2. **Network**: If asked, choose "I don't have internet" → "Continue with limited setup"
- This avoids Microsoft account requirement
3. Create a local account:
- Username: `builder` (or your preference)
- Password: Something simple but memorable
4. Disable all the telemetry/tracking options (your choice)
5. Wait for setup to complete
### 3.3 Install VirtualBox Guest Additions
This enables better display, shared folders, clipboard sharing:
1. In VirtualBox menu: **Devices → Insert Guest Additions CD image**
2. Open File Explorer in Windows
3. Navigate to the CD drive
4. Run **VBoxWindowsAdditions.exe**
5. Accept all defaults, click Install
6. Reboot when prompted
After reboot:
- VM window can be resized freely
- Enable shared clipboard: **Devices → Shared Clipboard → Bidirectional**
### 3.4 Windows Updates
Before installing dev tools, get Windows fully updated:
1. **Settings → Windows Update**
2. Click "Check for updates"
3. Install all updates
4. Reboot as needed
5. Repeat until no more updates
This may take 30-60 minutes. Be patient.
### 3.5 Activate Windows
1. **Settings → System → Activation**
2. Click "Change product key"
3. Enter your Windows license key
4. Click Activate
---
## Part 4: Install Build Tools
### 4.1 Create Standard Folders
Open PowerShell as Administrator and run:
```powershell
mkdir C:\data
mkdir C:\data\code
```
### 4.2 Install Package Manager (Winget or Chocolatey)
Winget is built into Windows 11. Verify it works:
```powershell
winget --version
```
If not available, install Chocolatey as alternative:
```powershell
Set-ExecutionPolicy Bypass -Scope Process -Force
[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072
iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
```
### 4.3 Install Core Tools
Using winget (run in PowerShell as Administrator):
```powershell
# 7-Zip
winget install --id 7zip.7zip -e
# Git (useful even if using SVN)
winget install --id Git.Git -e
# VS Code
winget install --id Microsoft.VisualStudioCode -e --source winget
# Python 3.11
winget install --id Python.Python.3.11 -e --source winget
# .NET 8 SDK
winget install --id Microsoft.DotNet.SDK.8 -e --source winget
# Inno Setup
winget install --id JRSoftware.InnoSetup -e --source winget
```
Close and reopen PowerShell after these installs.
### 4.4 Install Node.js 12.22.9 (Specific Version)
Node 12 isn't in winget, so install manually:
1. Download from: https://nodejs.org/dist/v12.22.9/node-v12.22.9-x64.msi
2. Run the installer
3. Accept all defaults
4. Verify:
```powershell
node -v
# Should show: v12.22.9
```
### 4.5 Install MkDocs
```powershell
pip install mkdocs mkdocs-material
```
Verify:
```powershell
mkdocs --version
```
### 4.6 Install Visual Studio 2022 Community
This is needed for the QuickBooks Integration project (.NET Framework 4.8, Windows Forms).
1. Download from: https://visualstudio.microsoft.com/vs/community/
2. Run the installer
3. When Workloads screen appears, select:
-**.NET desktop development** (includes Windows Forms)
-**ASP.NET and web development** (optional but useful)
4. In Individual Components tab, verify:
- ✓ .NET Framework 4.8 SDK
- ✓ .NET Framework 4.8 targeting pack
5. Click **Install**
6. Wait (this takes 20-40 minutes and downloads several GB)
### 4.7 Install TortoiseSVN (if using SVN)
```powershell
winget install --id TortoiseSVN.TortoiseSVN -e
```
Reboot after installation (adds shell integration).
### 4.8 Verify All Installations
Open a new PowerShell window and run:
```powershell
# Create a verification script
@"
Write-Host "=== AyaNova Build Environment Check ===" -ForegroundColor Cyan
Write-Host ""
Write-Host "Node.js:" -NoNewline
node -v
Write-Host "npm:" -NoNewline
npm -v
Write-Host "Python:" -NoNewline
python --version
Write-Host "pip:" -NoNewline
pip --version
Write-Host ".NET SDK:" -NoNewline
dotnet --version
Write-Host "MkDocs:" -NoNewline
mkdocs --version
Write-Host ""
Write-Host "Checking paths..." -ForegroundColor Cyan
$tools = @(
"C:\Program Files\7-Zip\7z.exe",
"C:\Program Files (x86)\Inno Setup 6\ISCC.exe"
)
foreach ($tool in $tools) {
if (Test-Path $tool) {
Write-Host "[OK] $tool" -ForegroundColor Green
} else {
Write-Host "[MISSING] $tool" -ForegroundColor Red
}
}
Write-Host ""
Write-Host "=== Check Complete ===" -ForegroundColor Cyan
"@ | Out-File -FilePath "check-env.ps1"
# Run it
.\check-env.ps1
```
All items should show versions or [OK].
---
## Part 5: Set Up Source Code
### 5.1 Check Out from SVN
If your SVN server is accessible from the VM:
```powershell
cd C:\data\code
# Check out main repository
svn checkout https://your-svn-server/path/to/raven raven
# Check out frontend
svn checkout https://your-svn-server/path/to/raven-client raven-client
# Check out launcher
svn checkout https://your-svn-server/path/to/raven-launcher raven-launcher
# Check out QBI
svn checkout https://your-svn-server/path/to/ravenqbi ravenqbi
```
### 5.2 Alternative: Copy from Host via Shared Folder
If SVN isn't accessible, use VirtualBox shared folders:
1. In VirtualBox: **Devices → Shared Folders → Shared Folders Settings**
2. Click the folder+ icon
3. **Folder Path**: Your code folder on Linux host
4. **Folder Name**: `code`
5. Check "Auto-mount"
6. Click OK
The shared folder appears as a network drive in Windows. Copy files from there to `C:\data\code\`.
### 5.3 Install Frontend Dependencies
```powershell
cd C:\data\code\raven-client\ayanova
npm ci
```
This installs exact versions from package-lock.json. May take 5-10 minutes.
---
## Part 6: Test the Build
### 6.1 Run Full Build
```powershell
cd C:\data\code\raven
.\build-release.bat
```
Watch for errors. The build should:
1. Build main docs ✓
2. Build customer docs ✓
3. Build frontend ✓
4. Build subscription Linux ✓
5. Build perpetual Linux ✓
6. Build Windows standalone ✓
7. Build Windows framework-dependent ✓
8. Build launcher ✓
9. Create standalone installer ✓
10. Create LAN installer ✓
### 6.2 Verify Outputs
Check that all expected files were created:
```powershell
dir C:\data\code\raven\dist\installers
```
Expected files:
- `ayanova-subscription-linux-x64-server.zip`
- `ayanova-linux-x64-desktop.zip`
- `ayanova-linux-x64-server.zip`
- `ayanova-windows-x64-single-setup.exe`
- `ayanova-windows-x64-lan-setup.exe`
### 6.3 Test QBI Build (Separate)
```powershell
cd C:\data\code\ravenqbi\AyaNovaQBI
# Build using MSBuild (comes with VS)
& "C:\Program Files\Microsoft Visual Studio\18\Community\MSBuild\Current\Bin\MSBuild.exe" /p:Configuration=Release
# Or open in Visual Studio and build from there
```
---
## Part 7: Create Snapshot and Backup
### 7.1 Clean Up Before Snapshot
Inside the VM:
```powershell
# Clear temp files
Remove-Item -Recurse -Force $env:TEMP\*
# Clear Windows temp
Remove-Item -Recurse -Force C:\Windows\Temp\* -ErrorAction SilentlyContinue
# Empty recycle bin
Clear-RecycleBin -Force -ErrorAction SilentlyContinue
```
Shut down the VM cleanly: **Start → Power → Shut down**
### 7.2 Create Snapshot
In VirtualBox Manager:
1. Select your VM
2. Click **Snapshots** (next to Details)
3. Click **Take** (camera icon)
4. Name: `Fresh-Build-Environment-Working`
5. Description: `Clean install with all build tools. Full build tested and working.`
6. Click OK
This snapshot lets you restore to this exact state if anything breaks later.
### 7.3 Export VM for Backup
For a portable backup you can store on an external drive:
1. **File → Export Appliance**
2. Select your VM, click Next
3. Choose location (external drive recommended)
4. Format: OVF 2.0
5. File: `AyaNova-Build-VM-v8.ova`
6. Click Next, then Export
This creates a single file (~30-50GB) that can be imported into VirtualBox on any machine.
### 7.4 Backup Strategy
Store the exported .ova file:
- On an external drive (your monthly backup drives)
- Separate from your regular backups (it's a different kind of asset)
When to re-export:
- After major tool updates (new .NET SDK version, etc.)
- After significant build process changes
- Quarterly, as a habit
---
## Part 8: Day-to-Day Usage
### 8.1 Starting the VM
1. Open VirtualBox
2. Select `AyaNova-Build-v8`
3. Click **Start**
4. Wait for Windows to boot
5. Log in
### 8.2 Updating Source Code
```powershell
cd C:\data\code\raven
svn update
cd C:\data\code\raven-client
svn update
# etc.
```
### 8.3 Running Builds
```powershell
cd C:\data\code\raven
.\build-release.bat
```
### 8.4 Getting Files Out of the VM
Options:
1. **Shared Folders**: Copy to a shared folder visible on host
2. **Network**: If VM is bridged, access via network share
3. **USB Drive**: Attach a USB drive to the VM
4. **SVN Commit**: Commit build outputs to repo (not recommended for large binaries)
### 8.5 Snapshots for Safety
Before making any changes to the build environment:
1. Shut down VM
2. Take a snapshot
3. Start VM
4. Make changes
5. If something breaks: Restore snapshot
---
## Part 9: Linux Host Notes
### 9.1 Recommended Linux Distributions
For a development workstation, these work well with VirtualBox:
| Distribution | Notes |
|--------------|-------|
| Ubuntu 22.04/24.04 LTS | Most compatible, largest community |
| Linux Mint | Ubuntu-based, more Windows-like feel |
| Fedora Workstation | Cutting edge, good hardware support |
| Pop!_OS | Good for laptops, System76's distro |
### 9.2 ThinkPad Linux Compatibility
ThinkPads are generally excellent Linux laptops. The X13 Gen 3 AMD should work well with Ubuntu or Fedora out of the box.
### 9.3 Performance Tips
- **Enable VT-x/AMD-V**: In BIOS settings, ensure virtualization is enabled
- **Nested Virtualization**: May be needed if VM uses Hyper-V features (usually not needed for this use case)
- **SSD**: VM performance is heavily dependent on disk speed; SSD is essential
- **RAM**: 32GB on host would be more comfortable than 16GB
### 9.4 Used ThinkPad Recommendations
If you're looking at a used/refurbished ThinkPad for Linux:
| Model | Era | Notes |
|-------|-----|-------|
| X1 Carbon Gen 9/10 | 2021-2022 | Excellent, lightweight |
| T14s Gen 2/3 | 2021-2022 | Good value, business-class |
| T480/T480s | 2018 | Older but very well supported, cheap |
| P14s | 2020+ | More RAM options (up to 48GB) |
Look for 32GB RAM models if possible. Check that the specific CPU is supported (Intel generally has better Linux support than AMD, though AMD works fine too).
---
## Appendix A: Troubleshooting
### Windows 11 Won't Install (TPM Error)
VirtualBox 7.0+ supports TPM 2.0 emulation. If you get TPM errors:
1. VM Settings → System → Motherboard
2. Ensure TPM is set to v2.0
### Build Fails: Node Module Errors
If `npm ci` fails with native module errors:
1. Delete `node_modules` folder
2. Try `npm install` instead of `npm ci`
3. If still failing, verify Node version is exactly 12.22.9
### VM Performance is Poor
- Increase VM RAM (if host has headroom)
- Increase CPU cores
- Ensure VirtualBox Guest Additions are installed
- Check that 3D acceleration is enabled
- Use SSD, not spinning disk
### Can't Access SVN Server
- Check VM network mode (NAT vs Bridged)
- Verify SVN server is accessible from host
- Check firewall settings on both host and VM
---
## Appendix B: Quick Reference
### Build Commands
```powershell
# Full build
cd C:\data\code\raven
.\build-release.bat
# Frontend only
cd C:\data\code\raven-client\ayanova
npm run build
# Docs only
cd C:\data\code\raven\docs\8.0\ayanova
mkdocs build
# QBI only (in Visual Studio or command line)
msbuild C:\data\code\ravenqbi\AyaNovaQBI\AyaNovaQBI.csproj /p:Configuration=Release
```
### Key Paths
| What | Path |
|------|------|
| Main repo | `C:\data\code\raven` |
| Frontend | `C:\data\code\raven-client\ayanova` |
| Launcher | `C:\data\code\raven-launcher` |
| QBI | `C:\data\code\ravenqbi` |
| Build outputs | `C:\data\code\raven\dist\installers` |
### Tool Locations
| Tool | Path |
|------|------|
| 7-Zip | `C:\Program Files\7-Zip\7z.exe` |
| Inno Setup | `C:\Program Files (x86)\Inno Setup 6\ISCC.exe` |
| MSBuild | `C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Current\Bin\MSBuild.exe` |
---
## Version History
| Date | Change |
|------|--------|
| 2026-02-01 | Initial guide created |