|
| 1 | +import InstallNuGet from './content/_install-nuget.mdx'; |
| 2 | +import CSharpUpdates from './content/_csharp-updates.mdx'; |
| 3 | +import CSharpPublish from './content/_csharp-publish.mdx'; |
| 4 | +import InstallVpk from './content/_install-vpk.mdx'; |
| 5 | +import BuildRelease from './content/_build-release.mdx'; |
| 6 | +import Completion from './content/_completion.mdx'; |
| 7 | + |
| 8 | + |
1 | 9 | # Getting Started: Uno Platform |
2 | 10 | <AppliesTo all /> |
3 | 11 |
|
4 | 12 | The Uno Platform provies .NET developers with an open-source platform for building single codebase native mobile, web, desktop and embedded apps quickly. Velopack offers a cross platform solution for deploying the desktop (Windows, macOS, and Linux) versions of those applications. For publishing other platforms see [Uno Platform's documentation](https://platform.uno/docs/articles/uno-publishing-overview.html). |
5 | 13 |
|
6 | | -1. Start by creating a new Uno application following [Uno Platform's Getting Started guide](https://platform.uno/docs/articles/get-started.html). |
7 | | - |
8 | | -0. Add the Velopack NuGet package to the Uno project by running |
9 | | - ```cmd |
10 | | - dotnet add package Velopack |
11 | | - ``` |
12 | | - |
13 | | -0. Inside of the App.xaml.cs add the following lines to the beginning of the constructor. |
14 | | - ```csharp |
15 | | - public App() |
16 | | - { |
17 | | - // It's important to Run() the VelopackApp as early as possible in app startup. |
18 | | - VelopackApp.Build() |
19 | | - .WithFirstRun((v) => { /* Your first run code here */ }) |
20 | | - .Run(); |
21 | | - this.InitializeComponent(); |
22 | | - } |
23 | | - ``` |
24 | | - |
25 | | -0. Add automatic updating somewhere in your app: |
26 | | - ```cs |
27 | | - private static async Task UpdateMyApp() |
28 | | - { |
29 | | - var mgr = new UpdateManager("https://the.place/you-host/updates"); |
30 | | - |
31 | | - // check for new version |
32 | | - var newVersion = await mgr.CheckForUpdatesAsync(); |
33 | | - if (newVersion == null) |
34 | | - return; // no update available |
35 | | -
|
36 | | - // download new version |
37 | | - await mgr.DownloadUpdatesAsync(newVersion); |
38 | | - |
39 | | - // install new version and restart app |
40 | | - mgr.ApplyUpdatesAndRestart(newVersion); |
41 | | - } |
42 | | - ``` |
43 | | - |
44 | | -0. Compile the artifacts to be deployed. Though it is not strictly necessary to set an assembly version, it is best practice to version the application to match the installer version. |
45 | | - ```cmd |
46 | | - dotnet publish -f net8.0-desktop -p:Version=1.0.0 -o .\publish |
47 | | - ``` |
48 | | - This will create the artifacts to be installed inside of the `publish` directory. If you are targeting Windows or Mac Catalyst separately this process will need to be repeated for each of those platforms. |
49 | | - For additional information on publishing your Uno application see the [Uno publishing guides](https://platform.uno/docs/articles/uno-publishing-overview.html) |
50 | | - |
51 | | -0. Install the Velopack command line utility. This is installed as a [dotnet global tool](https://learn.microsoft.com/dotnet/core/tools/global-tools). Install it by running |
52 | | - ```cmd |
53 | | - dotnet tool install -g vpk |
54 | | - ``` |
55 | | - |
56 | | -0. Build the installer. For this example, we will provide the same version number for the installer as we did above for the application version. |
57 | | - ```cmd |
58 | | - vpk pack --packId <AppId> --packVersion 1.0.0 --packDir .\publish --mainExe <MyUnoApp>.exe |
59 | | - ``` |
60 | | - The AppId can be any unique application identifier that you wish to use. Typically this will be the same as the name as your application. The --mainExe option is only required if your executable name is different than the --packId of your application. |
61 | | - :::tip |
62 | | - VPK will produce the following warning that can safely be ignored: |
63 | | - `VelopackApp.Run() was found in method 'System.Void <YourAppName>.App::.ctor()', which does not look like your application's entry point. It is strongly recommended that you move this to the very beginning of your Main() method.` |
64 | | - ::: |
65 | | - For more information on this warning see [Integration Overview](../integrating/overview.mdx#application-startup) |
66 | | - By default, Velopack will create the installers and the needed installer files inside of a Release directory. This can be configured with the --outputDir option. |
67 | | - |
68 | | -✅ You're Done! These files can then be uploaded it a [variety of locations for distribution](../distributing/overview.mdx). |
| 14 | +<FancyStep step={1}> |
| 15 | + <details> |
| 16 | + <summary> |
| 17 | + <strong>Create Uno Project</strong> |
| 18 | + </summary> |
| 19 | + |
| 20 | + Start by creating a new Uno application following [Uno Platform's Getting Started guide](https://platform.uno/docs/articles/get-started.html). |
| 21 | + </details> |
| 22 | +</FancyStep> |
| 23 | + |
| 24 | +<InstallNuGet step={2}/> |
| 25 | + |
| 26 | +<FancyStep step={3}> |
| 27 | + <details> |
| 28 | + <summary> |
| 29 | + <strong>Configure Velopack at the beginning of App.xaml.cs</strong> |
| 30 | + </summary> |
| 31 | + |
| 32 | + Add the following code to your `App.xaml.cs` file: |
| 33 | + ```csharp |
| 34 | + public App() |
| 35 | + { |
| 36 | + // It's important to Run() the VelopackApp as early as possible in app startup. |
| 37 | + VelopackApp.Build() |
| 38 | + .WithFirstRun((v) => { /* Your first run code here */ }) |
| 39 | + .Run(); |
| 40 | + this.InitializeComponent(); |
| 41 | + } |
| 42 | + ``` |
| 43 | + </details> |
| 44 | +</FancyStep> |
| 45 | + |
| 46 | +<CSharpUpdates step={4}/> |
| 47 | + |
| 48 | +<CSharpPublish step={5} |
| 49 | + showMultipleTfmSuggestion={true} |
| 50 | + suffix="For additional information on publishing your Uno application see the <a href="https://platform.uno/docs/articles/uno-publishing-overview.html">Uno publishing guides</a>" |
| 51 | + /> |
| 52 | + |
| 53 | +<InstallVpk step={6}/> |
| 54 | + |
| 55 | +<BuildRelease step={7} includeWarningTip={true}/> |
| 56 | + |
| 57 | +<Completion /> |
0 commit comments