Cross-Platform .NET Application Packaging Tool
Build once, deploy everywhere
Features • Installation • Quick Start • Documentation • Changelog • Contributing
Netloy is a powerful command-line tool that automates the packaging and deployment of .NET applications across multiple platforms and formats. With a single configuration file, create professional installers and packages for Windows, Linux, and macOS without platform-specific expertise.
Say goodbye to complex build scripts and manual packaging. Netloy handles icon generation, desktop integration, AppStream metadata, and platform-specific requirements automatically.
- Windows: EXE (Inno Setup), MSI (WiX v3)
- Linux: DEB, RPM, AppImage, Flatpak, Pacman
- macOS: APP Bundle, DMG
- Portable: Cross-platform ZIP/TAR.GZ archives
- Single
.netloyconfiguration file for all platforms - Macro system for dynamic templating (
${APP_VERSION},${PUBLISH_OUTPUT_DIRECTORY}, etc.) - Post-publish scripts (Bash, PowerShell, Batch)
- Configuration upgrade tool for version compatibility
- Icon generation: Provide one PNG (1024×1024), get all required sizes automatically
- Multi-format icon support: PNG, SVG, ICO, ICNS
- AppStream metadata generation for Linux software centers
- Desktop shortcuts and Start Menu entries
- File associations and context menu integration
- Terminal command support (
StartCommand) - Platform-specific category mapping
- Supports both .NET Core and .NET Framework
- Custom
dotnet publisharguments - Direct binary packaging (skip build, use existing binaries)
- Clean build artifacts automatically
- .NET 8.0 SDK or later
dotnet tool install --global Netloy
netloy --version
Navigate to your .NET project directory and create a new configuration:
netloy --new conf
This generates a .netloy file with default settings. Edit it to customize your application metadata, packaging options, and platform-specific settings.
netloy -t msi -r win-x64 --config-path MyApp.netloy
netloy -t deb -r linux-x64 --config-path MyApp.netloy
netloy -t dmg -r osx-arm64 --config-path MyApp.netloy
Built packages are saved to the output directory specified in your configuration or via -o flag.
| Platform | Type | Format | Command Flag |
|---|---|---|---|
| Windows | Installer | EXE | -t exe |
| Windows | Installer | MSI | -t msi |
| Windows | Portable | ZIP | -t portable |
| Linux | Package | DEB | -t deb |
| Linux | Package | RPM | -t rpm |
| Linux | Package | Pacman | -t pacman |
| Linux | AppImage | AppImage | -t appimage |
| Linux | Flatpak | Flatpak | -t flatpak |
| Linux | Portable | TAR.GZ | -t portable |
| macOS | Bundle | APP (zipped) | -t app |
| macOS | Installer | DMG | -t dmg |
| macOS | Portable | TAR.GZ | -t portable |
Here's a minimal .netloy configuration:
AppBaseName = MyApp
AppFriendlyName = My Awesome App
AppId = com.example.myapp
AppVersionRelease = 1.0.0
AppShortSummary = A simple example application
AppDescription = """
This is a longer description of my application.
It supports multiple paragraphs.
"""
AppLicenseId = MIT
PublisherName = Example Inc.
PublisherCopyright = Copyright © 2025 Example Inc.
PublisherLinkUrl = https://example.com
PublisherEmail = contact@example.com
DesktopTerminal = false
PrimeCategory = Utility
IconFiles = """
Deploy/icons/app-icon.1024x1024.png
Deploy/icons/app-icon.svg
Deploy/icons/app-icon.ico
Deploy/icons/app-icon.icns
"""
AutoGenerateIcons = true
DotnetProjectPath = ./MyApp.csproj
DotnetPublishArgs = -p:Version=<APPVERSION> --self-contained true
PackageName = myapp
OutputDirectory = ./output
📚 For complete configuration reference, see the Wiki.
netloy -t msi -r win-x64 --app-version 2.1.0 --config-path MyApp.netloy
netloy -t deb -r linux-arm64 --config-path MyApp.netloy --verbose
netloy -t appimage -r linux-x64 --binary-path ./bin/Release/net8.0/linux-x64/publish
netloy --new desktop
- Wiki Home: Comprehensive documentation
- Getting Started Guide: Step-by-step tutorial
- Configuration Reference: All config options explained
- Macro System: Template variables and usage
- Command Line Reference: CLI arguments
For a detailed list of changes, new features, and bug fixes in each version, see the CHANGELOG.md.
Contributions are welcome! Please read our Contributing Guide for details on our code of conduct and the process for submitting pull requests.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the AGPL-3.0 License - see the LICENSE file for details.
- Inspired by PupNet Deploy, though Netloy is a complete rewrite from scratch with expanded features and cross-platform support
- Inno Setup for Windows EXE installer generation
- WiX Toolset for Windows MSI package creation
- AppImage for portable Linux application format
- Flatpak for sandboxed Linux application distribution
Made with ❤️ by Adel Bakhshi
⭐ If Netloy helps your project, consider giving it a star!
