MouseEffects includes built-in automatic update functionality powered by Velopack. This allows the application to check for updates, download them in the background, and apply them seamlessly.
┌─────────────────┐ ┌──────────────────┐ ┌─────────────────┐
│ MouseEffects │────▶│ GitHub Releases │────▶│ Your App │
│ (Check) │ │ (Host Updates) │ │ (Auto-Update) │
└─────────────────┘ └──────────────────┘ └─────────────────┘
- On Startup: The app checks GitHub Releases for newer versions
- Detection: Compares current version with latest release
- Download: Downloads update packages (full or delta)
- Apply: Installs update on next restart
MouseEffects supports two update modes, configurable in Settings:
- Updates download automatically in the background
- No notifications or interruptions
- Updates apply on next restart
- Best for users who want hands-off updates
- Shows notification when update is available
- User can choose when to download and install
- Progress displayed during download
- Best for users who want control over updates
Access update settings via the system tray icon → Settings → Updates section:
| Option | Description |
|---|---|
| Check for updates | How often to check: On startup, Daily, Weekly, Never |
| When update available | Silent (background) or Notify (ask user) |
| Check Now | Manually check for updates immediately |
Update settings are stored in %AppData%\MouseEffects\settings.json:
{
"UpdateCheckFrequency": "OnStartup",
"UpdateMode": "Notify",
"IncludePreReleases": false,
"LastUpdateCheck": "2024-01-15T10:30:00Z"
}| Setting | Behavior |
|---|---|
| OnStartup | Check every time the app starts |
| Daily | Check once per day |
| Weekly | Check once per week |
| Never | Disable automatic checks (manual only) |
To manually check for updates:
- Open Settings (right-click tray icon → Settings)
- Scroll to the Updates section
- Click Check Now
- If an update is available, click Download & Install Update
App Start → Check GitHub → Download in Background → Ready on Restart
App Start → Check GitHub → Notification → User Clicks → Download → Restart
Velopack supports delta updates, which means:
- Only changed files are downloaded
- Significantly smaller download sizes
- Faster update process
- Automatic fallback to full update if delta fails
- Check network connection - The app needs internet access to check GitHub
- Verify frequency setting - Make sure "Never" isn't selected
- Check logs - Look in
%AppData%\MouseEffects\debug.logfor errors
Common causes:
- GitHub API rate limiting (temporary, try again later)
- Firewall blocking GitHub access
- No releases published yet
- Close MouseEffects completely
- Restart the application
- The update should apply automatically
If an update causes issues:
- The previous version is retained
- Uninstall and reinstall the previous version from Releases
The update system consists of:
| Component | File | Purpose |
|---|---|---|
IUpdateService |
Services/IUpdateService.cs | Interface definition |
UpdateService |
Services/UpdateService.cs | Velopack integration |
| Update UI | UI/SettingsWindow.xaml | Settings controls |
Updates are published to GitHub Releases with these artifacts:
| File | Purpose |
|---|---|
MouseEffects-win-Setup.exe |
Installer for new users |
MouseEffects-{version}-win-full.nupkg |
Full update package |
MouseEffects-{version}-win-delta.nupkg |
Delta update package |
RELEASES |
Velopack manifest file |
To publish a new version:
- Update version in
MouseEffects.App.csproj - Commit and tag:
git tag v1.0.4 - Push tag:
git push origin v1.0.4 - GitHub Actions automatically builds and publishes
See Velopack Packaging for detailed instructions.
- Updates are downloaded over HTTPS
- All releases are published through GitHub's trusted infrastructure
- No administrator rights required for updates
- Updates install to user profile only
| Feature | Velopack | MSIX |
|---|---|---|
| Auto-updates | Built-in | Via Microsoft Store |
| Admin required | No | No |
| Delta updates | Yes | Yes |
| Certificate required | No | Yes |
| Offline install | Yes | Yes |
| Enterprise deployment | Manual | Group Policy |