mirror of
https://github.com/velopack/velopack.git
synced 2025-10-25 15:19:22 +00:00
58 lines
4.4 KiB
Markdown
58 lines
4.4 KiB
Markdown
*Applies to: Windows, MacOS, Linux*
|
|
# Packaging Overview
|
|
|
|
Packaging a release is accomplished with the `pack` command in Velopack. Regardless of your operating system, the common required arguments are roughly the same.
|
|
|
|
## Creating your first release
|
|
You first should compile your application with whatever toolchain you would normally use (eg. `dotnet publish`, `msbuild.exe`, so forth).
|
|
Henceforth this will be called `{build_dir}`.
|
|
|
|
### Required arguments
|
|
- `--packId {id}` The unique ID of your application. This should be unique enough to avoid other application authors from colliding with your app.
|
|
- `--packVersion {version}` The current version you are releasing - in [semver2 format](https://semver.org/) (eg. `1.0.0-build.23+metadata`).
|
|
- `--packDir {build_dir}` The folder containing your compiled application.
|
|
- `--mainExe {exeName}` The main executable to be started after install, and the binary that will [handle Velopack Hooks](../updating/overview.md).
|
|
- `--icon {path}` The icon used to bundle your app. Only required on MacOS and Linux.
|
|
|
|
> [!TIP]
|
|
> Velopack does not support 4 part versions (eg. `1.0.0.0`), as it would not be practical to support both formats simultaneously and semver2 offers a lot more flexibility.
|
|
|
|
A complete example:
|
|
```cmd
|
|
dotnet publish -c Release -r win-x64 -o publish
|
|
vpk pack --packId MyAppId -packVersion 1.0.0 --packDir publish --mainExe MyApp.exe
|
|
```
|
|
|
|
### Optional recommended arguments
|
|
There are many optional arguments, the best way to see what features are available for your operating system is to check `vpk pack -h`. To mention a couple:
|
|
- `--packTitle {name}` The friendly name for your app, shown to users in dialogs, shortcuts, etc.
|
|
- `--outputDir {path}` The location Velopack should create the final releases (defaults to `.\Releases`)
|
|
|
|
### Release output
|
|
When building a release has completed, you should have the following assets in your `--outputDir`:
|
|
- `MyAppId-1.0.0-full.nupkg` - Full Release: contains your entire update package.
|
|
- `MyAppId-1.0.0-delta.nupkg` - Delta Release: only if there was a previous release to build a delta from. These are optional to build/deploy, but speeds up the updating process for sers because they only need to download what's changed between versions instead of the full package.
|
|
- `MyAppId-Portable.zip` - Portable Release: Can deploy this optionally to allow users to run and update your app without installing.
|
|
- `MyAppId-Setup.exe` - Installer: Used by most users to install the app to the local filesystem.
|
|
- `releases.{channel}.json` - Releases Index: a list of every available release. Used by `UpdateManager` to locate the latest applicable release.
|
|
- `RELEASES` - Legacy Releases File: only used for clients [migrating to Velopack](../migrating.md) from Squirrel.
|
|
- `assets.{channel}.json` - Build Assets: A list of assets created in the most recent build. Used by [Velopack deployment commands](../distributing/overview.md).
|
|
|
|
You do not need to deploy all of these files to allow users to update, so you should review the [deployment guide](../distributing/overview.md) for more information on which files to distribute.
|
|
|
|
> [!TIP]
|
|
> There is no setup/installer package for Linux. The program is distributed as a self-updating `.AppImage`. The reason is that `.AppImage` will run on pretty much every modern distro with no extra dependencies needed. Just download the `.AppImage`, run `chmod +x`, and click it to start. It is possible to install an `.AppImage`, but this is left up to the user to install something like [appimaged](https://github.com/probonopd/go-appimage/blob/master/src/appimaged/README.md) or [AppImageLauncher](https://github.com/TheAssassin/AppImageLauncher).
|
|
|
|
## Code signing
|
|
While this is not required for local builds / testing, you should always code-sign your application before distributing your application to users.
|
|
|
|
> [!WARNING]
|
|
> If you do not code-sign, your application may fail to run. [[Read more]](signing.md)
|
|
|
|
## Customising the installer
|
|
On platforms which ship installers, you can customise the behavior. [[Read more]](installer.md)
|
|
|
|
## Other recommended arguments
|
|
- If your application is operating-system or CPU architecture specific you should consider adding an `--rid`. [[Read more]](rid.md)
|
|
- If you plan on distributing release channels for different architectures or features, consider adding a `--channel` [[Read more]](channels.md)
|
|
- If your app requires additional frameworks (eg. vcredist) consider `--framework` [[Read more]](bootstrapping.md) |