3.5 KiB
Applies to: Windows
Migrating to Velopack
From Squirrel
If you are using one of these packages in your application, migrating will be mostly automated. Here are the general steps needed:
-
Replace the
Squirrel.WindowsorClowd.Squirrelnuget package with the latestVelopack NuGet Package. -
Install the
vpkcommand line tool, as this is what you'll use to build Velopack releases.dotnet tool install -g vpk -
You will need to replace
SquirrelAwareAppat the beginning of your app toVelopackApp.Build().Run(). Shortcuts [Read more] and registry entries are managed automatically for you in Velopack, so if you are currently doing this inSquirrelAwareApphooks they should be removed. For example, if your hooks were this before:public static void Main(string[] args) { SquirrelAwareApp.HandleEvents( onInitialInstall: OnAppInstall, onAppUninstall: OnAppUninstall, onEveryRun: OnAppRun); } private static void OnAppInstall(SemanticVersion version, IAppTools tools) { tools.CreateShortcutForThisExe(ShortcutLocation.StartMenu | ShortcutLocation.Desktop); } private static void OnAppUninstall(SemanticVersion version, IAppTools tools) { tools.RemoveShortcutForThisExe(ShortcutLocation.StartMenu | ShortcutLocation.Desktop); } private static void OnAppRun(SemanticVersion version, IAppTools tools, bool firstRun) { if (firstRun) MessageBox.Show("Thanks for installing my application!"); }Then you would migrate to the following code, removing the shortcut hooks:
public static void Main(string[] args) { VelopackApp.Build() .WithFirstRun(v => MessageBox.Show("Thanks for installing my application!")) .Run(); } -
The concept of
SquirrelAwareAppno longer exists, so if you've added any attributes, assembly manifest entries, or other files to indicate that your binary is now aware, you can remove that. Every Velopack package has exactly one "VelopackApp" binary, which must implement the above interface at the top ofMain. By default, Velopack will search for a binary in{packDir}\{packId}.exe. If your exe is named differently, you should provide the name with the--mainExe yourApp.exeargument. -
The "RELEASES" file is no longer a format that Velopack uses, but it will produce one when building packages on windows with the default channel (eg. no channel argument provided). Instead, Velopack will produce
releases.{channel}.jsonfiles, which should be treated in the same way. If you are wishing for a legacy windows app to migrate to Velopack, you should upload both theRELEASESfile and thereleases.win.jsonfile which is produced by Velopack to your update feed. -
In general, the command line supports all of the same features, but argument names or commands may have changed. Velopack no longer supports taking a
.nupkgwhich was created by dotnet or nuget.exe. You should publish your app, and usevpk packinstead. A very simple example might look like thisdotnet publish --self-contined -r win-x64 -o publish vpk pack -u YourAppId -v 1.0.0 -p publish -e yourMainBinary.exePlease review the vpk command line help for more details:
vpk -h
From ClickOnce
There is no guide or advice for migrating ClickOnce applications yet. If you would like to contribute one, please open an issue or PR!