Skip to content

Development

Derek Yang edited this page Oct 5, 2025 · 6 revisions

Build

Your machine should have the ability to develop WinUI 3 applications. The simplest setup method is using the Visual Studio Installer and selecting Windows application development.

Then, open the Solution file .\FluentDL\FluentDL.sln using Visual Studio. You must actually open the solution file, not just the project folder. It should prompt you to install the correct .NET SDK. If not, install the latest .NET 8 SDK.

An experimental package was installed seperately. If it is not automatically handled by the nuget.config, install the package manually.

To install manually:

  • Open the Tools menu, select Options > NuGet Package Manager > Package Sources.
  • Select the green plus in the upper-right corner and add https://pkgs.dev.azure.com/dotnet/CommunityToolkit/_packaging/CommunityToolkit-Labs/nuget/v3/index.json as a source.
  • Now install the Nuget package as you normally would. Use the GUI to install MarqueeText 0.1.250103-build.1988 (ensure pre-release checkbox is selected). Alternatively, enter Install-Package CommunityToolkit.Labs.WinUI.MarqueeText -version 0.1.250103-build.1988 in the VS Package Manager Console. Read more about the package and installation instructions here.

To run the application, hit the FluentDL (Package) play button. To deploy the application, follow Project > Publish > Create App Packages and sign it with a certificate.

Cloning the repo may take a while because it is bundled with FFmpeg and Spek. The pre-built FFmpeg executable is found at ./FluentDL/Assets/ffmpeg/bin and contains many additional codecs, such as libopus and libvorbis.

Bundling Keys

For Spotify, you may bundle developer API keys by creating the file Assets/keys.txt. The text file should contain an encrypted string. The decrypted string in keys.txt must follow this format:

{
  "spot_id": [ "id1", "id2"],
  "spot_secret": [ "secret1", "secret2"]
}

You may add any number of id/secret pairs into the lists, but the indices must match (first id corresponds to first secret). To create the encrypted string, feed the above JSON text into the AesHelper encrypter class included. Do not store important API keys using this method, as the AesHelper secrets could be reverse engineered.

Publishing

TODO

Clone this wiki locally