From 3128d34b14269a50ce70f809cc4de7ff965447fb Mon Sep 17 00:00:00 2001 From: Caelan Date: Tue, 6 Aug 2024 22:56:40 +0100 Subject: [PATCH] Rework solution structure to allow more types of library projects (#196) * Rename avalonia & wpf samples * Rename rest of samples * fix sample readme * Fix compat util tests * rename / move all src projects * remove package lock files and move libC# again * Add rust lib and cargo workspace * Replace locksmith lib with new filelocksmith-rs library * Deprecated type * fix setup compile * Use thiserror for error handling * Rename some enums and formatting * Add missing SHA256 * wip c++ library * cpp wip * alphabetize readme * Try to get build working again * Fix some conditionally compiled bits * cross config should be in workspace root * Fix PathHelper for new rust target dir * Missed one old path to velopack.csproj * remove obsolete coverage code * testawareapp.exe no longer exists --- {src/Rust/.cargo => .cargo}/config.toml | 0 .github/workflows/build.yml | 76 +- .gitignore | 1 + .vscode/settings.json | 8 - Cargo.lock | 2720 ++++++++++++ Cargo.toml | 30 + src/Rust/Cross.toml => Cross.toml | 0 Velopack.sln | 20 +- src/Rust/rustfmt.toml => rustfmt.toml | 0 .../App.axaml | 2 +- .../App.axaml.cs | 2 +- .../CSharpAvalonia.csproj} | 1 + .../MainWindow.axaml | 4 +- .../MainWindow.axaml.cs | 2 +- .../MemoryLogger.cs | 2 +- .../Program.cs | 2 +- .../app.manifest | 0 .../build-linux.sh | 4 +- .../build-osx.sh | 4 +- .../build-win.bat | 4 +- .../dev-scripts/build-linux.sh | 4 +- .../dev-scripts/build-osx.sh | 4 +- .../dev-scripts/build-win.bat | 4 +- .../readme.md | 0 .../.editorconfig | 0 .../.gitignore | 0 .../Assets/NuGet.config | 0 .../Assets/NuGet.config.meta | 0 .../Assets/Packages.meta | 0 ...Extensions.Logging.Abstractions.2.2.0.meta | 0 .../Microsoft.Win32.Registry.5.0.0.meta | 0 .../Packages/Newtonsoft.Json.13.0.1.meta | 0 .../Packages/NuGet.Versioning.6.9.1.meta | 0 .../System.Security.AccessControl.5.0.0.meta | 0 ...stem.Security.Principal.Windows.5.0.0.meta | 0 .../Assets/Packages/Velopack.0.0.359.meta | 0 .../Assets/Scenes.meta | 0 .../Assets/Scenes/SampleScene.unity | 0 .../Assets/Scenes/SampleScene.unity.meta | 0 .../Assets/Scenes/UpdateSample.cs | 0 .../Assets/Scenes/UpdateSample.cs.meta | 0 .../Assets/TextMesh Pro.meta | 0 .../Assets/TextMesh Pro/Documentation.meta | 0 .../TextMesh Pro User Guide 2016.pdf | Bin .../TextMesh Pro User Guide 2016.pdf.meta | 0 .../Assets/TextMesh Pro/Fonts.meta | 0 .../Fonts/LiberationSans - OFL.txt | 0 .../Fonts/LiberationSans - OFL.txt.meta | 0 .../TextMesh Pro/Fonts/LiberationSans.ttf | Bin .../Fonts/LiberationSans.ttf.meta | 0 .../Assets/TextMesh Pro/Resources.meta | 0 .../Resources/Fonts & Materials.meta | 0 .../LiberationSans SDF - Drop Shadow.mat | 0 .../LiberationSans SDF - Drop Shadow.mat.meta | 0 .../LiberationSans SDF - Fallback.asset | 0 .../LiberationSans SDF - Fallback.asset.meta | 0 .../LiberationSans SDF - Outline.mat | 0 .../LiberationSans SDF - Outline.mat.meta | 0 .../LiberationSans SDF.asset | 0 .../LiberationSans SDF.asset.meta | 0 .../LineBreaking Following Characters.txt | 0 ...LineBreaking Following Characters.txt.meta | 0 .../LineBreaking Leading Characters.txt | 0 .../LineBreaking Leading Characters.txt.meta | 0 .../TextMesh Pro/Resources/Sprite Assets.meta | 0 .../Resources/Sprite Assets/EmojiOne.asset | 0 .../Sprite Assets/EmojiOne.asset.meta | 0 .../TextMesh Pro/Resources/Style Sheets.meta | 0 .../Style Sheets/Default Style Sheet.asset | 0 .../Default Style Sheet.asset.meta | 0 .../TextMesh Pro/Resources/TMP Settings.asset | 0 .../Resources/TMP Settings.asset.meta | 0 .../Assets/TextMesh Pro/Shaders.meta | 0 .../Shaders/TMP_Bitmap-Custom-Atlas.shader | 0 .../TMP_Bitmap-Custom-Atlas.shader.meta | 0 .../Shaders/TMP_Bitmap-Mobile.shader | 0 .../Shaders/TMP_Bitmap-Mobile.shader.meta | 0 .../TextMesh Pro/Shaders/TMP_Bitmap.shader | 0 .../Shaders/TMP_Bitmap.shader.meta | 0 .../Shaders/TMP_SDF Overlay.shader | 0 .../Shaders/TMP_SDF Overlay.shader.meta | 0 .../TextMesh Pro/Shaders/TMP_SDF SSD.shader | 0 .../Shaders/TMP_SDF SSD.shader.meta | 0 .../Shaders/TMP_SDF-Mobile Masking.shader | 0 .../TMP_SDF-Mobile Masking.shader.meta | 0 .../Shaders/TMP_SDF-Mobile Overlay.shader | 0 .../TMP_SDF-Mobile Overlay.shader.meta | 0 .../Shaders/TMP_SDF-Mobile SSD.shader | 0 .../Shaders/TMP_SDF-Mobile SSD.shader.meta | 0 .../Shaders/TMP_SDF-Mobile.shader | 0 .../Shaders/TMP_SDF-Mobile.shader.meta | 0 .../Shaders/TMP_SDF-Surface-Mobile.shader | 0 .../TMP_SDF-Surface-Mobile.shader.meta | 0 .../Shaders/TMP_SDF-Surface.shader | 0 .../Shaders/TMP_SDF-Surface.shader.meta | 0 .../TextMesh Pro/Shaders/TMP_SDF.shader | 0 .../TextMesh Pro/Shaders/TMP_SDF.shader.meta | 0 .../TextMesh Pro/Shaders/TMP_Sprite.shader | 0 .../Shaders/TMP_Sprite.shader.meta | 0 .../Assets/TextMesh Pro/Shaders/TMPro.cginc | 0 .../TextMesh Pro/Shaders/TMPro.cginc.meta | 0 .../TextMesh Pro/Shaders/TMPro_Mobile.cginc | 0 .../Shaders/TMPro_Mobile.cginc.meta | 0 .../Shaders/TMPro_Properties.cginc | 0 .../Shaders/TMPro_Properties.cginc.meta | 0 .../TextMesh Pro/Shaders/TMPro_Surface.cginc | 0 .../Shaders/TMPro_Surface.cginc.meta | 0 .../Assets/TextMesh Pro/Sprites.meta | 0 .../Sprites/EmojiOne Attribution.txt | 0 .../Sprites/EmojiOne Attribution.txt.meta | 0 .../Assets/TextMesh Pro/Sprites/EmojiOne.json | 0 .../TextMesh Pro/Sprites/EmojiOne.json.meta | 0 .../Assets/TextMesh Pro/Sprites/EmojiOne.png | Bin .../TextMesh Pro/Sprites/EmojiOne.png.meta | 0 .../Assets/packages.config | 0 .../Assets/packages.config.meta | 0 .../UnityCommon.props | 0 .../UnityMonoSample/Main.cpp | 0 .../UnityMonoSample/PrecompiledHeader.cpp | 0 .../UnityMonoSample/PrecompiledHeader.h | 0 .../UnityConfiguration.gen.cpp | 0 .../UnityMonoSample/UnityData.vcxitems | 0 .../UnityMonoSample/UnityMonoSample.vcxproj | 0 .../UnityMonoSample/WindowsPlayer.ico | Bin .../UnityMonoSample/WindowsPlayer.manifest | 0 .../UnityMonoSample/WindowsPlayer.rc | 0 .../UnityMonoSample/WindowsPlayerVersion.rc | 0 .../UnityMonoSample/resource.h | 0 .../UnityPlayerStub/Exports.cpp | 0 .../UnityPlayerStub/Exports.h | 0 .../UnityPlayerStub/UnityPlayerStub.vcxproj | 0 .../BuildVisualStudioSolution/Velopack.cpp | 0 .../BuildVisualStudioSolution/Velopack.hpp | 0 .../ProjectSettings/AudioManager.asset | 0 .../ProjectSettings/ClusterInputManager.asset | 0 .../ProjectSettings/DynamicsManager.asset | 0 .../ProjectSettings/EditorBuildSettings.asset | 0 .../ProjectSettings/EditorSettings.asset | 0 .../ProjectSettings/GraphicsSettings.asset | 0 .../ProjectSettings/InputManager.asset | 0 .../ProjectSettings/MemorySettings.asset | 0 .../ProjectSettings/NavMeshAreas.asset | 0 .../PackageManagerSettings.asset | 0 .../ProjectSettings/Physics2DSettings.asset | 0 .../ProjectSettings/PresetManager.asset | 0 .../ProjectSettings/ProjectSettings.asset | 0 .../ProjectSettings/ProjectVersion.txt | 0 .../ProjectSettings/QualitySettings.asset | 0 .../SceneTemplateSettings.json | 0 .../ProjectSettings/TagManager.asset | 0 .../ProjectSettings/TimeManager.asset | 0 .../UnityConnectSettings.asset | 0 .../ProjectSettings/VFXManager.asset | 0 .../VersionControlSettings.asset | 0 .../ProjectSettings/XRSettings.asset | 0 .../ProjectSettings/boot.config | 0 .../README.md | 0 .../package-lock.json | 0 .../package.json | 0 .../{UnoSample => CSharpUno}/.editorconfig | 0 samples/{UnoSample => CSharpUno}/.gitignore | 0 .../.vscode/extensions.json | 0 .../.vscode/launch.json | 0 .../.vscode/settings.json | 0 .../.vscode/tasks.json | 0 samples/{UnoSample => CSharpUno}/.vsconfig | 0 .../Directory.Build.props | 0 .../Directory.Build.targets | 0 .../Directory.Packages.props | 0 samples/{UnoSample => CSharpUno}/README.md | 0 .../{UnoSample => CSharpUno}/UnoSample.sln | 0 .../UnoSample/App.xaml | 0 .../UnoSample/App.xaml.cs | 0 .../UnoSample/Assets/Icons/icon.svg | 0 .../Assets/Icons/icon_foreground.svg | 0 .../UnoSample/Assets/Images/back.svg | 0 .../UnoSample/Assets/SharedAssets.md | 0 .../UnoSample/Assets/Splash/splash_screen.svg | 0 .../UnoSample/GlobalUsings.cs | 0 .../UnoSample/Models/AppConfig.cs | 0 .../UnoSample/Models/Entity.cs | 0 .../UnoSample/Models/WeatherForecast.cs | 0 .../UnoSample/Package.appxmanifest | 0 .../UnoSample/Platforms/Desktop/Program.cs | 0 .../Platforms/MacCatalyst/Entitlements.plist | 0 .../Platforms/MacCatalyst/Info.plist | 0 .../Platforms/MacCatalyst/Main.maccatalyst.cs | 0 .../LaunchImages.launchimage/Contents.json | 0 .../UnoSample/Platforms/Windows/Program.cs | 0 .../PublishProfiles/win-arm64.pubxml | 0 .../Properties/PublishProfiles/win-x64.pubxml | 0 .../Properties/PublishProfiles/win-x86.pubxml | 0 .../UnoSample/Presentation/MainPage.xaml | 0 .../UnoSample/Presentation/MainPage.xaml.cs | 0 .../UnoSample/Presentation/MainViewModel.cs | 0 .../UnoSample/Presentation/Shell.xaml | 0 .../UnoSample/Presentation/Shell.xaml.cs | 0 .../UnoSample/Presentation/ShellViewModel.cs | 0 .../UnoSample/ReadMe.md | 0 .../Serialization/WeatherForecastContext.cs | 0 .../Services/Caching/IWeatherCache.cs | 0 .../Services/Caching/WeatherCache.cs | 0 .../Services/Endpoints/DebugHandler.cs | 0 .../Services/Endpoints/IApiClient.cs | 0 .../UnoSample/Strings/en/Resources.resw | 0 .../UnoSample/Strings/es/Resources.resw | 0 .../UnoSample/Strings/fr/Resources.resw | 0 .../UnoSample/Strings/pt-BR/Resources.resw | 0 .../Styles/ColorPaletteOverride.json | 0 .../Styles/ColorPaletteOverride.xaml | 0 .../UnoSample/UnoSample.csproj | 0 .../UnoSample/app.manifest | 0 .../UnoSample/appsettings.development.json | 0 .../UnoSample/appsettings.json | 0 samples/{UnoSample => CSharpUno}/global.json | 0 samples/{VeloWpfSample => CSharpWpf}/App.xaml | 4 +- .../{VeloWpfSample => CSharpWpf}/App.xaml.cs | 2 +- .../AssemblyInfo.cs | 0 .../CSharpWpf.csproj} | 3 +- .../MainWindow.xaml | 6 +- .../MainWindow.xaml.cs | 2 +- .../MemoryLogger.cs | 2 +- .../{VeloWpfSample => CSharpWpf}/Program.cs | 4 +- .../{VeloWpfSample => CSharpWpf}/build.bat | 4 +- .../{VeloWpfSample => CSharpWpf}/readme.md | 0 samples/Directory.Build.targets | 2 +- samples/readme.md | 13 +- src/Directory.Build.props | 4 +- src/Directory.Build.targets | 24 +- src/Rust/UpdateLocksmith_x64.lib | Bin 2580890 -> 0 bytes src/Rust/UpdateLocksmith_x86.lib | Bin 2539506 -> 0 bytes src/Rust/src/testawareapp.rs | 16 - src/Rust/src/windows/locksmith.rs | 9 - src/Velopack.Build/packages.lock.json | 1297 ------ src/Velopack.Deployment/packages.lock.json | 887 ---- src/Velopack.IcoLib/packages.lock.json | 93 - .../packages.lock.json | 945 ---- .../packages.lock.json | 1095 ----- src/Velopack.Packaging/packages.lock.json | 905 ---- src/Velopack.Vpk/packages.lock.json | 2809 ------------ src/Velopack/packages.lock.json | 205 - src/{Rust => bins}/.vscode/launch.json | 0 src/{Rust => bins}/.vscode/settings.json | 0 src/{Rust => bins}/Cargo.lock | 0 src/{Rust => bins}/Cargo.toml | 23 +- src/{Rust => bins}/app.manifest | 0 src/{Rust => bins}/build.rs | 25 +- src/{Rust => bins}/src/commands/apply.rs | 0 .../src/commands/apply_linux_impl.rs | 0 .../src/commands/apply_osx_impl.rs | 0 .../src/commands/apply_windows_impl.rs | 2 +- src/{Rust => bins}/src/commands/install.rs | 0 src/{Rust => bins}/src/commands/mod.rs | 0 src/{Rust => bins}/src/commands/patch.rs | 0 src/{Rust => bins}/src/commands/start.rs | 0 .../src/commands/start_windows_impl.rs | 0 src/{Rust => bins}/src/commands/uninstall.rs | 0 src/{Rust => bins}/src/lib.rs | 0 src/{Rust => bins}/src/logging.rs | 0 src/{Rust => bins}/src/setup.rs | 6 +- src/{Rust => bins}/src/shared/bundle.rs | 0 .../src/shared/dialogs_common.rs | 0 .../src/shared/dialogs_const.rs | 0 .../src/shared/dialogs_linux.rs | 0 src/{Rust => bins}/src/shared/dialogs_osx.rs | 0 .../src/shared/dialogs_windows.rs | 81 +- src/{Rust => bins}/src/shared/download.rs | 0 src/{Rust => bins}/src/shared/macho.rs | 0 src/{Rust => bins}/src/shared/mod.rs | 0 src/{Rust => bins}/src/shared/runtime_arch.rs | 0 src/{Rust => bins}/src/shared/util_common.rs | 0 src/{Rust => bins}/src/shared/util_linux.rs | 0 src/{Rust => bins}/src/shared/util_osx.rs | 0 src/{Rust => bins}/src/shared/util_windows.rs | 0 src/{Rust => bins}/src/stub.rs | 0 src/{Rust => bins}/src/testapp.rs | 0 src/{Rust => bins}/src/update.rs | 2 +- src/{Rust => bins}/src/windows/known_path.rs | 0 src/bins/src/windows/locksmith.rs | 48 + src/{Rust => bins}/src/windows/mitigate.rs | 0 src/{Rust => bins}/src/windows/mod.rs | 0 .../src/windows/prerequisite.rs | 0 src/{Rust => bins}/src/windows/runtimes.rs | 0 src/{Rust => bins}/src/windows/self_delete.rs | 0 src/{Rust => bins}/src/windows/shortcuts.rs | 0 src/{Rust => bins}/src/windows/splash.rs | 2 +- src/{Rust => bins}/src/windows/strings.rs | 0 src/{Rust => bins}/src/windows/util.rs | 0 src/{Rust => bins}/tests/commands.rs | 4 +- src/{Rust => bins}/tests/common/mod.rs | 0 src/lib-cpp/CMakeLists.txt | 47 + src/lib-cpp/api/Foo.hpp | 108 + src/lib-cpp/api/Foo_fwd.hpp | 9 + src/lib-cpp/api/c_Foo.h | 28 + src/lib-cpp/api/rust_foreign_slice_impl.hpp | 77 + src/lib-cpp/api/rust_foreign_slice_iter.hpp | 131 + src/lib-cpp/api/rust_foreign_vec_impl.hpp | 123 + src/lib-cpp/api/rust_slice.h | 46 + src/lib-cpp/api/rust_slice_access.hpp | 50 + src/lib-cpp/api/rust_slice_mut.h | 33 + src/lib-cpp/api/rust_slice_tmpl.hpp | 59 + src/lib-cpp/api/rust_str.h | 127 + src/lib-cpp/api/rust_vec.h | 38 + src/lib-cpp/api/rust_vec_access.hpp | 58 + src/lib-cpp/api/rust_vec_impl.hpp | 78 + src/lib-cpp/generator/Cargo.toml | 18 + src/lib-cpp/generator/build.rs | 19 + src/lib-cpp/generator/src/cpp_glue.rs | 440 ++ src/lib-cpp/generator/src/cpp_glue.rs.in | 11 + src/lib-cpp/generator/src/lib.rs | 45 + src/lib-cpp/main.cpp | 21 + .../Compression/BZip2Stream.cs | 0 .../Compression/BinaryPatchUtility.cs | 0 .../Compression/ChecksumFailedException.cs | 0 .../Compression/DeltaPackage.cs | 0 .../Compression/DeltaUpdateExe.cs | 0 .../Compression/EasyZip.cs | 0 .../Compression/MsDeltaCompression.cs | 0 .../Internal/CompiledJson.cs | 0 .../Internal/Disposable.cs | 0 .../Internal/EnumerableExtensions.cs | 0 .../Internal/LoggerExtensions.cs | 0 .../Internal/ProcessExtensions.cs | 0 .../Internal/SymbolicLink.cs | 0 .../Internal/Utility.cs | 0 .../Locators/IVelopackLocator.cs | 0 .../Locators/LinuxVelopackLocator.cs | 0 .../Locators/OsxVelopackLocator.cs | 0 .../Locators/TestVelopackLocator.cs | 0 .../Locators/VelopackLocator.cs | 0 .../Locators/VelopackLocatorExtensions.cs | 0 .../Locators/WindowsVelopackLocator.cs | 0 .../NuGet/NugetUtil.cs | 0 .../NuGet/PackageManifest.cs | 0 .../NuGet/ZipPackage.cs | 0 .../NuGet/ZipPackageFile.cs | 0 .../Properties/AssemblyInfo.cs | 0 src/{Velopack => lib-csharp}/RID.cs | 0 src/{Velopack => lib-csharp}/ReleaseEntry.cs | 0 .../Sources/GitBase.cs | 0 .../Sources/GiteaSource.cs | 0 .../Sources/GithubSource.cs | 0 .../Sources/GitlabSource.cs | 0 .../Sources/HttpClientFileDownloader.cs | 0 .../Sources/IFileDownloader.cs | 0 .../Sources/IUpdateSource.cs | 0 .../Sources/SimpleFileSource.cs | 0 .../Sources/SimpleWebSource.cs | 0 .../Sources/VelopackFlowUpdateSource.cs | 0 src/{Velopack => lib-csharp}/UpdateExe.cs | 0 src/{Velopack => lib-csharp}/UpdateInfo.cs | 0 .../UpdateManager.Helpers.cs | 0 src/{Velopack => lib-csharp}/UpdateManager.cs | 0 src/{Velopack => lib-csharp}/UpdateOptions.cs | 0 src/{Velopack => lib-csharp}/Velopack.csproj | 0 src/{Velopack => lib-csharp}/VelopackApp.cs | 0 src/{Velopack => lib-csharp}/VelopackAsset.cs | 0 .../VelopackRuntimeInfo.cs | 0 .../Windows/RuntimeInfo.cs | 0 .../Windows/Runtimes.cs | 0 .../Windows/ShellLink.cs | 0 .../Windows/Shortcuts.cs | 0 src/lib-rust/Cargo.lock | 1543 +++++++ src/lib-rust/Cargo.toml | 39 + src/lib-rust/README.md | 19 + src/lib-rust/samples/iced/Cargo.lock | 3939 +++++++++++++++++ src/lib-rust/samples/iced/Cargo.toml | 17 + src/lib-rust/samples/iced/Velopack.icns | Bin 0 -> 5595 bytes src/lib-rust/samples/iced/Velopack.png | Bin 0 -> 3464 bytes src/lib-rust/samples/iced/build-osx.sh | 26 + src/lib-rust/samples/iced/build-win.bat | 20 + src/lib-rust/samples/iced/build.rs | 7 + src/lib-rust/samples/iced/src/main.rs | 135 + src/lib-rust/src/app.rs | 24 + src/lib-rust/src/bundle.rs | 161 + src/lib-rust/src/delta.rs | 48 + src/lib-rust/src/download.rs | 82 + src/lib-rust/src/lib.rs | 159 + src/lib-rust/src/locator.rs | 154 + src/lib-rust/src/manager.rs | 428 ++ src/lib-rust/src/manifest.rs | 94 + src/lib-rust/src/sources.rs | 96 + src/lib-rust/src/util.rs | 34 + .../Velopack.Build/MSBuildAsyncTask.cs | 0 src/{ => vpk}/Velopack.Build/MSBuildLogger.cs | 0 src/{ => vpk}/Velopack.Build/PackTask.cs | 0 src/{ => vpk}/Velopack.Build/PublishTask.cs | 0 .../Velopack.Build/TaskOptionsMapper.cs | 0 .../Velopack.Build/Velopack.Build.csproj | 0 .../Velopack.Build/Velopack.Build.targets | 0 .../Velopack.Deployment/AzureRepository.cs | 0 .../Velopack.Deployment/GitHubRepository.cs | 0 .../Velopack.Deployment/GiteaRepository.cs | 0 .../Velopack.Deployment/HttpRepository.cs | 0 .../Velopack.Deployment/LocalRepository.cs | 0 .../Velopack.Deployment/S3Repository.cs | 0 .../Velopack.Deployment.csproj | 0 .../Velopack.Deployment/_ObjectRepository.cs | 0 .../Velopack.Deployment/_Repository.cs | 0 .../Velopack.IcoLib/Binary/BitReader.cs | 0 .../Velopack.IcoLib/Binary/BitWriter.cs | 0 .../Binary/ByteOrderConverter.cs | 0 .../Velopack.IcoLib/Binary/ByteReader.cs | 0 .../Velopack.IcoLib/Binary/ByteWriter.cs | 0 .../Velopack.IcoLib/Codecs/BmpDecoder.cs | 0 .../Velopack.IcoLib/Codecs/BmpEncoder.cs | 0 .../Velopack.IcoLib/Codecs/BmpUtil.cs | 0 .../Velopack.IcoLib/Codecs/EncodingOptions.cs | 0 .../Codecs/FileFormatConstants.cs | 0 .../Velopack.IcoLib/Codecs/IcoDecoder.cs | 0 .../Velopack.IcoLib/Codecs/IcoEncoder.cs | 0 .../Velopack.IcoLib/Codecs/PngDecoder.cs | 0 .../Velopack.IcoLib/Host/ExceptionWrapper.cs | 0 .../Velopack.IcoLib/Host/IErrorReporter.cs | 0 .../Velopack.IcoLib/Model/IcoFrame.cs | 0 .../Velopack.IcoLib/Model/IcoFrameEncoding.cs | 0 .../Velopack.IcoLib/Model/ParseContext.cs | 0 .../Velopack.IcoLib/Model/PngFileEncoding.cs | 0 src/{ => vpk}/Velopack.IcoLib/README.md | 0 .../Validation/IcoErrorCode.cs | 0 .../Validation/InvalidIcoFileException.cs | 0 .../Validation/InvalidPngFileException.cs | 0 .../Velopack.IcoLib/Velopack.IcoLib.csproj | 0 .../Velopack.Packaging.Unix/AppImageTool.cs | 0 .../Velopack.Packaging.Unix/BinDetect.cs | 0 .../Velopack.Packaging.Unix/Chmod.cs | 0 .../Commands/LinuxPackCommandRunner.cs | 0 .../Commands/LinuxPackOptions.cs | 0 .../Commands/OsxBundleCommandRunner.cs | 0 .../Commands/OsxBundleOptions.cs | 0 .../Commands/OsxPackCommandRunner.cs | 0 .../Commands/OsxPackOptions.cs | 0 .../Velopack.Packaging.Unix/OsxAppInfo.cs | 0 .../Velopack.Packaging.Unix/OsxBuildTools.cs | 0 .../OsxStructureBuilder.cs | 0 .../Velopack.Packaging.Unix/PlistWriter.cs | 0 .../Velopack.Packaging.Unix.csproj | 0 .../AuthenticodeTools.cs | 0 .../Velopack.Packaging.Windows/CodeSign.cs | 0 .../Commands/WindowsPackCommandRunner.cs | 0 .../Commands/WindowsPackOptions.cs | 0 .../Commands/WindowsReleasifyOptions.cs | 0 .../Commands/WindowsSigningOptions.cs | 0 .../Velopack.Packaging.Windows/CompatUtil.cs | 0 .../Velopack.Packaging.Windows/IcoExtract.cs | 0 .../ResourceEdit.cs | 0 .../Velopack.Packaging.Windows/SetupBundle.cs | 0 .../Velopack.Packaging.Windows.csproj | 0 .../Abstractions/ICommand.cs | 0 .../Abstractions/IConsole.cs | 0 .../Abstractions/IFancyConsole.cs | 0 .../Abstractions/IFancyConsoleProgress.cs | 0 .../Abstractions/INugetPackCommand.cs | 0 .../Abstractions/IOutputOptions.cs | 0 .../Abstractions/IPackOptions.cs | 0 .../Abstractions/IPlatformOptions.cs | 0 .../Velopack.Packaging/BuildAssets.cs | 0 .../Commands/DeltaGenCommandRunner.cs | 0 .../Commands/DeltaGenOptions.cs | 0 .../Commands/DeltaPatchCommandRunner.cs | 0 .../Commands/DeltaPatchOptions.cs | 0 .../Velopack.Packaging/DeltaEmbedded.cs | 0 src/{ => vpk}/Velopack.Packaging/DeltaMode.cs | 0 .../Velopack.Packaging/DeltaPackageBuilder.cs | 0 .../Exceptions/ProcessFailedException.cs | 0 .../Exceptions/UserInfoException.cs | 0 .../VelopackAppVerificationException.cs | 0 src/{ => vpk}/Velopack.Packaging/Exe.cs | 0 .../Flow/AuthConfiguration.cs | 0 .../Flow/CreateReleaseGroupRequest.cs | 0 .../Flow/HmacAuthHttpClientHandler.cs | 0 .../Velopack.Packaging/Flow/HmacHelper.cs | 0 .../Velopack.Packaging/Flow/Profile.cs | 0 .../Velopack.Packaging/Flow/ReleaseGroup.cs | 0 .../Velopack.Packaging/Flow/UploadOptions.cs | 0 .../Flow/VelopackFlowServiceClient.cs | 0 .../Flow/VelopackLoginOptions.cs | 0 .../Flow/VelopackServiceOptions.cs | 0 .../Velopack.Packaging/HelperFile.cs | 0 .../HttpClientExtensions.cs | 0 .../Velopack.Packaging/PackageBuilder.cs | 0 .../Velopack.Packaging/ReleaseEntryHelper.cs | 0 .../Velopack.Packaging/ReleasePackage.cs | 0 .../Velopack.Packaging/SimpleJson.cs | 0 .../Velopack.Packaging.csproj | 2 +- src/{ => vpk}/Velopack.Packaging/Zstd.cs | 0 .../Velopack.Vpk/Commands/DeltaGenCommand.cs | 0 .../Commands/DeltaPatchCommand.cs | 0 .../Commands/Deployment/AzureBaseCommand.cs | 0 .../Deployment/AzureDownloadCommand.cs | 0 .../Commands/Deployment/AzureUploadCommand.cs | 0 .../Commands/Deployment/GitHubBaseCommand.cs | 0 .../Deployment/GitHubDownloadCommand.cs | 0 .../Deployment/GitHubUploadCommand.cs | 0 .../Commands/Deployment/GiteaBaseCommand.cs | 0 .../Deployment/GiteaDownloadCommand.cs | 0 .../Commands/Deployment/GiteaUploadCommand.cs | 0 .../Deployment/HttpDownloadCommand.cs | 0 .../Commands/Deployment/LocalBaseCommand.cs | 0 .../Deployment/LocalDownloadCommand.cs | 0 .../Commands/Deployment/LocalUploadCommand.cs | 0 .../Commands/Deployment/S3BaseCommand.cs | 0 .../Commands/Deployment/S3DownloadCommand.cs | 0 .../Commands/Deployment/S3UploadCommand.cs | 0 .../Commands/Flow/LoginCommand.cs | 0 .../Commands/Flow/LoginCommandRunner.cs | 0 .../Commands/Flow/LoginOptions.cs | 0 .../Commands/Flow/LogoutCommand.cs | 0 .../Commands/Flow/LogoutCommandRunner.cs | 0 .../Commands/Flow/LogoutOptions.cs | 0 .../Commands/Flow/PublishCommand.cs | 0 .../Commands/Flow/PublishCommandRunner.cs | 0 .../Commands/Flow/PublishOptions.cs | 0 .../Commands/Flow/VelopackServiceCommand.cs | 0 .../Velopack.Vpk/Commands/LinuxPackCommand.cs | 0 .../Velopack.Vpk/Commands/LongHelpCommand.cs | 0 .../Velopack.Vpk/Commands/OsxBundleCommand.cs | 0 .../Velopack.Vpk/Commands/OsxPackCommand.cs | 0 .../Commands/SystemCommandLineExtensions.cs | 0 .../Commands/WindowsPackCommand.cs | 0 .../Velopack.Vpk/Commands/_BaseCommand.cs | 0 .../Velopack.Vpk/Commands/_OutputCommand.cs | 0 .../Velopack.Vpk/Commands/_PackCommand.cs | 0 .../Velopack.Vpk/Commands/_PlatformCommand.cs | 0 .../Converters/DirectoryInfoConverter.cs | 0 .../Converters/FileInfoConverter.cs | 0 src/{ => vpk}/Velopack.Vpk/GlobalUsings.cs | 0 .../Velopack.Vpk/Logging/BasicConsole.cs | 0 .../Logging/ConsoleExpressionNoMarkup.cs | 0 .../Velopack.Vpk/Logging/LevelStyle.cs | 0 .../Logging/MySpectreConsoleSink.cs | 0 .../Logging/RenderableCollection.cs | 0 .../Velopack.Vpk/Logging/SpectreConsole.cs | 0 src/{ => vpk}/Velopack.Vpk/OptionMapper.cs | 0 src/{ => vpk}/Velopack.Vpk/Program.cs | 0 .../Velopack.Vpk/Updates/NugetDownloader.cs | 0 .../Velopack.Vpk/Updates/NullNugetLogger.cs | 0 .../Velopack.Vpk/Updates/UpdateChecker.cs | 0 .../Velopack.Vpk/Velopack.Vpk.csproj | 0 .../Velopack.Vpk/VelopackDefaults.cs | 0 test/PathHelper.cs | 11 +- test/TestApp/TestApp.csproj | 2 +- .../Velopack.CommandLine.Tests.csproj | 2 +- .../CompatUtilTests.cs | 14 +- .../Velopack.Packaging.Tests.csproj | 2 +- .../WindowsPackTests.cs | 10 +- test/Velopack.Tests/Velopack.Tests.csproj | 4 +- 547 files changed, 11592 insertions(+), 8464 deletions(-) rename {src/Rust/.cargo => .cargo}/config.toml (100%) delete mode 100644 .vscode/settings.json create mode 100644 Cargo.lock create mode 100644 Cargo.toml rename src/Rust/Cross.toml => Cross.toml (100%) rename src/Rust/rustfmt.toml => rustfmt.toml (100%) rename samples/{AvaloniaCrossPlat => CSharpAvalonia}/App.axaml (89%) rename samples/{AvaloniaCrossPlat => CSharpAvalonia}/App.axaml.cs (94%) rename samples/{AvaloniaCrossPlat/AvaloniaCrossPlat.csproj => CSharpAvalonia/CSharpAvalonia.csproj} (95%) rename samples/{AvaloniaCrossPlat => CSharpAvalonia}/MainWindow.axaml (93%) rename samples/{AvaloniaCrossPlat => CSharpAvalonia}/MainWindow.axaml.cs (99%) rename samples/{AvaloniaCrossPlat => CSharpAvalonia}/MemoryLogger.cs (97%) rename samples/{AvaloniaCrossPlat => CSharpAvalonia}/Program.cs (97%) rename samples/{AvaloniaCrossPlat => CSharpAvalonia}/app.manifest (100%) rename samples/{AvaloniaCrossPlat => CSharpAvalonia}/build-linux.sh (77%) rename samples/{AvaloniaCrossPlat => CSharpAvalonia}/build-osx.sh (77%) rename samples/{AvaloniaCrossPlat => CSharpAvalonia}/build-win.bat (68%) rename samples/{AvaloniaCrossPlat => CSharpAvalonia}/dev-scripts/build-linux.sh (82%) mode change 100755 => 100644 rename samples/{AvaloniaCrossPlat => CSharpAvalonia}/dev-scripts/build-osx.sh (80%) mode change 100755 => 100644 rename samples/{AvaloniaCrossPlat => CSharpAvalonia}/dev-scripts/build-win.bat (84%) rename samples/{AvaloniaCrossPlat => CSharpAvalonia}/readme.md (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/.editorconfig (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/.gitignore (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/Assets/NuGet.config (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/Assets/NuGet.config.meta (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/Assets/Packages.meta (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/Assets/Packages/Microsoft.Extensions.Logging.Abstractions.2.2.0.meta (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/Assets/Packages/Microsoft.Win32.Registry.5.0.0.meta (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/Assets/Packages/Newtonsoft.Json.13.0.1.meta (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/Assets/Packages/NuGet.Versioning.6.9.1.meta (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/Assets/Packages/System.Security.AccessControl.5.0.0.meta (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/Assets/Packages/System.Security.Principal.Windows.5.0.0.meta (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/Assets/Packages/Velopack.0.0.359.meta (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/Assets/Scenes.meta (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/Assets/Scenes/SampleScene.unity (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/Assets/Scenes/SampleScene.unity.meta (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/Assets/Scenes/UpdateSample.cs (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/Assets/Scenes/UpdateSample.cs.meta (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/Assets/TextMesh Pro.meta (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/Assets/TextMesh Pro/Documentation.meta (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/Assets/TextMesh Pro/Documentation/TextMesh Pro User Guide 2016.pdf (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/Assets/TextMesh Pro/Documentation/TextMesh Pro User Guide 2016.pdf.meta (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/Assets/TextMesh Pro/Fonts.meta (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/Assets/TextMesh Pro/Fonts/LiberationSans - OFL.txt (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/Assets/TextMesh Pro/Fonts/LiberationSans - OFL.txt.meta (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/Assets/TextMesh Pro/Fonts/LiberationSans.ttf (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/Assets/TextMesh Pro/Fonts/LiberationSans.ttf.meta (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/Assets/TextMesh Pro/Resources.meta (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/Assets/TextMesh Pro/Resources/Fonts & Materials.meta (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/Assets/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF - Drop Shadow.mat (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/Assets/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF - Drop Shadow.mat.meta (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/Assets/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF - Fallback.asset (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/Assets/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF - Fallback.asset.meta (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/Assets/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF - Outline.mat (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/Assets/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF - Outline.mat.meta (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/Assets/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF.asset (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/Assets/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF.asset.meta (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/Assets/TextMesh Pro/Resources/LineBreaking Following Characters.txt (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/Assets/TextMesh Pro/Resources/LineBreaking Following Characters.txt.meta (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/Assets/TextMesh Pro/Resources/LineBreaking Leading Characters.txt (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/Assets/TextMesh Pro/Resources/LineBreaking Leading Characters.txt.meta (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/Assets/TextMesh Pro/Resources/Sprite Assets.meta (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/Assets/TextMesh Pro/Resources/Sprite Assets/EmojiOne.asset (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/Assets/TextMesh Pro/Resources/Sprite Assets/EmojiOne.asset.meta (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/Assets/TextMesh Pro/Resources/Style Sheets.meta (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/Assets/TextMesh Pro/Resources/Style Sheets/Default Style Sheet.asset (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/Assets/TextMesh Pro/Resources/Style Sheets/Default Style Sheet.asset.meta (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/Assets/TextMesh Pro/Resources/TMP Settings.asset (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/Assets/TextMesh Pro/Resources/TMP Settings.asset.meta (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/Assets/TextMesh Pro/Shaders.meta (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/Assets/TextMesh Pro/Shaders/TMP_Bitmap-Custom-Atlas.shader (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/Assets/TextMesh Pro/Shaders/TMP_Bitmap-Custom-Atlas.shader.meta (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/Assets/TextMesh Pro/Shaders/TMP_Bitmap-Mobile.shader (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/Assets/TextMesh Pro/Shaders/TMP_Bitmap-Mobile.shader.meta (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/Assets/TextMesh Pro/Shaders/TMP_Bitmap.shader (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/Assets/TextMesh Pro/Shaders/TMP_Bitmap.shader.meta (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/Assets/TextMesh Pro/Shaders/TMP_SDF Overlay.shader (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/Assets/TextMesh Pro/Shaders/TMP_SDF Overlay.shader.meta (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/Assets/TextMesh Pro/Shaders/TMP_SDF SSD.shader (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/Assets/TextMesh Pro/Shaders/TMP_SDF SSD.shader.meta (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/Assets/TextMesh Pro/Shaders/TMP_SDF-Mobile Masking.shader (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/Assets/TextMesh Pro/Shaders/TMP_SDF-Mobile Masking.shader.meta (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/Assets/TextMesh Pro/Shaders/TMP_SDF-Mobile Overlay.shader (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/Assets/TextMesh Pro/Shaders/TMP_SDF-Mobile Overlay.shader.meta (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/Assets/TextMesh Pro/Shaders/TMP_SDF-Mobile SSD.shader (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/Assets/TextMesh Pro/Shaders/TMP_SDF-Mobile SSD.shader.meta (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/Assets/TextMesh Pro/Shaders/TMP_SDF-Mobile.shader (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/Assets/TextMesh Pro/Shaders/TMP_SDF-Mobile.shader.meta (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/Assets/TextMesh Pro/Shaders/TMP_SDF-Surface-Mobile.shader (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/Assets/TextMesh Pro/Shaders/TMP_SDF-Surface-Mobile.shader.meta (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/Assets/TextMesh Pro/Shaders/TMP_SDF-Surface.shader (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/Assets/TextMesh Pro/Shaders/TMP_SDF-Surface.shader.meta (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/Assets/TextMesh Pro/Shaders/TMP_SDF.shader (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/Assets/TextMesh Pro/Shaders/TMP_SDF.shader.meta (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/Assets/TextMesh Pro/Shaders/TMP_Sprite.shader (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/Assets/TextMesh Pro/Shaders/TMP_Sprite.shader.meta (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/Assets/TextMesh Pro/Shaders/TMPro.cginc (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/Assets/TextMesh Pro/Shaders/TMPro.cginc.meta (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/Assets/TextMesh Pro/Shaders/TMPro_Mobile.cginc (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/Assets/TextMesh Pro/Shaders/TMPro_Mobile.cginc.meta (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/Assets/TextMesh Pro/Shaders/TMPro_Properties.cginc (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/Assets/TextMesh Pro/Shaders/TMPro_Properties.cginc.meta (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/Assets/TextMesh Pro/Shaders/TMPro_Surface.cginc (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/Assets/TextMesh Pro/Shaders/TMPro_Surface.cginc.meta (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/Assets/TextMesh Pro/Sprites.meta (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/Assets/TextMesh Pro/Sprites/EmojiOne Attribution.txt (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/Assets/TextMesh Pro/Sprites/EmojiOne Attribution.txt.meta (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/Assets/TextMesh Pro/Sprites/EmojiOne.json (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/Assets/TextMesh Pro/Sprites/EmojiOne.json.meta (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/Assets/TextMesh Pro/Sprites/EmojiOne.png (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/Assets/TextMesh Pro/Sprites/EmojiOne.png.meta (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/Assets/packages.config (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/Assets/packages.config.meta (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/BuildVisualStudioSolution/UnityCommon.props (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/BuildVisualStudioSolution/UnityMonoSample/Main.cpp (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/BuildVisualStudioSolution/UnityMonoSample/PrecompiledHeader.cpp (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/BuildVisualStudioSolution/UnityMonoSample/PrecompiledHeader.h (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/BuildVisualStudioSolution/UnityMonoSample/UnityConfiguration.gen.cpp (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/BuildVisualStudioSolution/UnityMonoSample/UnityData.vcxitems (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/BuildVisualStudioSolution/UnityMonoSample/UnityMonoSample.vcxproj (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/BuildVisualStudioSolution/UnityMonoSample/WindowsPlayer.ico (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/BuildVisualStudioSolution/UnityMonoSample/WindowsPlayer.manifest (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/BuildVisualStudioSolution/UnityMonoSample/WindowsPlayer.rc (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/BuildVisualStudioSolution/UnityMonoSample/WindowsPlayerVersion.rc (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/BuildVisualStudioSolution/UnityMonoSample/resource.h (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/BuildVisualStudioSolution/UnityPlayerStub/Exports.cpp (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/BuildVisualStudioSolution/UnityPlayerStub/Exports.h (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/BuildVisualStudioSolution/UnityPlayerStub/UnityPlayerStub.vcxproj (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/BuildVisualStudioSolution/Velopack.cpp (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/BuildVisualStudioSolution/Velopack.hpp (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/ProjectSettings/AudioManager.asset (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/ProjectSettings/ClusterInputManager.asset (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/ProjectSettings/DynamicsManager.asset (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/ProjectSettings/EditorBuildSettings.asset (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/ProjectSettings/EditorSettings.asset (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/ProjectSettings/GraphicsSettings.asset (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/ProjectSettings/InputManager.asset (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/ProjectSettings/MemorySettings.asset (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/ProjectSettings/NavMeshAreas.asset (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/ProjectSettings/PackageManagerSettings.asset (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/ProjectSettings/Physics2DSettings.asset (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/ProjectSettings/PresetManager.asset (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/ProjectSettings/ProjectSettings.asset (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/ProjectSettings/ProjectVersion.txt (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/ProjectSettings/QualitySettings.asset (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/ProjectSettings/SceneTemplateSettings.json (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/ProjectSettings/TagManager.asset (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/ProjectSettings/TimeManager.asset (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/ProjectSettings/UnityConnectSettings.asset (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/ProjectSettings/VFXManager.asset (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/ProjectSettings/VersionControlSettings.asset (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/ProjectSettings/XRSettings.asset (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/ProjectSettings/boot.config (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/README.md (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/package-lock.json (100%) rename samples/{UnityMonoSample => CSharpUnityMono}/package.json (100%) rename samples/{UnoSample => CSharpUno}/.editorconfig (100%) rename samples/{UnoSample => CSharpUno}/.gitignore (100%) rename samples/{UnoSample => CSharpUno}/.vscode/extensions.json (100%) rename samples/{UnoSample => CSharpUno}/.vscode/launch.json (100%) rename samples/{UnoSample => CSharpUno}/.vscode/settings.json (100%) rename samples/{UnoSample => CSharpUno}/.vscode/tasks.json (100%) rename samples/{UnoSample => CSharpUno}/.vsconfig (100%) rename samples/{UnoSample => CSharpUno}/Directory.Build.props (100%) rename samples/{UnoSample => CSharpUno}/Directory.Build.targets (100%) rename samples/{UnoSample => CSharpUno}/Directory.Packages.props (100%) rename samples/{UnoSample => CSharpUno}/README.md (100%) rename samples/{UnoSample => CSharpUno}/UnoSample.sln (100%) rename samples/{UnoSample => CSharpUno}/UnoSample/App.xaml (100%) rename samples/{UnoSample => CSharpUno}/UnoSample/App.xaml.cs (100%) rename samples/{UnoSample => CSharpUno}/UnoSample/Assets/Icons/icon.svg (100%) rename samples/{UnoSample => CSharpUno}/UnoSample/Assets/Icons/icon_foreground.svg (100%) rename samples/{UnoSample => CSharpUno}/UnoSample/Assets/Images/back.svg (100%) rename samples/{UnoSample => CSharpUno}/UnoSample/Assets/SharedAssets.md (100%) rename samples/{UnoSample => CSharpUno}/UnoSample/Assets/Splash/splash_screen.svg (100%) rename samples/{UnoSample => CSharpUno}/UnoSample/GlobalUsings.cs (100%) rename samples/{UnoSample => CSharpUno}/UnoSample/Models/AppConfig.cs (100%) rename samples/{UnoSample => CSharpUno}/UnoSample/Models/Entity.cs (100%) rename samples/{UnoSample => CSharpUno}/UnoSample/Models/WeatherForecast.cs (100%) rename samples/{UnoSample => CSharpUno}/UnoSample/Package.appxmanifest (100%) rename samples/{UnoSample => CSharpUno}/UnoSample/Platforms/Desktop/Program.cs (100%) rename samples/{UnoSample => CSharpUno}/UnoSample/Platforms/MacCatalyst/Entitlements.plist (100%) rename samples/{UnoSample => CSharpUno}/UnoSample/Platforms/MacCatalyst/Info.plist (100%) rename samples/{UnoSample => CSharpUno}/UnoSample/Platforms/MacCatalyst/Main.maccatalyst.cs (100%) rename samples/{UnoSample => CSharpUno}/UnoSample/Platforms/MacCatalyst/Media.xcassets/LaunchImages.launchimage/Contents.json (100%) rename samples/{UnoSample => CSharpUno}/UnoSample/Platforms/Windows/Program.cs (100%) rename samples/{UnoSample => CSharpUno}/UnoSample/Platforms/Windows/Properties/PublishProfiles/win-arm64.pubxml (100%) rename samples/{UnoSample => CSharpUno}/UnoSample/Platforms/Windows/Properties/PublishProfiles/win-x64.pubxml (100%) rename samples/{UnoSample => CSharpUno}/UnoSample/Platforms/Windows/Properties/PublishProfiles/win-x86.pubxml (100%) rename samples/{UnoSample => CSharpUno}/UnoSample/Presentation/MainPage.xaml (100%) rename samples/{UnoSample => CSharpUno}/UnoSample/Presentation/MainPage.xaml.cs (100%) rename samples/{UnoSample => CSharpUno}/UnoSample/Presentation/MainViewModel.cs (100%) rename samples/{UnoSample => CSharpUno}/UnoSample/Presentation/Shell.xaml (100%) rename samples/{UnoSample => CSharpUno}/UnoSample/Presentation/Shell.xaml.cs (100%) rename samples/{UnoSample => CSharpUno}/UnoSample/Presentation/ShellViewModel.cs (100%) rename samples/{UnoSample => CSharpUno}/UnoSample/ReadMe.md (100%) rename samples/{UnoSample => CSharpUno}/UnoSample/Serialization/WeatherForecastContext.cs (100%) rename samples/{UnoSample => CSharpUno}/UnoSample/Services/Caching/IWeatherCache.cs (100%) rename samples/{UnoSample => CSharpUno}/UnoSample/Services/Caching/WeatherCache.cs (100%) rename samples/{UnoSample => CSharpUno}/UnoSample/Services/Endpoints/DebugHandler.cs (100%) rename samples/{UnoSample => CSharpUno}/UnoSample/Services/Endpoints/IApiClient.cs (100%) rename samples/{UnoSample => CSharpUno}/UnoSample/Strings/en/Resources.resw (100%) rename samples/{UnoSample => CSharpUno}/UnoSample/Strings/es/Resources.resw (100%) rename samples/{UnoSample => CSharpUno}/UnoSample/Strings/fr/Resources.resw (100%) rename samples/{UnoSample => CSharpUno}/UnoSample/Strings/pt-BR/Resources.resw (100%) rename samples/{UnoSample => CSharpUno}/UnoSample/Styles/ColorPaletteOverride.json (100%) rename samples/{UnoSample => CSharpUno}/UnoSample/Styles/ColorPaletteOverride.xaml (100%) rename samples/{UnoSample => CSharpUno}/UnoSample/UnoSample.csproj (100%) rename samples/{UnoSample => CSharpUno}/UnoSample/app.manifest (100%) rename samples/{UnoSample => CSharpUno}/UnoSample/appsettings.development.json (100%) rename samples/{UnoSample => CSharpUno}/UnoSample/appsettings.json (100%) rename samples/{UnoSample => CSharpUno}/global.json (100%) rename samples/{VeloWpfSample => CSharpWpf}/App.xaml (73%) rename samples/{VeloWpfSample => CSharpWpf}/App.xaml.cs (77%) rename samples/{VeloWpfSample => CSharpWpf}/AssemblyInfo.cs (100%) rename samples/{VeloWpfSample/VeloWpfSample.csproj => CSharpWpf/CSharpWpf.csproj} (86%) rename samples/{VeloWpfSample => CSharpWpf}/MainWindow.xaml (90%) rename samples/{VeloWpfSample => CSharpWpf}/MainWindow.xaml.cs (99%) rename samples/{VeloWpfSample => CSharpWpf}/MemoryLogger.cs (98%) rename samples/{VeloWpfSample => CSharpWpf}/Program.cs (92%) rename samples/{VeloWpfSample => CSharpWpf}/build.bat (64%) rename samples/{VeloWpfSample => CSharpWpf}/readme.md (100%) delete mode 100644 src/Rust/UpdateLocksmith_x64.lib delete mode 100644 src/Rust/UpdateLocksmith_x86.lib delete mode 100644 src/Rust/src/testawareapp.rs delete mode 100644 src/Rust/src/windows/locksmith.rs delete mode 100644 src/Velopack.Build/packages.lock.json delete mode 100644 src/Velopack.Deployment/packages.lock.json delete mode 100644 src/Velopack.IcoLib/packages.lock.json delete mode 100644 src/Velopack.Packaging.Unix/packages.lock.json delete mode 100644 src/Velopack.Packaging.Windows/packages.lock.json delete mode 100644 src/Velopack.Packaging/packages.lock.json delete mode 100644 src/Velopack.Vpk/packages.lock.json delete mode 100644 src/Velopack/packages.lock.json rename src/{Rust => bins}/.vscode/launch.json (100%) rename src/{Rust => bins}/.vscode/settings.json (100%) rename src/{Rust => bins}/Cargo.lock (100%) rename src/{Rust => bins}/Cargo.toml (81%) rename src/{Rust => bins}/app.manifest (100%) rename src/{Rust => bins}/build.rs (85%) rename src/{Rust => bins}/src/commands/apply.rs (100%) rename src/{Rust => bins}/src/commands/apply_linux_impl.rs (100%) rename src/{Rust => bins}/src/commands/apply_osx_impl.rs (100%) rename src/{Rust => bins}/src/commands/apply_windows_impl.rs (98%) rename src/{Rust => bins}/src/commands/install.rs (100%) rename src/{Rust => bins}/src/commands/mod.rs (100%) rename src/{Rust => bins}/src/commands/patch.rs (100%) rename src/{Rust => bins}/src/commands/start.rs (100%) rename src/{Rust => bins}/src/commands/start_windows_impl.rs (100%) rename src/{Rust => bins}/src/commands/uninstall.rs (100%) rename src/{Rust => bins}/src/lib.rs (100%) rename src/{Rust => bins}/src/logging.rs (100%) rename src/{Rust => bins}/src/setup.rs (91%) rename src/{Rust => bins}/src/shared/bundle.rs (100%) rename src/{Rust => bins}/src/shared/dialogs_common.rs (100%) rename src/{Rust => bins}/src/shared/dialogs_const.rs (100%) rename src/{Rust => bins}/src/shared/dialogs_linux.rs (100%) rename src/{Rust => bins}/src/shared/dialogs_osx.rs (100%) rename src/{Rust => bins}/src/shared/dialogs_windows.rs (73%) rename src/{Rust => bins}/src/shared/download.rs (100%) rename src/{Rust => bins}/src/shared/macho.rs (100%) rename src/{Rust => bins}/src/shared/mod.rs (100%) rename src/{Rust => bins}/src/shared/runtime_arch.rs (100%) rename src/{Rust => bins}/src/shared/util_common.rs (100%) rename src/{Rust => bins}/src/shared/util_linux.rs (100%) rename src/{Rust => bins}/src/shared/util_osx.rs (100%) rename src/{Rust => bins}/src/shared/util_windows.rs (100%) rename src/{Rust => bins}/src/stub.rs (100%) rename src/{Rust => bins}/src/testapp.rs (100%) rename src/{Rust => bins}/src/update.rs (99%) rename src/{Rust => bins}/src/windows/known_path.rs (100%) create mode 100644 src/bins/src/windows/locksmith.rs rename src/{Rust => bins}/src/windows/mitigate.rs (100%) rename src/{Rust => bins}/src/windows/mod.rs (100%) rename src/{Rust => bins}/src/windows/prerequisite.rs (100%) rename src/{Rust => bins}/src/windows/runtimes.rs (100%) rename src/{Rust => bins}/src/windows/self_delete.rs (100%) rename src/{Rust => bins}/src/windows/shortcuts.rs (100%) rename src/{Rust => bins}/src/windows/splash.rs (99%) rename src/{Rust => bins}/src/windows/strings.rs (100%) rename src/{Rust => bins}/src/windows/util.rs (100%) rename src/{Rust => bins}/tests/commands.rs (98%) rename src/{Rust => bins}/tests/common/mod.rs (100%) create mode 100644 src/lib-cpp/CMakeLists.txt create mode 100644 src/lib-cpp/api/Foo.hpp create mode 100644 src/lib-cpp/api/Foo_fwd.hpp create mode 100644 src/lib-cpp/api/c_Foo.h create mode 100644 src/lib-cpp/api/rust_foreign_slice_impl.hpp create mode 100644 src/lib-cpp/api/rust_foreign_slice_iter.hpp create mode 100644 src/lib-cpp/api/rust_foreign_vec_impl.hpp create mode 100644 src/lib-cpp/api/rust_slice.h create mode 100644 src/lib-cpp/api/rust_slice_access.hpp create mode 100644 src/lib-cpp/api/rust_slice_mut.h create mode 100644 src/lib-cpp/api/rust_slice_tmpl.hpp create mode 100644 src/lib-cpp/api/rust_str.h create mode 100644 src/lib-cpp/api/rust_vec.h create mode 100644 src/lib-cpp/api/rust_vec_access.hpp create mode 100644 src/lib-cpp/api/rust_vec_impl.hpp create mode 100644 src/lib-cpp/generator/Cargo.toml create mode 100644 src/lib-cpp/generator/build.rs create mode 100644 src/lib-cpp/generator/src/cpp_glue.rs create mode 100644 src/lib-cpp/generator/src/cpp_glue.rs.in create mode 100644 src/lib-cpp/generator/src/lib.rs create mode 100644 src/lib-cpp/main.cpp rename src/{Velopack => lib-csharp}/Compression/BZip2Stream.cs (100%) rename src/{Velopack => lib-csharp}/Compression/BinaryPatchUtility.cs (100%) rename src/{Velopack => lib-csharp}/Compression/ChecksumFailedException.cs (100%) rename src/{Velopack => lib-csharp}/Compression/DeltaPackage.cs (100%) rename src/{Velopack => lib-csharp}/Compression/DeltaUpdateExe.cs (100%) rename src/{Velopack => lib-csharp}/Compression/EasyZip.cs (100%) rename src/{Velopack => lib-csharp}/Compression/MsDeltaCompression.cs (100%) rename src/{Velopack => lib-csharp}/Internal/CompiledJson.cs (100%) rename src/{Velopack => lib-csharp}/Internal/Disposable.cs (100%) rename src/{Velopack => lib-csharp}/Internal/EnumerableExtensions.cs (100%) rename src/{Velopack => lib-csharp}/Internal/LoggerExtensions.cs (100%) rename src/{Velopack => lib-csharp}/Internal/ProcessExtensions.cs (100%) rename src/{Velopack => lib-csharp}/Internal/SymbolicLink.cs (100%) rename src/{Velopack => lib-csharp}/Internal/Utility.cs (100%) rename src/{Velopack => lib-csharp}/Locators/IVelopackLocator.cs (100%) rename src/{Velopack => lib-csharp}/Locators/LinuxVelopackLocator.cs (100%) rename src/{Velopack => lib-csharp}/Locators/OsxVelopackLocator.cs (100%) rename src/{Velopack => lib-csharp}/Locators/TestVelopackLocator.cs (100%) rename src/{Velopack => lib-csharp}/Locators/VelopackLocator.cs (100%) rename src/{Velopack => lib-csharp}/Locators/VelopackLocatorExtensions.cs (100%) rename src/{Velopack => lib-csharp}/Locators/WindowsVelopackLocator.cs (100%) rename src/{Velopack => lib-csharp}/NuGet/NugetUtil.cs (100%) rename src/{Velopack => lib-csharp}/NuGet/PackageManifest.cs (100%) rename src/{Velopack => lib-csharp}/NuGet/ZipPackage.cs (100%) rename src/{Velopack => lib-csharp}/NuGet/ZipPackageFile.cs (100%) rename src/{Velopack => lib-csharp}/Properties/AssemblyInfo.cs (100%) rename src/{Velopack => lib-csharp}/RID.cs (100%) rename src/{Velopack => lib-csharp}/ReleaseEntry.cs (100%) rename src/{Velopack => lib-csharp}/Sources/GitBase.cs (100%) rename src/{Velopack => lib-csharp}/Sources/GiteaSource.cs (100%) rename src/{Velopack => lib-csharp}/Sources/GithubSource.cs (100%) rename src/{Velopack => lib-csharp}/Sources/GitlabSource.cs (100%) rename src/{Velopack => lib-csharp}/Sources/HttpClientFileDownloader.cs (100%) rename src/{Velopack => lib-csharp}/Sources/IFileDownloader.cs (100%) rename src/{Velopack => lib-csharp}/Sources/IUpdateSource.cs (100%) rename src/{Velopack => lib-csharp}/Sources/SimpleFileSource.cs (100%) rename src/{Velopack => lib-csharp}/Sources/SimpleWebSource.cs (100%) rename src/{Velopack => lib-csharp}/Sources/VelopackFlowUpdateSource.cs (100%) rename src/{Velopack => lib-csharp}/UpdateExe.cs (100%) rename src/{Velopack => lib-csharp}/UpdateInfo.cs (100%) rename src/{Velopack => lib-csharp}/UpdateManager.Helpers.cs (100%) rename src/{Velopack => lib-csharp}/UpdateManager.cs (100%) rename src/{Velopack => lib-csharp}/UpdateOptions.cs (100%) rename src/{Velopack => lib-csharp}/Velopack.csproj (100%) rename src/{Velopack => lib-csharp}/VelopackApp.cs (100%) rename src/{Velopack => lib-csharp}/VelopackAsset.cs (100%) rename src/{Velopack => lib-csharp}/VelopackRuntimeInfo.cs (100%) rename src/{Velopack => lib-csharp}/Windows/RuntimeInfo.cs (100%) rename src/{Velopack => lib-csharp}/Windows/Runtimes.cs (100%) rename src/{Velopack => lib-csharp}/Windows/ShellLink.cs (100%) rename src/{Velopack => lib-csharp}/Windows/Shortcuts.cs (100%) create mode 100644 src/lib-rust/Cargo.lock create mode 100644 src/lib-rust/Cargo.toml create mode 100644 src/lib-rust/README.md create mode 100644 src/lib-rust/samples/iced/Cargo.lock create mode 100644 src/lib-rust/samples/iced/Cargo.toml create mode 100644 src/lib-rust/samples/iced/Velopack.icns create mode 100644 src/lib-rust/samples/iced/Velopack.png create mode 100644 src/lib-rust/samples/iced/build-osx.sh create mode 100644 src/lib-rust/samples/iced/build-win.bat create mode 100644 src/lib-rust/samples/iced/build.rs create mode 100644 src/lib-rust/samples/iced/src/main.rs create mode 100644 src/lib-rust/src/app.rs create mode 100644 src/lib-rust/src/bundle.rs create mode 100644 src/lib-rust/src/delta.rs create mode 100644 src/lib-rust/src/download.rs create mode 100644 src/lib-rust/src/lib.rs create mode 100644 src/lib-rust/src/locator.rs create mode 100644 src/lib-rust/src/manager.rs create mode 100644 src/lib-rust/src/manifest.rs create mode 100644 src/lib-rust/src/sources.rs create mode 100644 src/lib-rust/src/util.rs rename src/{ => vpk}/Velopack.Build/MSBuildAsyncTask.cs (100%) rename src/{ => vpk}/Velopack.Build/MSBuildLogger.cs (100%) rename src/{ => vpk}/Velopack.Build/PackTask.cs (100%) rename src/{ => vpk}/Velopack.Build/PublishTask.cs (100%) rename src/{ => vpk}/Velopack.Build/TaskOptionsMapper.cs (100%) rename src/{ => vpk}/Velopack.Build/Velopack.Build.csproj (100%) rename src/{ => vpk}/Velopack.Build/Velopack.Build.targets (100%) rename src/{ => vpk}/Velopack.Deployment/AzureRepository.cs (100%) rename src/{ => vpk}/Velopack.Deployment/GitHubRepository.cs (100%) rename src/{ => vpk}/Velopack.Deployment/GiteaRepository.cs (100%) rename src/{ => vpk}/Velopack.Deployment/HttpRepository.cs (100%) rename src/{ => vpk}/Velopack.Deployment/LocalRepository.cs (100%) rename src/{ => vpk}/Velopack.Deployment/S3Repository.cs (100%) rename src/{ => vpk}/Velopack.Deployment/Velopack.Deployment.csproj (100%) rename src/{ => vpk}/Velopack.Deployment/_ObjectRepository.cs (100%) rename src/{ => vpk}/Velopack.Deployment/_Repository.cs (100%) rename src/{ => vpk}/Velopack.IcoLib/Binary/BitReader.cs (100%) rename src/{ => vpk}/Velopack.IcoLib/Binary/BitWriter.cs (100%) rename src/{ => vpk}/Velopack.IcoLib/Binary/ByteOrderConverter.cs (100%) rename src/{ => vpk}/Velopack.IcoLib/Binary/ByteReader.cs (100%) rename src/{ => vpk}/Velopack.IcoLib/Binary/ByteWriter.cs (100%) rename src/{ => vpk}/Velopack.IcoLib/Codecs/BmpDecoder.cs (100%) rename src/{ => vpk}/Velopack.IcoLib/Codecs/BmpEncoder.cs (100%) rename src/{ => vpk}/Velopack.IcoLib/Codecs/BmpUtil.cs (100%) rename src/{ => vpk}/Velopack.IcoLib/Codecs/EncodingOptions.cs (100%) rename src/{ => vpk}/Velopack.IcoLib/Codecs/FileFormatConstants.cs (100%) rename src/{ => vpk}/Velopack.IcoLib/Codecs/IcoDecoder.cs (100%) rename src/{ => vpk}/Velopack.IcoLib/Codecs/IcoEncoder.cs (100%) rename src/{ => vpk}/Velopack.IcoLib/Codecs/PngDecoder.cs (100%) rename src/{ => vpk}/Velopack.IcoLib/Host/ExceptionWrapper.cs (100%) rename src/{ => vpk}/Velopack.IcoLib/Host/IErrorReporter.cs (100%) rename src/{ => vpk}/Velopack.IcoLib/Model/IcoFrame.cs (100%) rename src/{ => vpk}/Velopack.IcoLib/Model/IcoFrameEncoding.cs (100%) rename src/{ => vpk}/Velopack.IcoLib/Model/ParseContext.cs (100%) rename src/{ => vpk}/Velopack.IcoLib/Model/PngFileEncoding.cs (100%) rename src/{ => vpk}/Velopack.IcoLib/README.md (100%) rename src/{ => vpk}/Velopack.IcoLib/Validation/IcoErrorCode.cs (100%) rename src/{ => vpk}/Velopack.IcoLib/Validation/InvalidIcoFileException.cs (100%) rename src/{ => vpk}/Velopack.IcoLib/Validation/InvalidPngFileException.cs (100%) rename src/{ => vpk}/Velopack.IcoLib/Velopack.IcoLib.csproj (100%) rename src/{ => vpk}/Velopack.Packaging.Unix/AppImageTool.cs (100%) rename src/{ => vpk}/Velopack.Packaging.Unix/BinDetect.cs (100%) rename src/{ => vpk}/Velopack.Packaging.Unix/Chmod.cs (100%) rename src/{ => vpk}/Velopack.Packaging.Unix/Commands/LinuxPackCommandRunner.cs (100%) rename src/{ => vpk}/Velopack.Packaging.Unix/Commands/LinuxPackOptions.cs (100%) rename src/{ => vpk}/Velopack.Packaging.Unix/Commands/OsxBundleCommandRunner.cs (100%) rename src/{ => vpk}/Velopack.Packaging.Unix/Commands/OsxBundleOptions.cs (100%) rename src/{ => vpk}/Velopack.Packaging.Unix/Commands/OsxPackCommandRunner.cs (100%) rename src/{ => vpk}/Velopack.Packaging.Unix/Commands/OsxPackOptions.cs (100%) rename src/{ => vpk}/Velopack.Packaging.Unix/OsxAppInfo.cs (100%) rename src/{ => vpk}/Velopack.Packaging.Unix/OsxBuildTools.cs (100%) rename src/{ => vpk}/Velopack.Packaging.Unix/OsxStructureBuilder.cs (100%) rename src/{ => vpk}/Velopack.Packaging.Unix/PlistWriter.cs (100%) rename src/{ => vpk}/Velopack.Packaging.Unix/Velopack.Packaging.Unix.csproj (100%) rename src/{ => vpk}/Velopack.Packaging.Windows/AuthenticodeTools.cs (100%) rename src/{ => vpk}/Velopack.Packaging.Windows/CodeSign.cs (100%) rename src/{ => vpk}/Velopack.Packaging.Windows/Commands/WindowsPackCommandRunner.cs (100%) rename src/{ => vpk}/Velopack.Packaging.Windows/Commands/WindowsPackOptions.cs (100%) rename src/{ => vpk}/Velopack.Packaging.Windows/Commands/WindowsReleasifyOptions.cs (100%) rename src/{ => vpk}/Velopack.Packaging.Windows/Commands/WindowsSigningOptions.cs (100%) rename src/{ => vpk}/Velopack.Packaging.Windows/CompatUtil.cs (100%) rename src/{ => vpk}/Velopack.Packaging.Windows/IcoExtract.cs (100%) rename src/{ => vpk}/Velopack.Packaging.Windows/ResourceEdit.cs (100%) rename src/{ => vpk}/Velopack.Packaging.Windows/SetupBundle.cs (100%) rename src/{ => vpk}/Velopack.Packaging.Windows/Velopack.Packaging.Windows.csproj (100%) rename src/{ => vpk}/Velopack.Packaging/Abstractions/ICommand.cs (100%) rename src/{ => vpk}/Velopack.Packaging/Abstractions/IConsole.cs (100%) rename src/{ => vpk}/Velopack.Packaging/Abstractions/IFancyConsole.cs (100%) rename src/{ => vpk}/Velopack.Packaging/Abstractions/IFancyConsoleProgress.cs (100%) rename src/{ => vpk}/Velopack.Packaging/Abstractions/INugetPackCommand.cs (100%) rename src/{ => vpk}/Velopack.Packaging/Abstractions/IOutputOptions.cs (100%) rename src/{ => vpk}/Velopack.Packaging/Abstractions/IPackOptions.cs (100%) rename src/{ => vpk}/Velopack.Packaging/Abstractions/IPlatformOptions.cs (100%) rename src/{ => vpk}/Velopack.Packaging/BuildAssets.cs (100%) rename src/{ => vpk}/Velopack.Packaging/Commands/DeltaGenCommandRunner.cs (100%) rename src/{ => vpk}/Velopack.Packaging/Commands/DeltaGenOptions.cs (100%) rename src/{ => vpk}/Velopack.Packaging/Commands/DeltaPatchCommandRunner.cs (100%) rename src/{ => vpk}/Velopack.Packaging/Commands/DeltaPatchOptions.cs (100%) rename src/{ => vpk}/Velopack.Packaging/DeltaEmbedded.cs (100%) rename src/{ => vpk}/Velopack.Packaging/DeltaMode.cs (100%) rename src/{ => vpk}/Velopack.Packaging/DeltaPackageBuilder.cs (100%) rename src/{ => vpk}/Velopack.Packaging/Exceptions/ProcessFailedException.cs (100%) rename src/{ => vpk}/Velopack.Packaging/Exceptions/UserInfoException.cs (100%) rename src/{ => vpk}/Velopack.Packaging/Exceptions/VelopackAppVerificationException.cs (100%) rename src/{ => vpk}/Velopack.Packaging/Exe.cs (100%) rename src/{ => vpk}/Velopack.Packaging/Flow/AuthConfiguration.cs (100%) rename src/{ => vpk}/Velopack.Packaging/Flow/CreateReleaseGroupRequest.cs (100%) rename src/{ => vpk}/Velopack.Packaging/Flow/HmacAuthHttpClientHandler.cs (100%) rename src/{ => vpk}/Velopack.Packaging/Flow/HmacHelper.cs (100%) rename src/{ => vpk}/Velopack.Packaging/Flow/Profile.cs (100%) rename src/{ => vpk}/Velopack.Packaging/Flow/ReleaseGroup.cs (100%) rename src/{ => vpk}/Velopack.Packaging/Flow/UploadOptions.cs (100%) rename src/{ => vpk}/Velopack.Packaging/Flow/VelopackFlowServiceClient.cs (100%) rename src/{ => vpk}/Velopack.Packaging/Flow/VelopackLoginOptions.cs (100%) rename src/{ => vpk}/Velopack.Packaging/Flow/VelopackServiceOptions.cs (100%) rename src/{ => vpk}/Velopack.Packaging/HelperFile.cs (100%) rename src/{ => vpk}/Velopack.Packaging/HttpClientExtensions.cs (100%) rename src/{ => vpk}/Velopack.Packaging/PackageBuilder.cs (100%) rename src/{ => vpk}/Velopack.Packaging/ReleaseEntryHelper.cs (100%) rename src/{ => vpk}/Velopack.Packaging/ReleasePackage.cs (100%) rename src/{ => vpk}/Velopack.Packaging/SimpleJson.cs (100%) rename src/{ => vpk}/Velopack.Packaging/Velopack.Packaging.csproj (92%) rename src/{ => vpk}/Velopack.Packaging/Zstd.cs (100%) rename src/{ => vpk}/Velopack.Vpk/Commands/DeltaGenCommand.cs (100%) rename src/{ => vpk}/Velopack.Vpk/Commands/DeltaPatchCommand.cs (100%) rename src/{ => vpk}/Velopack.Vpk/Commands/Deployment/AzureBaseCommand.cs (100%) rename src/{ => vpk}/Velopack.Vpk/Commands/Deployment/AzureDownloadCommand.cs (100%) rename src/{ => vpk}/Velopack.Vpk/Commands/Deployment/AzureUploadCommand.cs (100%) rename src/{ => vpk}/Velopack.Vpk/Commands/Deployment/GitHubBaseCommand.cs (100%) rename src/{ => vpk}/Velopack.Vpk/Commands/Deployment/GitHubDownloadCommand.cs (100%) rename src/{ => vpk}/Velopack.Vpk/Commands/Deployment/GitHubUploadCommand.cs (100%) rename src/{ => vpk}/Velopack.Vpk/Commands/Deployment/GiteaBaseCommand.cs (100%) rename src/{ => vpk}/Velopack.Vpk/Commands/Deployment/GiteaDownloadCommand.cs (100%) rename src/{ => vpk}/Velopack.Vpk/Commands/Deployment/GiteaUploadCommand.cs (100%) rename src/{ => vpk}/Velopack.Vpk/Commands/Deployment/HttpDownloadCommand.cs (100%) rename src/{ => vpk}/Velopack.Vpk/Commands/Deployment/LocalBaseCommand.cs (100%) rename src/{ => vpk}/Velopack.Vpk/Commands/Deployment/LocalDownloadCommand.cs (100%) rename src/{ => vpk}/Velopack.Vpk/Commands/Deployment/LocalUploadCommand.cs (100%) rename src/{ => vpk}/Velopack.Vpk/Commands/Deployment/S3BaseCommand.cs (100%) rename src/{ => vpk}/Velopack.Vpk/Commands/Deployment/S3DownloadCommand.cs (100%) rename src/{ => vpk}/Velopack.Vpk/Commands/Deployment/S3UploadCommand.cs (100%) rename src/{ => vpk}/Velopack.Vpk/Commands/Flow/LoginCommand.cs (100%) rename src/{ => vpk}/Velopack.Vpk/Commands/Flow/LoginCommandRunner.cs (100%) rename src/{ => vpk}/Velopack.Vpk/Commands/Flow/LoginOptions.cs (100%) rename src/{ => vpk}/Velopack.Vpk/Commands/Flow/LogoutCommand.cs (100%) rename src/{ => vpk}/Velopack.Vpk/Commands/Flow/LogoutCommandRunner.cs (100%) rename src/{ => vpk}/Velopack.Vpk/Commands/Flow/LogoutOptions.cs (100%) rename src/{ => vpk}/Velopack.Vpk/Commands/Flow/PublishCommand.cs (100%) rename src/{ => vpk}/Velopack.Vpk/Commands/Flow/PublishCommandRunner.cs (100%) rename src/{ => vpk}/Velopack.Vpk/Commands/Flow/PublishOptions.cs (100%) rename src/{ => vpk}/Velopack.Vpk/Commands/Flow/VelopackServiceCommand.cs (100%) rename src/{ => vpk}/Velopack.Vpk/Commands/LinuxPackCommand.cs (100%) rename src/{ => vpk}/Velopack.Vpk/Commands/LongHelpCommand.cs (100%) rename src/{ => vpk}/Velopack.Vpk/Commands/OsxBundleCommand.cs (100%) rename src/{ => vpk}/Velopack.Vpk/Commands/OsxPackCommand.cs (100%) rename src/{ => vpk}/Velopack.Vpk/Commands/SystemCommandLineExtensions.cs (100%) rename src/{ => vpk}/Velopack.Vpk/Commands/WindowsPackCommand.cs (100%) rename src/{ => vpk}/Velopack.Vpk/Commands/_BaseCommand.cs (100%) rename src/{ => vpk}/Velopack.Vpk/Commands/_OutputCommand.cs (100%) rename src/{ => vpk}/Velopack.Vpk/Commands/_PackCommand.cs (100%) rename src/{ => vpk}/Velopack.Vpk/Commands/_PlatformCommand.cs (100%) rename src/{ => vpk}/Velopack.Vpk/Converters/DirectoryInfoConverter.cs (100%) rename src/{ => vpk}/Velopack.Vpk/Converters/FileInfoConverter.cs (100%) rename src/{ => vpk}/Velopack.Vpk/GlobalUsings.cs (100%) rename src/{ => vpk}/Velopack.Vpk/Logging/BasicConsole.cs (100%) rename src/{ => vpk}/Velopack.Vpk/Logging/ConsoleExpressionNoMarkup.cs (100%) rename src/{ => vpk}/Velopack.Vpk/Logging/LevelStyle.cs (100%) rename src/{ => vpk}/Velopack.Vpk/Logging/MySpectreConsoleSink.cs (100%) rename src/{ => vpk}/Velopack.Vpk/Logging/RenderableCollection.cs (100%) rename src/{ => vpk}/Velopack.Vpk/Logging/SpectreConsole.cs (100%) rename src/{ => vpk}/Velopack.Vpk/OptionMapper.cs (100%) rename src/{ => vpk}/Velopack.Vpk/Program.cs (100%) rename src/{ => vpk}/Velopack.Vpk/Updates/NugetDownloader.cs (100%) rename src/{ => vpk}/Velopack.Vpk/Updates/NullNugetLogger.cs (100%) rename src/{ => vpk}/Velopack.Vpk/Updates/UpdateChecker.cs (100%) rename src/{ => vpk}/Velopack.Vpk/Velopack.Vpk.csproj (100%) rename src/{ => vpk}/Velopack.Vpk/VelopackDefaults.cs (100%) diff --git a/src/Rust/.cargo/config.toml b/.cargo/config.toml similarity index 100% rename from src/Rust/.cargo/config.toml rename to .cargo/config.toml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 293388b2..d654894e 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -2,8 +2,11 @@ name: Build on: [ push, pull_request ] +env: + CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} + jobs: - test-rust-bins: + test-rust: strategy: matrix: os: [macos-13, macos-14, windows-latest, ubuntu-latest] @@ -23,17 +26,14 @@ jobs: - uses: Swatinem/rust-cache@v2 with: key: "rust-test-${{ matrix.os }}" - workspaces: "src/Rust -> target" - name: Install cargo-llvm-cov uses: taiki-e/install-action@cargo-llvm-cov - name: Test Rust - working-directory: src/Rust - run: cargo llvm-cov ${{ matrix.rust_flags }} --cobertura --output-path ../../test/coverage.rust.${{ matrix.os }}.xml - - name: Upload Coverage Artifacts - uses: actions/upload-artifact@v4 + run: cargo llvm-cov ${{ matrix.rust_flags }} --cobertura --output-path ./test/coverage.rust.${{ matrix.os }}.xml + - name: Upload Coverage + uses: codecov/codecov-action@v4 with: - name: coverage-rust-${{ matrix.os }} - path: ./test/*.xml + file: ./test/coverage.rust.${{ matrix.os }}.xml build-rust-windows: runs-on: windows-latest @@ -47,21 +47,19 @@ jobs: - uses: Swatinem/rust-cache@v2 with: key: "rust-build-windows" - workspaces: "src/Rust -> target" - name: Install Windows7 Rust Toolchain run: | rustup toolchain install 1.75.0-x86_64-pc-windows-msvc rustup target add i686-pc-windows-msvc --toolchain 1.75.0-x86_64-pc-windows-msvc - name: Build Rust - working-directory: src/Rust run: cargo +1.75.0-x86_64-pc-windows-msvc build --target i686-pc-windows-msvc --features windows --release - name: Upload Rust Build Artifacts uses: actions/upload-artifact@v4 with: name: rust-windows-latest path: | - src/Rust/target/i686-pc-windows-msvc/release/*.exe - src/Rust/target/i686-pc-windows-msvc/release/*.pdb + target/i686-pc-windows-msvc/release/*.exe + target/i686-pc-windows-msvc/release/*.pdb - name: Cancel workflow if failed uses: andymckay/cancel-action@0.4 if: ${{ failure() }} @@ -79,14 +77,11 @@ jobs: - uses: Swatinem/rust-cache@v2 with: key: "rust-build-linux" - workspaces: "src/Rust -> target" - name: Build Rust (x64) - working-directory: src/Rust run: | cargo build --release --target x86_64-unknown-linux-gnu cp ./target/x86_64-unknown-linux-gnu/release/update ./target/release/UpdateNix_x64 - name: Build Rust (arm64) - working-directory: src/Rust env: CROSS_NuGetPackageVersion: ${{ steps.nbgv.outputs.NuGetPackageVersion }} run: | @@ -98,7 +93,7 @@ jobs: uses: actions/upload-artifact@v4 with: name: rust-ubuntu-latest - path: src/Rust/target/release/UpdateNix* + path: target/release/UpdateNix* - name: Cancel workflow if failed uses: andymckay/cancel-action@0.4 if: ${{ failure() }} @@ -118,9 +113,7 @@ jobs: - uses: Swatinem/rust-cache@v2 with: key: "rust-build-${{ matrix.os }}" - workspaces: "src/Rust -> target" - name: Build Rust - working-directory: src/Rust run: | cargo build --release cp ./target/release/update ./target/release/UpdateMac @@ -128,7 +121,7 @@ jobs: uses: actions/upload-artifact@v4 with: name: rust-${{ matrix.os }} - path: src/Rust/target/release/UpdateMac + path: target/release/UpdateMac - name: Cancel workflow if failed uses: andymckay/cancel-action@0.4 if: ${{ failure() }} @@ -179,12 +172,12 @@ jobs: - uses: actions/checkout@v4 with: fetch-depth: 0 - - uses: actions/cache@v4 - with: - path: ${{ github.workspace }}/.nuget/packages - key: ${{ runner.os }}-nuget-${{ hashFiles('**/packages.lock.json') }} - restore-keys: | - ${{ runner.os }}-nuget- + # - uses: actions/cache@v4 + # with: + # path: ${{ github.workspace }}/.nuget/packages + # key: ${{ runner.os }}-nuget-${{ hashFiles('**/packages.lock.json') }} + # restore-keys: | + # ${{ runner.os }}-nuget- - name: Install FUSE run: | sudo add-apt-repository universe @@ -206,7 +199,7 @@ jobs: - name: Download Rust Artifacts uses: actions/download-artifact@v4 with: - path: src/Rust/target/release + path: target/release pattern: rust-* merge-multiple: true - name: Test Velopack.Tests @@ -220,11 +213,10 @@ jobs: with: name: cross-${{ matrix.os }} path: test/artifacts/* - - name: Upload Coverage Artifacts - uses: actions/upload-artifact@v4 + - name: Upload Coverage + uses: codecov/codecov-action@v4 with: - name: coverage-dotnet-${{ matrix.os }} - path: ./test/*.xml + directory: ./test - uses: caesay/wait-artifact-action@494939e840383463b1686ce3624a8aab059c2c8b if: ${{ matrix.os == 'ubuntu-latest' || matrix.os == 'windows-latest' }} with: @@ -260,7 +252,7 @@ jobs: - name: Download Rust Artifacts uses: actions/download-artifact@v4 with: - path: src/Rust/target/release + path: target/release pattern: rust-* merge-multiple: true - name: Build .NET @@ -278,29 +270,9 @@ jobs: name: packages path: build/Release/*nupkg - upload-coverage: - runs-on: ubuntu-latest - needs: [package, test-dotnet, test-rust-bins] - steps: - - name: Download Coverage Artifacts - uses: actions/download-artifact@v4 - with: - pattern: coverage-* - path: ./test - - name: Upload Coverage to Codecov - uses: codecov/codecov-action@v4 - env: - CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} - with: - directory: ./test - fail_ci_if_error: true - - uses: geekyeggo/delete-artifact@v5 - with: - name: coverage-* - release: runs-on: ubuntu-latest - needs: [package, test-dotnet, test-rust-bins] + needs: [package, test-dotnet, test-rust] if: github.event_name == 'push' && github.ref == 'refs/heads/master' steps: - name: Invoke Release Workflow diff --git a/.gitignore b/.gitignore index 604d1209..70635906 100644 --- a/.gitignore +++ b/.gitignore @@ -6,6 +6,7 @@ _docyml/ ## Eclipse ################# +.vscode .idea *.pydevproject .project diff --git a/.vscode/settings.json b/.vscode/settings.json deleted file mode 100644 index 0414fda7..00000000 --- a/.vscode/settings.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "cSpell.words": [ - "Avalonia", - "Skippable", - "Velo", - "Velopack" - ] -} \ No newline at end of file diff --git a/Cargo.lock b/Cargo.lock new file mode 100644 index 00000000..fcaeb12e --- /dev/null +++ b/Cargo.lock @@ -0,0 +1,2720 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "adler" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" + +[[package]] +name = "aho-corasick" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" +dependencies = [ + "memchr", +] + +[[package]] +name = "aligned" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "377e4c0ba83e4431b10df45c1d4666f178ea9c552cac93e60c3a88bf32785923" +dependencies = [ + "as-slice", +] + +[[package]] +name = "android-tzdata" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" + +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + +[[package]] +name = "anstream" +version = "0.6.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64e15c1ab1f89faffbf04a634d5e1962e9074f2741eef6d97f3c4e322426d526" +dependencies = [ + "anstyle", + "anstyle-parse", + "anstyle-query", + "anstyle-wincon", + "colorchoice", + "is_terminal_polyfill", + "utf8parse", +] + +[[package]] +name = "anstyle" +version = "1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bec1de6f59aedf83baf9ff929c98f2ad654b97c9510f4e70cf6f661d49fd5b1" + +[[package]] +name = "anstyle-parse" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb47de1e80c2b463c735db5b217a0ddc39d612e7ac9e2e96a5aed1f57616c1cb" +dependencies = [ + "utf8parse", +] + +[[package]] +name = "anstyle-query" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d36fc52c7f6c869915e99412912f22093507da8d9e942ceaf66fe4b7c14422a" +dependencies = [ + "windows-sys 0.52.0", +] + +[[package]] +name = "anstyle-wincon" +version = "3.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5bf74e1b6e971609db8ca7a9ce79fd5768ab6ae46441c572e46cf596f59e57f8" +dependencies = [ + "anstyle", + "windows-sys 0.52.0", +] + +[[package]] +name = "anyhow" +version = "1.0.86" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da" + +[[package]] +name = "arbitrary" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d5a26814d8dcb93b0e5a0ff3c6d80a8843bafb21b39e8e18a6f05471870e110" +dependencies = [ + "derive_arbitrary", +] + +[[package]] +name = "as-slice" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "516b6b4f0e40d50dcda9365d53964ec74560ad4284da2e7fc97122cd83174516" +dependencies = [ + "stable_deref_trait", +] + +[[package]] +name = "ascii" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d92bec98840b8f03a5ff5413de5293bfcd8bf96467cf5452609f939ec6f5de16" + +[[package]] +name = "async-channel" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81953c529336010edd6d8e358f886d9581267795c61b19475b71314bffa46d35" +dependencies = [ + "concurrent-queue", + "event-listener 2.5.3", + "futures-core", +] + +[[package]] +name = "async-channel" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89b47800b0be77592da0afd425cc03468052844aff33b84e33cc696f64e77b6a" +dependencies = [ + "concurrent-queue", + "event-listener-strategy", + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "async-executor" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7ebdfa2ebdab6b1760375fa7d6f382b9f486eac35fc994625a00e89280bdbb7" +dependencies = [ + "async-task", + "concurrent-queue", + "fastrand 2.1.0", + "futures-lite 2.3.0", + "slab", +] + +[[package]] +name = "async-global-executor" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05b1b633a2115cd122d73b955eadd9916c18c8f510ec9cd1686404c60ad1c29c" +dependencies = [ + "async-channel 2.3.1", + "async-executor", + "async-io 2.3.3", + "async-lock 3.4.0", + "blocking", + "futures-lite 2.3.0", + "once_cell", +] + +[[package]] +name = "async-io" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fc5b45d93ef0529756f812ca52e44c221b35341892d3dcc34132ac02f3dd2af" +dependencies = [ + "async-lock 2.8.0", + "autocfg", + "cfg-if 1.0.0", + "concurrent-queue", + "futures-lite 1.13.0", + "log", + "parking", + "polling 2.8.0", + "rustix 0.37.27", + "slab", + "socket2", + "waker-fn", +] + +[[package]] +name = "async-io" +version = "2.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d6baa8f0178795da0e71bc42c9e5d13261aac7ee549853162e66a241ba17964" +dependencies = [ + "async-lock 3.4.0", + "cfg-if 1.0.0", + "concurrent-queue", + "futures-io", + "futures-lite 2.3.0", + "parking", + "polling 3.7.2", + "rustix 0.38.34", + "slab", + "tracing", + "windows-sys 0.52.0", +] + +[[package]] +name = "async-lock" +version = "2.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "287272293e9d8c41773cec55e365490fe034813a2f172f502d6ddcf75b2f582b" +dependencies = [ + "event-listener 2.5.3", +] + +[[package]] +name = "async-lock" +version = "3.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff6e472cdea888a4bd64f342f09b3f50e1886d32afe8df3d663c01140b811b18" +dependencies = [ + "event-listener 5.3.1", + "event-listener-strategy", + "pin-project-lite", +] + +[[package]] +name = "async-std" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62565bb4402e926b29953c785397c6dc0391b7b446e45008b0049eb43cec6f5d" +dependencies = [ + "async-channel 1.9.0", + "async-global-executor", + "async-io 1.13.0", + "async-lock 2.8.0", + "crossbeam-utils", + "futures-channel", + "futures-core", + "futures-io", + "futures-lite 1.13.0", + "gloo-timers", + "kv-log-macro", + "log", + "memchr", + "once_cell", + "pin-project-lite", + "pin-utils", + "slab", + "wasm-bindgen-futures", +] + +[[package]] +name = "async-task" +version = "4.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" + +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + +[[package]] +name = "autocfg" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" + +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitflags" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" + +[[package]] +name = "block" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" + +[[package]] +name = "blocking" +version = "1.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "703f41c54fc768e63e091340b424302bb1c29ef4aa0c7f10fe849dfb114d29ea" +dependencies = [ + "async-channel 2.3.1", + "async-task", + "futures-io", + "futures-lite 2.3.0", + "piper", +] + +[[package]] +name = "bumpalo" +version = "3.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" + +[[package]] +name = "bytemuck" +version = "1.16.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "102087e286b4677862ea56cf8fc58bb2cdfa8725c40ffb80fe3a008eb7f2fc83" + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "byteorder-lite" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f1fe948ff07f4bd06c30984e69f5b4899c516a3ef74f34df92a2df2ab535495" + +[[package]] +name = "cc" +version = "1.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26a5c3fd7bfa1ce3897a3a3501d362b2d87b7f2583ebcb4a949ec25911025cbc" +dependencies = [ + "jobserver", + "libc", +] + +[[package]] +name = "cfg-if" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "chrono" +version = "0.4.38" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" +dependencies = [ + "android-tzdata", + "iana-time-zone", + "js-sys", + "num-traits", + "wasm-bindgen", + "windows-targets 0.52.6", +] + +[[package]] +name = "clap" +version = "4.5.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fbb260a053428790f3de475e304ff84cdbc4face759ea7a3e64c1edd938a7fc" +dependencies = [ + "clap_builder", + "clap_derive", +] + +[[package]] +name = "clap_builder" +version = "4.5.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64b17d7ea74e9f833c7dbf2cbe4fb12ff26783eda4782a8975b72f895c9b4d99" +dependencies = [ + "anstream", + "anstyle", + "clap_lex", + "strsim", +] + +[[package]] +name = "clap_derive" +version = "4.5.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "501d359d5f3dcaf6ecdeee48833ae73ec6e42723a1e52419c79abf9507eec0a0" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "syn 2.0.72", +] + +[[package]] +name = "clap_lex" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1462739cb27611015575c0c11df5df7601141071f07518d56fcc1be504cbec97" + +[[package]] +name = "cocoa" +version = "0.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6140449f97a6e97f9511815c5632d84c8aacf8ac271ad77c559218161a1373c" +dependencies = [ + "bitflags 1.3.2", + "block", + "cocoa-foundation", + "core-foundation", + "core-graphics", + "foreign-types 0.5.0", + "libc", + "objc", +] + +[[package]] +name = "cocoa-foundation" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c6234cbb2e4c785b456c0644748b1ac416dd045799740356f8363dfe00c93f7" +dependencies = [ + "bitflags 1.3.2", + "block", + "core-foundation", + "core-graphics-types", + "libc", + "objc", +] + +[[package]] +name = "color_quant" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b" + +[[package]] +name = "colorchoice" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3fd119d74b830634cea2a0f58bbd0d54540518a14397557951e79340abc28c0" + +[[package]] +name = "concurrent-queue" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "core-foundation" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" + +[[package]] +name = "core-graphics" +version = "0.23.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c07782be35f9e1140080c6b96f0d44b739e2278479f64e02fdab4e32dfd8b081" +dependencies = [ + "bitflags 1.3.2", + "core-foundation", + "core-graphics-types", + "foreign-types 0.5.0", + "libc", +] + +[[package]] +name = "core-graphics-types" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45390e6114f68f718cc7a830514a96f903cccd70d02a8f6d9f643ac4ba45afaf" +dependencies = [ + "bitflags 1.3.2", + "core-foundation", + "libc", +] + +[[package]] +name = "crc32fast" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" +dependencies = [ + "cfg-if 1.0.0", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" + +[[package]] +name = "cvt" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2ae9bf77fbf2d39ef573205d554d87e86c12f1994e9ea335b0651b9b278bcf1" +dependencies = [ + "cfg-if 1.0.0", +] + +[[package]] +name = "deranged" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" +dependencies = [ + "powerfmt", +] + +[[package]] +name = "derivative" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "derive_arbitrary" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67e77553c4162a157adbf834ebae5b415acbecbeafc7a74b0e886657506a7611" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.72", +] + +[[package]] +name = "dialog" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "736bab36d647d14c985725a57a4110a1182c6852104536cd42f1c97e96d29bf0" +dependencies = [ + "dirs", + "rpassword", +] + +[[package]] +name = "diff" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56254986775e3233ffa9c4d7d3faaf6d36a2c09d30b20687e9f88bc8bafc16c8" + +[[package]] +name = "dirs" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13aea89a5c93364a98e9b37b2fa237effbb694d5cfe01c5b70941f7eb087d5e3" +dependencies = [ + "cfg-if 0.1.10", + "dirs-sys", +] + +[[package]] +name = "dirs-next" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1" +dependencies = [ + "cfg-if 1.0.0", + "dirs-sys-next", +] + +[[package]] +name = "dirs-sys" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b1d1d91c932ef41c0f2663aa8b0ca0342d444d842c06914aa0a7e352d0bada6" +dependencies = [ + "libc", + "redox_users", + "winapi 0.3.9", +] + +[[package]] +name = "dirs-sys-next" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d" +dependencies = [ + "libc", + "redox_users", + "winapi 0.3.9", +] + +[[package]] +name = "displaydoc" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.72", +] + +[[package]] +name = "either" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" + +[[package]] +name = "enum-flags" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e49d7f94ae5845d14507b85d9f24f1ac106acca19508cd8c78a54616f8610233" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "equivalent" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" + +[[package]] +name = "errno" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "event-listener" +version = "2.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" + +[[package]] +name = "event-listener" +version = "5.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6032be9bd27023a771701cc49f9f053c751055f71efb2e0ae5c15809093675ba" +dependencies = [ + "concurrent-queue", + "parking", + "pin-project-lite", +] + +[[package]] +name = "event-listener-strategy" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f214dc438f977e6d4e3500aaa277f5ad94ca83fbbd9b1a15713ce2344ccc5a1" +dependencies = [ + "event-listener 5.3.1", + "pin-project-lite", +] + +[[package]] +name = "fastrand" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be" +dependencies = [ + "instant", +] + +[[package]] +name = "fastrand" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a" + +[[package]] +name = "fdeflate" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f9bfee30e4dedf0ab8b422f03af778d9612b63f502710fc500a334ebe2de645" +dependencies = [ + "simd-adler32", +] + +[[package]] +name = "file-rotate" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a3ed82142801f5b1363f7d463963d114db80f467e860b1cd82228eaebc627a0" +dependencies = [ + "chrono", + "flate2", +] + +[[package]] +name = "filelocksmith" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3583db48ba300c88320942d08b6ef5856e5f7a354da57a471604fa95034fab7" +dependencies = [ + "cc", +] + +[[package]] +name = "flate2" +version = "1.0.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f54427cfd1c7829e2a139fcefea601bf088ebca651d2bf53ebc600eac295dae" +dependencies = [ + "crc32fast", + "miniz_oxide", +] + +[[package]] +name = "foreign-types" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" +dependencies = [ + "foreign-types-shared 0.1.1", +] + +[[package]] +name = "foreign-types" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d737d9aa519fb7b749cbc3b962edcf310a8dd1f4b67c91c4f83975dbdd17d965" +dependencies = [ + "foreign-types-macros", + "foreign-types-shared 0.3.1", +] + +[[package]] +name = "foreign-types-macros" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.72", +] + +[[package]] +name = "foreign-types-shared" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" + +[[package]] +name = "foreign-types-shared" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa9a19cbb55df58761df49b23516a86d432839add4af60fc256da840f66ed35b" + +[[package]] +name = "form_urlencoded" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "fs_at" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "982f82cc75107eef84f417ad6c53ae89bf65b561937ca4a3b3b0fd04d0aa2425" +dependencies = [ + "aligned", + "cfg-if 1.0.0", + "cvt", + "libc", + "nix", + "windows-sys 0.48.0", +] + +[[package]] +name = "fs_extra" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42703706b716c37f96a77aea830392ad231f44c9e9a67872fa5548707e11b11c" + +[[package]] +name = "futures-channel" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" +dependencies = [ + "futures-core", +] + +[[package]] +name = "futures-core" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" + +[[package]] +name = "futures-io" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" + +[[package]] +name = "futures-lite" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49a9d51ce47660b1e808d3c990b4709f2f415d928835a17dfd16991515c46bce" +dependencies = [ + "fastrand 1.9.0", + "futures-core", + "futures-io", + "memchr", + "parking", + "pin-project-lite", + "waker-fn", +] + +[[package]] +name = "futures-lite" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52527eb5074e35e9339c6b4e8d12600c7128b68fb25dcb9fa9dec18f7c25f3a5" +dependencies = [ + "fastrand 2.1.0", + "futures-core", + "futures-io", + "parking", + "pin-project-lite", +] + +[[package]] +name = "getrandom" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" +dependencies = [ + "cfg-if 1.0.0", + "libc", + "wasi 0.11.0+wasi-snapshot-preview1", +] + +[[package]] +name = "gif" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fb2d69b19215e18bb912fa30f7ce15846e301408695e44e0ef719f1da9e19f2" +dependencies = [ + "color_quant", + "weezl", +] + +[[package]] +name = "glob" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" + +[[package]] +name = "gloo-timers" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b995a66bb87bebce9a0f4a95aed01daca4872c050bfcb21653361c03bc35e5c" +dependencies = [ + "futures-channel", + "futures-core", + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "hashbrown" +version = "0.14.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" + +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + +[[package]] +name = "hermit-abi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" + +[[package]] +name = "hermit-abi" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc" + +[[package]] +name = "home" +version = "0.5.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5" +dependencies = [ + "windows-sys 0.52.0", +] + +[[package]] +name = "iana-time-zone" +version = "0.1.60" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "wasm-bindgen", + "windows-core 0.52.0", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", +] + +[[package]] +name = "idna" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" +dependencies = [ + "unicode-bidi", + "unicode-normalization", +] + +[[package]] +name = "image" +version = "0.25.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99314c8a2152b8ddb211f924cdae532d8c5e4c8bb54728e12fff1b0cd5963a10" +dependencies = [ + "bytemuck", + "byteorder-lite", + "color_quant", + "gif", + "num-traits", + "png", + "zune-core", + "zune-jpeg", +] + +[[package]] +name = "indexmap" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de3fc2e30ba82dd1b3911c8de1ffc143c74a914a14e99514d7637e3099df5ea0" +dependencies = [ + "equivalent", + "hashbrown", +] + +[[package]] +name = "instant" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" +dependencies = [ + "cfg-if 1.0.0", +] + +[[package]] +name = "io-lifetimes" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2" +dependencies = [ + "hermit-abi 0.3.9", + "libc", + "windows-sys 0.48.0", +] + +[[package]] +name = "is_terminal_polyfill" +version = "1.70.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" + +[[package]] +name = "itertools" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" + +[[package]] +name = "jobserver" +version = "0.1.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48d1dbcbbeb6a7fec7e059840aa538bd62aaccf972c7346c4d9d2059312853d0" +dependencies = [ + "libc", +] + +[[package]] +name = "js-sys" +version = "0.3.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d" +dependencies = [ + "wasm-bindgen", +] + +[[package]] +name = "kernel32-sys" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" +dependencies = [ + "winapi 0.2.8", + "winapi-build", +] + +[[package]] +name = "kv-log-macro" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0de8b303297635ad57c9f5059fd9cee7a47f8e8daa09df0fcd07dd39fb22977f" +dependencies = [ + "log", +] + +[[package]] +name = "lazy_static" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" + +[[package]] +name = "libc" +version = "0.2.155" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c" + +[[package]] +name = "libloading" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4979f22fdb869068da03c9f7528f8297c6fd2606bc3a4affe42e6a823fdb8da4" +dependencies = [ + "cfg-if 1.0.0", + "windows-targets 0.52.6", +] + +[[package]] +name = "libredox" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" +dependencies = [ + "bitflags 2.6.0", + "libc", +] + +[[package]] +name = "linux-raw-sys" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519" + +[[package]] +name = "linux-raw-sys" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" + +[[package]] +name = "lockfree-object-pool" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9374ef4228402d4b7e403e5838cb880d9ee663314b0a900d5a6aabf0c213552e" + +[[package]] +name = "log" +version = "0.4.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" +dependencies = [ + "value-bag", +] + +[[package]] +name = "malloc_buf" +version = "0.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb" +dependencies = [ + "libc", +] + +[[package]] +name = "memchr" +version = "2.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" + +[[package]] +name = "memmap2" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe751422e4a8caa417e13c3ea66452215d7d63e19e604f4980461212f3ae1322" +dependencies = [ + "libc", +] + +[[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + +[[package]] +name = "miniz_oxide" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8a240ddb74feaf34a79a7add65a741f3167852fba007066dcac1ca548d89c08" +dependencies = [ + "adler", + "simd-adler32", +] + +[[package]] +name = "native-dialog" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "84e7038885d2aeab236bd60da9e159a5967b47cde3292da3b15ff1bec27c039f" +dependencies = [ + "ascii", + "block", + "cocoa", + "core-foundation", + "dirs-next", + "objc", + "objc-foundation", + "objc_id", + "once_cell", + "raw-window-handle", + "thiserror", + "versions", + "wfd", + "which", + "winapi 0.3.9", +] + +[[package]] +name = "native-tls" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8614eb2c83d59d1c8cc974dd3f920198647674a0a035e1af1fa58707e317466" +dependencies = [ + "libc", + "log", + "openssl", + "openssl-probe", + "openssl-sys", + "schannel", + "security-framework", + "security-framework-sys", + "tempfile", +] + +[[package]] +name = "nix" +version = "0.26.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "598beaf3cc6fdd9a5dfb1630c2800c7acd31df7aaf0f565796fba2b53ca1af1b" +dependencies = [ + "bitflags 1.3.2", + "cfg-if 1.0.0", + "libc", +] + +[[package]] +name = "nom" +version = "7.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" +dependencies = [ + "memchr", + "minimal-lexical", +] + +[[package]] +name = "normpath" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5831952a9476f2fed74b77d74182fa5ddc4d21c72ec45a333b250e3ed0272804" +dependencies = [ + "windows-sys 0.52.0", +] + +[[package]] +name = "ntest" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb183f0a1da7a937f672e5ee7b7edb727bf52b8a52d531374ba8ebb9345c0330" +dependencies = [ + "ntest_test_cases", + "ntest_timeout", +] + +[[package]] +name = "ntest_test_cases" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16d0d3f2a488592e5368ebbe996e7f1d44aa13156efad201f5b4d84e150eaa93" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ntest_timeout" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcc7c92f190c97f79b4a332f5e81dcf68c8420af2045c936c9be0bc9de6f63b5" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "num-conv" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" + +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", +] + +[[package]] +name = "num_threads" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c7398b9c8b70908f6371f47ed36737907c87c52af34c268fed0bf0ceb92ead9" +dependencies = [ + "libc", +] + +[[package]] +name = "objc" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1" +dependencies = [ + "malloc_buf", +] + +[[package]] +name = "objc-foundation" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1add1b659e36c9607c7aab864a76c7a4c2760cd0cd2e120f3fb8b952c7e22bf9" +dependencies = [ + "block", + "objc", + "objc_id", +] + +[[package]] +name = "objc_id" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c92d4ddb4bd7b50d730c215ff871754d0da6b2178849f8a2a2ab69712d0c073b" +dependencies = [ + "objc", +] + +[[package]] +name = "once_cell" +version = "1.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" + +[[package]] +name = "openssl" +version = "0.10.66" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9529f4786b70a3e8c61e11179af17ab6188ad8d0ded78c5529441ed39d4bd9c1" +dependencies = [ + "bitflags 2.6.0", + "cfg-if 1.0.0", + "foreign-types 0.3.2", + "libc", + "once_cell", + "openssl-macros", + "openssl-sys", +] + +[[package]] +name = "openssl-macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.72", +] + +[[package]] +name = "openssl-probe" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" + +[[package]] +name = "openssl-sys" +version = "0.9.103" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f9e8deee91df40a943c71b917e5874b951d32a802526c85721ce3b776c929d6" +dependencies = [ + "cc", + "libc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "os_info" +version = "3.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae99c7fa6dd38c7cafe1ec085e804f8f555a2f8659b0dbe03f1f9963a9b51092" +dependencies = [ + "log", + "serde", + "windows-sys 0.52.0", +] + +[[package]] +name = "parking" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb813b8af86854136c6922af0598d719255ecb2179515e6e7730d468f05c9cae" + +[[package]] +name = "percent-encoding" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" + +[[package]] +name = "pin-project-lite" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "piper" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae1d5c74c9876f070d3e8fd503d748c7d974c3e48da8f41350fa5222ef9b4391" +dependencies = [ + "atomic-waker", + "fastrand 2.1.0", + "futures-io", +] + +[[package]] +name = "pkg-config" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" + +[[package]] +name = "png" +version = "0.17.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06e4b0d3d1312775e782c86c91a111aa1f910cbb65e1337f9975b5f9a554b5e1" +dependencies = [ + "bitflags 1.3.2", + "crc32fast", + "fdeflate", + "flate2", + "miniz_oxide", +] + +[[package]] +name = "polling" +version = "2.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b2d323e8ca7996b3e23126511a523f7e62924d93ecd5ae73b333815b0eb3dce" +dependencies = [ + "autocfg", + "bitflags 1.3.2", + "cfg-if 1.0.0", + "concurrent-queue", + "libc", + "log", + "pin-project-lite", + "windows-sys 0.48.0", +] + +[[package]] +name = "polling" +version = "3.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3ed00ed3fbf728b5816498ecd316d1716eecaced9c0c8d2c5a6740ca214985b" +dependencies = [ + "cfg-if 1.0.0", + "concurrent-queue", + "hermit-abi 0.4.0", + "pin-project-lite", + "rustix 0.38.34", + "tracing", + "windows-sys 0.52.0", +] + +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + +[[package]] +name = "ppv-lite86" +version = "0.2.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" +dependencies = [ + "zerocopy", +] + +[[package]] +name = "pretty-bytes-rust" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe9cf90f159a57d064a311cfcc6d65f189c12bf399080a7dd2b64de47181639b" +dependencies = [ + "clap", +] + +[[package]] +name = "pretty_assertions" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af7cee1a6c8a5b9208b3cb1061f10c0cb689087b3d8ce85fb9d2dd7a29b6ba66" +dependencies = [ + "diff", + "yansi", +] + +[[package]] +name = "proc-macro-crate" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d37c51ca738a55da99dc0c4a34860fd675453b8b36209178c2249bb13651284" +dependencies = [ + "toml_edit", +] + +[[package]] +name = "proc-macro2" +version = "1.0.86" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha", + "rand_core", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom", +] + +[[package]] +name = "raw-window-handle" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2ff9a1f06a88b01621b7ae906ef0211290d1c8a168a15542486a8f61c0833b9" + +[[package]] +name = "redox_users" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd283d9651eeda4b2a83a43c1c91b266c40fd76ecd39a50a8c630ae69dc72891" +dependencies = [ + "getrandom", + "libredox", + "thiserror", +] + +[[package]] +name = "regex" +version = "1.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4219d74c6b67a3654a9fbebc4b419e22126d13d2f3c4a07ee0cb61ff79a79619" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b" + +[[package]] +name = "remove_dir_all" +version = "0.8.2" +source = "git+https://github.com/caesay/remove_dir_all.git#c98142b9150c53e6c5f56e752d2bf93433f2e207" +dependencies = [ + "cfg-if 1.0.0", + "cvt", + "fs_at", + "libc", + "log", + "normpath", + "same-file", + "windows-sys 0.52.0", +] + +[[package]] +name = "rpassword" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d37473170aedbe66ffa3ad3726939ba677d83c646ad4fd99e5b4bc38712f45ec" +dependencies = [ + "kernel32-sys", + "libc", + "winapi 0.2.8", +] + +[[package]] +name = "rustix" +version = "0.37.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fea8ca367a3a01fe35e6943c400addf443c0f57670e6ec51196f71a4b8762dd2" +dependencies = [ + "bitflags 1.3.2", + "errno", + "io-lifetimes", + "libc", + "linux-raw-sys 0.3.8", + "windows-sys 0.48.0", +] + +[[package]] +name = "rustix" +version = "0.38.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f" +dependencies = [ + "bitflags 2.6.0", + "errno", + "libc", + "linux-raw-sys 0.4.14", + "windows-sys 0.52.0", +] + +[[package]] +name = "rustversion" +version = "1.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6" + +[[package]] +name = "ryu" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" + +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "schannel" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbc91545643bcf3a0bbb6569265615222618bdf33ce4ffbbd13c4bbd4c093534" +dependencies = [ + "windows-sys 0.52.0", +] + +[[package]] +name = "security-framework" +version = "2.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" +dependencies = [ + "bitflags 2.6.0", + "core-foundation", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + +[[package]] +name = "security-framework-sys" +version = "2.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75da29fe9b9b08fe9d6b22b5b4bcbc75d8db3aa31e639aa56bb62e9d46bfceaf" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "semver" +version = "1.0.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" + +[[package]] +name = "serde" +version = "1.0.204" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc76f558e0cbb2a839d37354c575f1dc3fdc6546b5be373ba43d95f231bf7c12" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.204" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0cd7e117be63d3c3678776753929474f3b04a43a080c744d6b0ae2a8c28e222" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.72", +] + +[[package]] +name = "serde_json" +version = "1.0.122" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "784b6203951c57ff748476b126ccb5e8e2959a5c19e5c617ab1956be3dbc68da" +dependencies = [ + "itoa", + "memchr", + "ryu", + "serde", +] + +[[package]] +name = "sha1_smol" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbfa15b3dddfee50a0fff136974b3e1bde555604ba463834a7eb7deb6417705d" + +[[package]] +name = "simd-adler32" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" + +[[package]] +name = "simple-stopwatch" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea0b3bc19fbfbbc5823eb4f9f52a94f98a97f7b265e96defe319dfdac9692b51" +dependencies = [ + "time 0.1.45", +] + +[[package]] +name = "simplelog" +version = "0.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16257adbfaef1ee58b1363bdc0664c9b8e1e30aed86049635fb5f147d065a9c0" +dependencies = [ + "log", + "termcolor", + "time 0.3.36", +] + +[[package]] +name = "slab" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" +dependencies = [ + "autocfg", +] + +[[package]] +name = "socket2" +version = "0.4.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f7916fc008ca5542385b89a3d3ce689953c143e9304a9bf8beec1de48994c0d" +dependencies = [ + "libc", + "winapi 0.3.9", +] + +[[package]] +name = "stable_deref_trait" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" + +[[package]] +name = "strsim" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" + +[[package]] +name = "strum" +version = "0.26.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06" +dependencies = [ + "strum_macros", +] + +[[package]] +name = "strum_macros" +version = "0.26.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "rustversion", + "syn 2.0.72", +] + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.72" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc4b9b9bf2add8093d3f2c0204471e951b2285580335de42f9d2534f3ae7a8af" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "tempfile" +version = "3.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8fcd239983515c23a32fb82099f97d0b11b8c72f654ed659363a95c3dad7a53" +dependencies = [ + "cfg-if 1.0.0", + "fastrand 2.1.0", + "once_cell", + "rustix 0.38.34", + "windows-sys 0.52.0", +] + +[[package]] +name = "termcolor" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "thiserror" +version = "1.0.63" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.63" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.72", +] + +[[package]] +name = "time" +version = "0.1.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b797afad3f312d1c66a56d11d0316f916356d11bd158fbc6ca6389ff6bf805a" +dependencies = [ + "libc", + "wasi 0.10.0+wasi-snapshot-preview1", + "winapi 0.3.9", +] + +[[package]] +name = "time" +version = "0.3.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885" +dependencies = [ + "deranged", + "itoa", + "libc", + "num-conv", + "num_threads", + "powerfmt", + "serde", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" + +[[package]] +name = "time-macros" +version = "0.2.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf" +dependencies = [ + "num-conv", + "time-core", +] + +[[package]] +name = "tinyvec" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + +[[package]] +name = "toml" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" +dependencies = [ + "serde", +] + +[[package]] +name = "toml_datetime" +version = "0.6.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" + +[[package]] +name = "toml_edit" +version = "0.21.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1" +dependencies = [ + "indexmap", + "toml_datetime", + "winnow", +] + +[[package]] +name = "tracing" +version = "0.1.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" +dependencies = [ + "pin-project-lite", + "tracing-core", +] + +[[package]] +name = "tracing-core" +version = "0.1.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" + +[[package]] +name = "unicode-bidi" +version = "0.3.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" + +[[package]] +name = "unicode-ident" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" + +[[package]] +name = "unicode-normalization" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "ureq" +version = "2.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72139d247e5f97a3eff96229a7ae85ead5328a39efe76f8bf5a06313d505b6ea" +dependencies = [ + "base64", + "flate2", + "log", + "native-tls", + "once_cell", + "url", +] + +[[package]] +name = "url" +version = "2.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", +] + +[[package]] +name = "utf8parse" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" + +[[package]] +name = "value-bag" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a84c137d37ab0142f0f2ddfe332651fdbf252e7b7dbb4e67b6c1f1b2e925101" + +[[package]] +name = "vcpkg" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" + +[[package]] +name = "velopack" +version = "0.0.0-local" +dependencies = [ + "async-std", + "derivative", + "glob", + "log", + "native-tls", + "semver", + "serde", + "serde_json", + "thiserror", + "ureq", + "url", + "xml", + "zip", + "zstd", +] + +[[package]] +name = "velopack_bins" +version = "0.0.0-local" +dependencies = [ + "anyhow", + "bitflags 2.6.0", + "chrono", + "clap", + "derivative", + "dialog", + "enum-flags", + "file-rotate", + "filelocksmith", + "fs_extra", + "glob", + "image", + "lazy_static", + "libc", + "libloading", + "log", + "memmap2", + "native-dialog", + "native-tls", + "normpath", + "ntest", + "os_info", + "pretty-bytes-rust", + "pretty_assertions", + "rand", + "regex", + "remove_dir_all", + "same-file", + "semver", + "serde", + "serde_json", + "sha1_smol", + "simple-stopwatch", + "simplelog", + "strsim", + "strum", + "tempfile", + "time 0.3.36", + "ureq", + "url", + "wait-timeout", + "waitpid-any", + "webview2-com", + "windows", + "winres", + "winsafe", + "xml", + "zip", + "zstd", +] + +[[package]] +name = "versions" +version = "5.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c73a36bc44e3039f51fbee93e39f41225f6b17b380eb70cc2aab942df06b34dd" +dependencies = [ + "itertools", + "nom", +] + +[[package]] +name = "wait-timeout" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f200f5b12eb75f8c1ed65abd4b2db8a6e1b138a20de009dacee265a2498f3f6" +dependencies = [ + "libc", +] + +[[package]] +name = "waitpid-any" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0189157c93c54d86e5c61ddf0c1223baa25e5bfb2f6f9983c678985b028d7c12" +dependencies = [ + "rustix 0.38.34", + "windows-sys 0.52.0", +] + +[[package]] +name = "waker-fn" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "317211a0dc0ceedd78fb2ca9a44aed3d7b9b26f81870d485c07122b4350673b7" + +[[package]] +name = "wasi" +version = "0.10.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f" + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + +[[package]] +name = "wasm-bindgen" +version = "0.2.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8" +dependencies = [ + "cfg-if 1.0.0", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da" +dependencies = [ + "bumpalo", + "log", + "once_cell", + "proc-macro2", + "quote", + "syn 2.0.72", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.42" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76bc14366121efc8dbb487ab05bcc9d346b3b5ec0eaa76e46594cabbe51762c0" +dependencies = [ + "cfg-if 1.0.0", + "js-sys", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.72", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" + +[[package]] +name = "web-sys" +version = "0.3.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77afa9a11836342370f4817622a2f0f418b134426d91a82dfb48f532d2ec13ef" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "webview2-com" +version = "0.31.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6516cfa64c6b3212686080eeec378e662c2af54bb2a5b2a22749673f5cb2226f" +dependencies = [ + "webview2-com-macros", + "webview2-com-sys", + "windows", + "windows-core 0.57.0", + "windows-implement", + "windows-interface", +] + +[[package]] +name = "webview2-com-macros" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac1345798ecd8122468840bcdf1b95e5dc6d2206c5e4b0eafa078d061f59c9bc" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.72", +] + +[[package]] +name = "webview2-com-sys" +version = "0.31.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c76d5b77320ff155660be1df3e6588bc85c75f1a9feef938cc4dc4dd60d1d7cf" +dependencies = [ + "thiserror", + "windows", + "windows-core 0.57.0", +] + +[[package]] +name = "weezl" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53a85b86a771b1c87058196170769dd264f66c0782acf1ae6cc51bfd64b39082" + +[[package]] +name = "wfd" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e713040b67aae5bf1a0ae3e1ebba8cc29ab2b90da9aa1bff6e09031a8a41d7a8" +dependencies = [ + "libc", + "winapi 0.3.9", +] + +[[package]] +name = "which" +version = "4.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87ba24419a2078cd2b0f2ede2691b6c66d8e47836da3b6db8265ebad47afbfc7" +dependencies = [ + "either", + "home", + "once_cell", + "rustix 0.38.34", +] + +[[package]] +name = "winapi" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-build" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc" + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" +dependencies = [ + "windows-sys 0.59.0", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows" +version = "0.57.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12342cb4d8e3b046f3d80effd474a7a02447231330ef77d71daa6fbc40681143" +dependencies = [ + "windows-core 0.57.0", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-core" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-core" +version = "0.57.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2ed2439a290666cd67ecce2b0ffaad89c2a56b976b736e6ece670297897832d" +dependencies = [ + "windows-implement", + "windows-interface", + "windows-result", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-implement" +version = "0.57.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9107ddc059d5b6fbfbffdfa7a7fe3e22a226def0b2608f72e9d552763d3e1ad7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.72", +] + +[[package]] +name = "windows-interface" +version = "0.57.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29bee4b38ea3cde66011baa44dba677c432a78593e202392d1e9070cf2a7fca7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.72", +] + +[[package]] +name = "windows-result" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e383302e8ec8515204254685643de10811af0ed97ea37210dc26fb0032647f8" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets 0.48.5", +] + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-targets" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +dependencies = [ + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", +] + +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", + "windows_i686_gnullvm", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + +[[package]] +name = "winnow" +version = "0.5.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" +dependencies = [ + "memchr", +] + +[[package]] +name = "winres" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b68db261ef59e9e52806f688020631e987592bd83619edccda9c47d42cde4f6c" +dependencies = [ + "toml", +] + +[[package]] +name = "winsafe" +version = "0.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a40369220be405a294b88b13ccc3d916fac12423250b30092c8c4ea19001f7f1" + +[[package]] +name = "xml" +version = "0.8.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ede1c99c55b4b3ad0349018ef0eccbe954ce9c342334410707ee87177fcf2ab4" +dependencies = [ + "xml-rs", +] + +[[package]] +name = "xml-rs" +version = "0.8.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "791978798f0597cfc70478424c2b4fdc2b7a8024aaff78497ef00f24ef674193" + +[[package]] +name = "yansi" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09041cd90cf85f7f8b2df60c646f853b7f535ce68f85244eb6731cf89fa498ec" + +[[package]] +name = "zerocopy" +version = "0.7.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" +dependencies = [ + "byteorder", + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.7.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.72", +] + +[[package]] +name = "zip" +version = "2.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40dd8c92efc296286ce1fbd16657c5dbefff44f1b4ca01cc5f517d8b7b3d3e2e" +dependencies = [ + "arbitrary", + "crc32fast", + "crossbeam-utils", + "displaydoc", + "flate2", + "indexmap", + "memchr", + "thiserror", + "zopfli", +] + +[[package]] +name = "zopfli" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5019f391bac5cf252e93bbcc53d039ffd62c7bfb7c150414d61369afe57e946" +dependencies = [ + "bumpalo", + "crc32fast", + "lockfree-object-pool", + "log", + "once_cell", + "simd-adler32", +] + +[[package]] +name = "zstd" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcf2b778a664581e31e389454a7072dab1647606d44f7feea22cd5abb9c9f3f9" +dependencies = [ + "zstd-safe", +] + +[[package]] +name = "zstd-safe" +version = "7.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54a3ab4db68cea366acc5c897c7b4d4d1b8994a9cd6e6f841f8964566a419059" +dependencies = [ + "zstd-sys", +] + +[[package]] +name = "zstd-sys" +version = "2.0.13+zstd.1.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38ff0f21cfee8f97d94cef41359e0c89aa6113028ab0291aa8ca0038995a95aa" +dependencies = [ + "cc", + "pkg-config", +] + +[[package]] +name = "zune-core" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f423a2c17029964870cfaabb1f13dfab7d092a62a29a89264f4d36990ca414a" + +[[package]] +name = "zune-jpeg" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16099418600b4d8f028622f73ff6e3deaabdff330fb9a2a131dea781ee8b0768" +dependencies = [ + "zune-core", +] diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 00000000..88a97491 --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,30 @@ +[workspace] +resolver = "2" +members = [ + "src/bins", + "src/lib-rust", + # "src/lib-cpp/generator" +] + +[workspace.package] +authors = ["Caelan Sayler "] +homepage = "https://velopack.io" +repository = "https://github.com/velopack/velopack" +documentation = "https://docs.velopack.io" +keywords = ["update", "install", "velopack", "squirrel", "automatic-updates"] +categories = ["development-tools"] +license = "MIT" +edition = "2021" +rust-version = "1.75" + +# default to small, optimized workspace release binaries +[profile.release] +opt-level = "z" # optimize for size +lto = true # link-time optimization +debug = false # disable debug info +debug-assertions = false # disable debug assertions +overflow-checks = false # disable overflow checks +panic = "abort" # abort on panic +incremental = false # disable incremental compilation +codegen-units = 1 # compile all code into a single unit +rpath = false # disable rpath \ No newline at end of file diff --git a/src/Rust/Cross.toml b/Cross.toml similarity index 100% rename from src/Rust/Cross.toml rename to Cross.toml diff --git a/Velopack.sln b/Velopack.sln index 1a2b468a..d7232727 100644 --- a/Velopack.sln +++ b/Velopack.sln @@ -2,7 +2,7 @@ Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio Version 17 VisualStudioVersion = 17.0.31815.197 MinimumVisualStudioVersion = 10.0.40219.1 -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Velopack", "src\Velopack\Velopack.csproj", "{1436E22A-FE3C-4D68-9A85-9E74DF2E6A92}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Velopack", "src\lib-csharp\Velopack.csproj", "{1436E22A-FE3C-4D68-9A85-9E74DF2E6A92}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Velopack.Tests", "test\Velopack.Tests\Velopack.Tests.csproj", "{98AEB048-E27D-42F4-9440-505B7F78BAFD}" EndProject @@ -20,9 +20,9 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "SolutionLevel", "SolutionLe version.json = version.json EndProjectSection EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Velopack.Packaging", "src\Velopack.Packaging\Velopack.Packaging.csproj", "{352C15EA-622F-4132-80D8-9B6E3C83404E}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Velopack.Packaging", "src\vpk\Velopack.Packaging\Velopack.Packaging.csproj", "{352C15EA-622F-4132-80D8-9B6E3C83404E}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Velopack.Vpk", "src\Velopack.Vpk\Velopack.Vpk.csproj", "{9E769C7E-A54C-4844-8362-727D37BB1578}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Velopack.Vpk", "src\vpk\Velopack.Vpk\Velopack.Vpk.csproj", "{9E769C7E-A54C-4844-8362-727D37BB1578}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Velopack.CommandLine.Tests", "test\Velopack.CommandLine.Tests\Velopack.CommandLine.Tests.csproj", "{519EAB50-47B8-425F-8B20-AB9548F220B4}" EndProject @@ -31,11 +31,11 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{7AC3A776 test\Directory.Build.props = test\Directory.Build.props EndProjectSection EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Velopack.Packaging.Windows", "src\Velopack.Packaging.Windows\Velopack.Packaging.Windows.csproj", "{E35039C8-1F98-48EB-B7D5-08E33DF061A7}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Velopack.Packaging.Windows", "src\vpk\Velopack.Packaging.Windows\Velopack.Packaging.Windows.csproj", "{E35039C8-1F98-48EB-B7D5-08E33DF061A7}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Velopack.Packaging.Unix", "src\Velopack.Packaging.Unix\Velopack.Packaging.Unix.csproj", "{3382BCB7-657E-4E7B-A2B9-D65AA4DA073B}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Velopack.Packaging.Unix", "src\vpk\Velopack.Packaging.Unix\Velopack.Packaging.Unix.csproj", "{3382BCB7-657E-4E7B-A2B9-D65AA4DA073B}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Velopack.Deployment", "src\Velopack.Deployment\Velopack.Deployment.csproj", "{D19EA72C-E7AE-4A7B-924A-E7550901A49C}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Velopack.Deployment", "src\vpk\Velopack.Deployment\Velopack.Deployment.csproj", "{D19EA72C-E7AE-4A7B-924A-E7550901A49C}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Velopack.Packaging.Tests", "test\Velopack.Packaging.Tests\Velopack.Packaging.Tests.csproj", "{175B06A5-5C09-4DAB-A6AF-C8A2257BD1B6}" EndProject @@ -46,17 +46,17 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "samples", "samples", "{3EBF samples\Directory.Build.targets = samples\Directory.Build.targets EndProjectSection EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AvaloniaCrossPlat", "samples\AvaloniaCrossPlat\AvaloniaCrossPlat.csproj", "{1FF6A262-13D0-45DF-B818-77AC84C52C6F}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CSharpAvalonia", "samples\CSharpAvalonia\CSharpAvalonia.csproj", "{1FF6A262-13D0-45DF-B818-77AC84C52C6F}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LegacyTestApp", "test\LegacyTestApp\LegacyTestApp.csproj", "{8B27C4BF-21B8-48B0-80F8-74520227C35F}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "VeloWpfSample", "samples\VeloWpfSample\VeloWpfSample.csproj", "{9E0F2B00-1B88-4B75-BEED-6DF8DBCA36B5}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CSharpWpf", "samples\CSharpWpf\CSharpWpf.csproj", "{9E0F2B00-1B88-4B75-BEED-6DF8DBCA36B5}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Divergic.Logging.Xunit", "test\Divergic.Logging.Xunit\Divergic.Logging.Xunit.csproj", "{5ED2E9AF-101D-4D2D-B0B5-90A920EF692D}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Velopack.Build", "src\Velopack.Build\Velopack.Build.csproj", "{97C9B2CF-877F-4C98-A513-058784A23697}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Velopack.Build", "src\vpk\Velopack.Build\Velopack.Build.csproj", "{97C9B2CF-877F-4C98-A513-058784A23697}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Velopack.IcoLib", "src\Velopack.IcoLib\Velopack.IcoLib.csproj", "{8A0A980A-D51C-458E-8942-00BC900FD2D0}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Velopack.IcoLib", "src\vpk\Velopack.IcoLib\Velopack.IcoLib.csproj", "{8A0A980A-D51C-458E-8942-00BC900FD2D0}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution diff --git a/src/Rust/rustfmt.toml b/rustfmt.toml similarity index 100% rename from src/Rust/rustfmt.toml rename to rustfmt.toml diff --git a/samples/AvaloniaCrossPlat/App.axaml b/samples/CSharpAvalonia/App.axaml similarity index 89% rename from samples/AvaloniaCrossPlat/App.axaml rename to samples/CSharpAvalonia/App.axaml index 3bc83439..5d11dbf1 100644 --- a/samples/AvaloniaCrossPlat/App.axaml +++ b/samples/CSharpAvalonia/App.axaml @@ -1,6 +1,6 @@ diff --git a/samples/AvaloniaCrossPlat/App.axaml.cs b/samples/CSharpAvalonia/App.axaml.cs similarity index 94% rename from samples/AvaloniaCrossPlat/App.axaml.cs rename to samples/CSharpAvalonia/App.axaml.cs index 42dcc01d..a0720d3f 100644 --- a/samples/AvaloniaCrossPlat/App.axaml.cs +++ b/samples/CSharpAvalonia/App.axaml.cs @@ -2,7 +2,7 @@ using Avalonia; using Avalonia.Controls.ApplicationLifetimes; using Avalonia.Markup.Xaml; -namespace AvaloniaCrossPlat; +namespace CSharpAvalonia; public partial class App : Application { diff --git a/samples/AvaloniaCrossPlat/AvaloniaCrossPlat.csproj b/samples/CSharpAvalonia/CSharpAvalonia.csproj similarity index 95% rename from samples/AvaloniaCrossPlat/AvaloniaCrossPlat.csproj rename to samples/CSharpAvalonia/CSharpAvalonia.csproj index 226bed8a..648174f2 100644 --- a/samples/AvaloniaCrossPlat/AvaloniaCrossPlat.csproj +++ b/samples/CSharpAvalonia/CSharpAvalonia.csproj @@ -2,6 +2,7 @@ WinExe + VelopackCSharpAvalonia net8.0 true app.manifest diff --git a/samples/AvaloniaCrossPlat/MainWindow.axaml b/samples/CSharpAvalonia/MainWindow.axaml similarity index 93% rename from samples/AvaloniaCrossPlat/MainWindow.axaml rename to samples/CSharpAvalonia/MainWindow.axaml index 7f5bdacc..55889ce2 100644 --- a/samples/AvaloniaCrossPlat/MainWindow.axaml +++ b/samples/CSharpAvalonia/MainWindow.axaml @@ -3,9 +3,9 @@ xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d" Width="600" Height="600" - x:Class="AvaloniaCrossPlat.MainWindow" + x:Class="CSharpAvalonia.MainWindow" WindowStartupLocation="CenterScreen" - Title="AvaloniaCrossPlat"> + Title="CSharpAvalonia"> diff --git a/samples/AvaloniaCrossPlat/MainWindow.axaml.cs b/samples/CSharpAvalonia/MainWindow.axaml.cs similarity index 99% rename from samples/AvaloniaCrossPlat/MainWindow.axaml.cs rename to samples/CSharpAvalonia/MainWindow.axaml.cs index ca1fd652..294fd691 100644 --- a/samples/AvaloniaCrossPlat/MainWindow.axaml.cs +++ b/samples/CSharpAvalonia/MainWindow.axaml.cs @@ -6,7 +6,7 @@ using Avalonia.Threading; using Microsoft.Extensions.Logging; using Velopack; -namespace AvaloniaCrossPlat; +namespace CSharpAvalonia; public partial class MainWindow : Window { diff --git a/samples/AvaloniaCrossPlat/MemoryLogger.cs b/samples/CSharpAvalonia/MemoryLogger.cs similarity index 97% rename from samples/AvaloniaCrossPlat/MemoryLogger.cs rename to samples/CSharpAvalonia/MemoryLogger.cs index de29858a..8786f511 100644 --- a/samples/AvaloniaCrossPlat/MemoryLogger.cs +++ b/samples/CSharpAvalonia/MemoryLogger.cs @@ -2,7 +2,7 @@ using System.Text; using Microsoft.Extensions.Logging; -namespace AvaloniaCrossPlat; +namespace CSharpAvalonia; public class LogUpdatedEventArgs : EventArgs { diff --git a/samples/AvaloniaCrossPlat/Program.cs b/samples/CSharpAvalonia/Program.cs similarity index 97% rename from samples/AvaloniaCrossPlat/Program.cs rename to samples/CSharpAvalonia/Program.cs index da948be3..2d643306 100644 --- a/samples/AvaloniaCrossPlat/Program.cs +++ b/samples/CSharpAvalonia/Program.cs @@ -2,7 +2,7 @@ using Avalonia; using Velopack; -namespace AvaloniaCrossPlat; +namespace CSharpAvalonia; class Program { diff --git a/samples/AvaloniaCrossPlat/app.manifest b/samples/CSharpAvalonia/app.manifest similarity index 100% rename from samples/AvaloniaCrossPlat/app.manifest rename to samples/CSharpAvalonia/app.manifest diff --git a/samples/AvaloniaCrossPlat/build-linux.sh b/samples/CSharpAvalonia/build-linux.sh similarity index 77% rename from samples/AvaloniaCrossPlat/build-linux.sh rename to samples/CSharpAvalonia/build-linux.sh index b3ec51e2..30b46202 100644 --- a/samples/AvaloniaCrossPlat/build-linux.sh +++ b/samples/CSharpAvalonia/build-linux.sh @@ -15,9 +15,9 @@ RELEASE_DIR="$SCRIPT_DIR/releases" PUBLISH_DIR="$SCRIPT_DIR/publish" echo "" -echo "Compiling AvaloniaCrossPlat with dotnet..." +echo "Compiling VelopackCSharpAvalonia with dotnet..." dotnet publish -c Release --self-contained -r linux-x64 -o "$PUBLISH_DIR" echo "" echo "Building Velopack Release v$BUILD_VERSION" -vpk pack -u AvaloniaCrossPlat -v $BUILD_VERSION -o "$RELEASE_DIR" -p "$PUBLISH_DIR" \ No newline at end of file +vpk pack -u VelopackCSharpAvalonia -v $BUILD_VERSION -o "$RELEASE_DIR" -p "$PUBLISH_DIR" \ No newline at end of file diff --git a/samples/AvaloniaCrossPlat/build-osx.sh b/samples/CSharpAvalonia/build-osx.sh similarity index 77% rename from samples/AvaloniaCrossPlat/build-osx.sh rename to samples/CSharpAvalonia/build-osx.sh index 75ae3892..5cf127e2 100644 --- a/samples/AvaloniaCrossPlat/build-osx.sh +++ b/samples/CSharpAvalonia/build-osx.sh @@ -15,9 +15,9 @@ RELEASE_DIR="$SCRIPT_DIR/releases" PUBLISH_DIR="$SCRIPT_DIR/publish" echo "" -echo "Compiling AvaloniaCrossPlat with dotnet..." +echo "Compiling VelopackCSharpAvalonia with dotnet..." dotnet publish -c Release --self-contained -r osx-x64 -o "$PUBLISH_DIR" echo "" echo "Building Velopack Release v$BUILD_VERSION" -vpk pack -u AvaloniaCrossPlat -v $BUILD_VERSION -o "$RELEASE_DIR" -p "$PUBLISH_DIR" \ No newline at end of file +vpk pack -u VelopackCSharpAvalonia -v $BUILD_VERSION -o "$RELEASE_DIR" -p "$PUBLISH_DIR" \ No newline at end of file diff --git a/samples/AvaloniaCrossPlat/build-win.bat b/samples/CSharpAvalonia/build-win.bat similarity index 68% rename from samples/AvaloniaCrossPlat/build-win.bat rename to samples/CSharpAvalonia/build-win.bat index 6d8ebfce..7c1b2056 100644 --- a/samples/AvaloniaCrossPlat/build-win.bat +++ b/samples/CSharpAvalonia/build-win.bat @@ -10,9 +10,9 @@ if "%~1"=="" ( set "version=%~1" echo. -echo Compiling AvaloniaCrossPlat with dotnet... +echo Compiling VelopackCSharpAvalonia with dotnet... dotnet publish -c Release --no-self-contained -r win-x64 -o %~dp0publish echo. echo Building Velopack Release v%version% -vpk pack -u AvaloniaCrossPlat -o %~dp0releases -p %~dp0publish -f net8-x64-desktop -v %* \ No newline at end of file +vpk pack -u VelopackCSharpAvalonia -o %~dp0releases -p %~dp0publish -f net8-x64-desktop -v %* \ No newline at end of file diff --git a/samples/AvaloniaCrossPlat/dev-scripts/build-linux.sh b/samples/CSharpAvalonia/dev-scripts/build-linux.sh old mode 100755 new mode 100644 similarity index 82% rename from samples/AvaloniaCrossPlat/dev-scripts/build-linux.sh rename to samples/CSharpAvalonia/dev-scripts/build-linux.sh index c2301176..24248df4 --- a/samples/AvaloniaCrossPlat/dev-scripts/build-linux.sh +++ b/samples/CSharpAvalonia/dev-scripts/build-linux.sh @@ -27,9 +27,9 @@ dotnet build src/Velopack.Vpk/Velopack.Vpk.csproj echo "" cd "$SCRIPT_DIR/.." -echo "Compiling AvaloniaCrossPlat with dotnet..." +echo "Compiling VelopackCSharpAvalonia with dotnet..." dotnet publish -c Release --self-contained -r linux-x64 -o "$PUBLISH_DIR" -p:UseLocalVelopack=true echo "" echo "Building Velopack Release v$BUILD_VERSION" -"$SCRIPT_DIR/../../../build/Debug/net8.0/vpk" pack -u AvaloniaCrossPlat -v $BUILD_VERSION -o "$RELEASE_DIR" -p "$PUBLISH_DIR" \ No newline at end of file +"$SCRIPT_DIR/../../../build/Debug/net8.0/vpk" pack -u VelopackCSharpAvalonia -v $BUILD_VERSION -o "$RELEASE_DIR" -p "$PUBLISH_DIR" \ No newline at end of file diff --git a/samples/AvaloniaCrossPlat/dev-scripts/build-osx.sh b/samples/CSharpAvalonia/dev-scripts/build-osx.sh old mode 100755 new mode 100644 similarity index 80% rename from samples/AvaloniaCrossPlat/dev-scripts/build-osx.sh rename to samples/CSharpAvalonia/dev-scripts/build-osx.sh index 12249b7a..847a212c --- a/samples/AvaloniaCrossPlat/dev-scripts/build-osx.sh +++ b/samples/CSharpAvalonia/dev-scripts/build-osx.sh @@ -26,9 +26,9 @@ dotnet build src/Velopack.Vpk/Velopack.Vpk.csproj echo "" cd "$SCRIPT_DIR/.." -echo "Compiling AvaloniaCrossPlat with dotnet..." +echo "Compiling VelopackCSharpAvalonia with dotnet..." dotnet publish -c Release --self-contained -r osx-x64 -o "$PUBLISH_DIR" -p:UseLocalVelopack=true echo "" echo "Building Velopack Release v$BUILD_VERSION" -"$SCRIPT_DIR/../../../build/Debug/net8.0/vpk" pack -u AvaloniaCrossPlat -v $BUILD_VERSION -o "$RELEASE_DIR" -p "$PUBLISH_DIR" \ No newline at end of file +"$SCRIPT_DIR/../../../build/Debug/net8.0/vpk" pack -u VelopackCSharpAvalonia -v $BUILD_VERSION -o "$RELEASE_DIR" -p "$PUBLISH_DIR" \ No newline at end of file diff --git a/samples/AvaloniaCrossPlat/dev-scripts/build-win.bat b/samples/CSharpAvalonia/dev-scripts/build-win.bat similarity index 84% rename from samples/AvaloniaCrossPlat/dev-scripts/build-win.bat rename to samples/CSharpAvalonia/dev-scripts/build-win.bat index 72aad6c8..d3199ae7 100644 --- a/samples/AvaloniaCrossPlat/dev-scripts/build-win.bat +++ b/samples/CSharpAvalonia/dev-scripts/build-win.bat @@ -26,9 +26,9 @@ cd %~dp0.. set "version=%~1" echo. -echo Compiling AvaloniaCrossPlat with dotnet... +echo Compiling VelopackCSharpAvalonia with dotnet... dotnet publish -c Release --self-contained -r win-x64 -o publish -p:UseLocalVelopack=true echo. echo Building Velopack Release v%version% -%~dp0..\..\..\build\Debug\net8.0\vpk pack -u AvaloniaCrossPlat -o releases -p publish -v %* \ No newline at end of file +%~dp0..\..\..\build\Debug\net8.0\vpk pack -u VelopackCSharpAvalonia -o releases -p publish -v %* \ No newline at end of file diff --git a/samples/AvaloniaCrossPlat/readme.md b/samples/CSharpAvalonia/readme.md similarity index 100% rename from samples/AvaloniaCrossPlat/readme.md rename to samples/CSharpAvalonia/readme.md diff --git a/samples/UnityMonoSample/.editorconfig b/samples/CSharpUnityMono/.editorconfig similarity index 100% rename from samples/UnityMonoSample/.editorconfig rename to samples/CSharpUnityMono/.editorconfig diff --git a/samples/UnityMonoSample/.gitignore b/samples/CSharpUnityMono/.gitignore similarity index 100% rename from samples/UnityMonoSample/.gitignore rename to samples/CSharpUnityMono/.gitignore diff --git a/samples/UnityMonoSample/Assets/NuGet.config b/samples/CSharpUnityMono/Assets/NuGet.config similarity index 100% rename from samples/UnityMonoSample/Assets/NuGet.config rename to samples/CSharpUnityMono/Assets/NuGet.config diff --git a/samples/UnityMonoSample/Assets/NuGet.config.meta b/samples/CSharpUnityMono/Assets/NuGet.config.meta similarity index 100% rename from samples/UnityMonoSample/Assets/NuGet.config.meta rename to samples/CSharpUnityMono/Assets/NuGet.config.meta diff --git a/samples/UnityMonoSample/Assets/Packages.meta b/samples/CSharpUnityMono/Assets/Packages.meta similarity index 100% rename from samples/UnityMonoSample/Assets/Packages.meta rename to samples/CSharpUnityMono/Assets/Packages.meta diff --git a/samples/UnityMonoSample/Assets/Packages/Microsoft.Extensions.Logging.Abstractions.2.2.0.meta b/samples/CSharpUnityMono/Assets/Packages/Microsoft.Extensions.Logging.Abstractions.2.2.0.meta similarity index 100% rename from samples/UnityMonoSample/Assets/Packages/Microsoft.Extensions.Logging.Abstractions.2.2.0.meta rename to samples/CSharpUnityMono/Assets/Packages/Microsoft.Extensions.Logging.Abstractions.2.2.0.meta diff --git a/samples/UnityMonoSample/Assets/Packages/Microsoft.Win32.Registry.5.0.0.meta b/samples/CSharpUnityMono/Assets/Packages/Microsoft.Win32.Registry.5.0.0.meta similarity index 100% rename from samples/UnityMonoSample/Assets/Packages/Microsoft.Win32.Registry.5.0.0.meta rename to samples/CSharpUnityMono/Assets/Packages/Microsoft.Win32.Registry.5.0.0.meta diff --git a/samples/UnityMonoSample/Assets/Packages/Newtonsoft.Json.13.0.1.meta b/samples/CSharpUnityMono/Assets/Packages/Newtonsoft.Json.13.0.1.meta similarity index 100% rename from samples/UnityMonoSample/Assets/Packages/Newtonsoft.Json.13.0.1.meta rename to samples/CSharpUnityMono/Assets/Packages/Newtonsoft.Json.13.0.1.meta diff --git a/samples/UnityMonoSample/Assets/Packages/NuGet.Versioning.6.9.1.meta b/samples/CSharpUnityMono/Assets/Packages/NuGet.Versioning.6.9.1.meta similarity index 100% rename from samples/UnityMonoSample/Assets/Packages/NuGet.Versioning.6.9.1.meta rename to samples/CSharpUnityMono/Assets/Packages/NuGet.Versioning.6.9.1.meta diff --git a/samples/UnityMonoSample/Assets/Packages/System.Security.AccessControl.5.0.0.meta b/samples/CSharpUnityMono/Assets/Packages/System.Security.AccessControl.5.0.0.meta similarity index 100% rename from samples/UnityMonoSample/Assets/Packages/System.Security.AccessControl.5.0.0.meta rename to samples/CSharpUnityMono/Assets/Packages/System.Security.AccessControl.5.0.0.meta diff --git a/samples/UnityMonoSample/Assets/Packages/System.Security.Principal.Windows.5.0.0.meta b/samples/CSharpUnityMono/Assets/Packages/System.Security.Principal.Windows.5.0.0.meta similarity index 100% rename from samples/UnityMonoSample/Assets/Packages/System.Security.Principal.Windows.5.0.0.meta rename to samples/CSharpUnityMono/Assets/Packages/System.Security.Principal.Windows.5.0.0.meta diff --git a/samples/UnityMonoSample/Assets/Packages/Velopack.0.0.359.meta b/samples/CSharpUnityMono/Assets/Packages/Velopack.0.0.359.meta similarity index 100% rename from samples/UnityMonoSample/Assets/Packages/Velopack.0.0.359.meta rename to samples/CSharpUnityMono/Assets/Packages/Velopack.0.0.359.meta diff --git a/samples/UnityMonoSample/Assets/Scenes.meta b/samples/CSharpUnityMono/Assets/Scenes.meta similarity index 100% rename from samples/UnityMonoSample/Assets/Scenes.meta rename to samples/CSharpUnityMono/Assets/Scenes.meta diff --git a/samples/UnityMonoSample/Assets/Scenes/SampleScene.unity b/samples/CSharpUnityMono/Assets/Scenes/SampleScene.unity similarity index 100% rename from samples/UnityMonoSample/Assets/Scenes/SampleScene.unity rename to samples/CSharpUnityMono/Assets/Scenes/SampleScene.unity diff --git a/samples/UnityMonoSample/Assets/Scenes/SampleScene.unity.meta b/samples/CSharpUnityMono/Assets/Scenes/SampleScene.unity.meta similarity index 100% rename from samples/UnityMonoSample/Assets/Scenes/SampleScene.unity.meta rename to samples/CSharpUnityMono/Assets/Scenes/SampleScene.unity.meta diff --git a/samples/UnityMonoSample/Assets/Scenes/UpdateSample.cs b/samples/CSharpUnityMono/Assets/Scenes/UpdateSample.cs similarity index 100% rename from samples/UnityMonoSample/Assets/Scenes/UpdateSample.cs rename to samples/CSharpUnityMono/Assets/Scenes/UpdateSample.cs diff --git a/samples/UnityMonoSample/Assets/Scenes/UpdateSample.cs.meta b/samples/CSharpUnityMono/Assets/Scenes/UpdateSample.cs.meta similarity index 100% rename from samples/UnityMonoSample/Assets/Scenes/UpdateSample.cs.meta rename to samples/CSharpUnityMono/Assets/Scenes/UpdateSample.cs.meta diff --git a/samples/UnityMonoSample/Assets/TextMesh Pro.meta b/samples/CSharpUnityMono/Assets/TextMesh Pro.meta similarity index 100% rename from samples/UnityMonoSample/Assets/TextMesh Pro.meta rename to samples/CSharpUnityMono/Assets/TextMesh Pro.meta diff --git a/samples/UnityMonoSample/Assets/TextMesh Pro/Documentation.meta b/samples/CSharpUnityMono/Assets/TextMesh Pro/Documentation.meta similarity index 100% rename from samples/UnityMonoSample/Assets/TextMesh Pro/Documentation.meta rename to samples/CSharpUnityMono/Assets/TextMesh Pro/Documentation.meta diff --git a/samples/UnityMonoSample/Assets/TextMesh Pro/Documentation/TextMesh Pro User Guide 2016.pdf b/samples/CSharpUnityMono/Assets/TextMesh Pro/Documentation/TextMesh Pro User Guide 2016.pdf similarity index 100% rename from samples/UnityMonoSample/Assets/TextMesh Pro/Documentation/TextMesh Pro User Guide 2016.pdf rename to samples/CSharpUnityMono/Assets/TextMesh Pro/Documentation/TextMesh Pro User Guide 2016.pdf diff --git a/samples/UnityMonoSample/Assets/TextMesh Pro/Documentation/TextMesh Pro User Guide 2016.pdf.meta b/samples/CSharpUnityMono/Assets/TextMesh Pro/Documentation/TextMesh Pro User Guide 2016.pdf.meta similarity index 100% rename from samples/UnityMonoSample/Assets/TextMesh Pro/Documentation/TextMesh Pro User Guide 2016.pdf.meta rename to samples/CSharpUnityMono/Assets/TextMesh Pro/Documentation/TextMesh Pro User Guide 2016.pdf.meta diff --git a/samples/UnityMonoSample/Assets/TextMesh Pro/Fonts.meta b/samples/CSharpUnityMono/Assets/TextMesh Pro/Fonts.meta similarity index 100% rename from samples/UnityMonoSample/Assets/TextMesh Pro/Fonts.meta rename to samples/CSharpUnityMono/Assets/TextMesh Pro/Fonts.meta diff --git a/samples/UnityMonoSample/Assets/TextMesh Pro/Fonts/LiberationSans - OFL.txt b/samples/CSharpUnityMono/Assets/TextMesh Pro/Fonts/LiberationSans - OFL.txt similarity index 100% rename from samples/UnityMonoSample/Assets/TextMesh Pro/Fonts/LiberationSans - OFL.txt rename to samples/CSharpUnityMono/Assets/TextMesh Pro/Fonts/LiberationSans - OFL.txt diff --git a/samples/UnityMonoSample/Assets/TextMesh Pro/Fonts/LiberationSans - OFL.txt.meta b/samples/CSharpUnityMono/Assets/TextMesh Pro/Fonts/LiberationSans - OFL.txt.meta similarity index 100% rename from samples/UnityMonoSample/Assets/TextMesh Pro/Fonts/LiberationSans - OFL.txt.meta rename to samples/CSharpUnityMono/Assets/TextMesh Pro/Fonts/LiberationSans - OFL.txt.meta diff --git a/samples/UnityMonoSample/Assets/TextMesh Pro/Fonts/LiberationSans.ttf b/samples/CSharpUnityMono/Assets/TextMesh Pro/Fonts/LiberationSans.ttf similarity index 100% rename from samples/UnityMonoSample/Assets/TextMesh Pro/Fonts/LiberationSans.ttf rename to samples/CSharpUnityMono/Assets/TextMesh Pro/Fonts/LiberationSans.ttf diff --git a/samples/UnityMonoSample/Assets/TextMesh Pro/Fonts/LiberationSans.ttf.meta b/samples/CSharpUnityMono/Assets/TextMesh Pro/Fonts/LiberationSans.ttf.meta similarity index 100% rename from samples/UnityMonoSample/Assets/TextMesh Pro/Fonts/LiberationSans.ttf.meta rename to samples/CSharpUnityMono/Assets/TextMesh Pro/Fonts/LiberationSans.ttf.meta diff --git a/samples/UnityMonoSample/Assets/TextMesh Pro/Resources.meta b/samples/CSharpUnityMono/Assets/TextMesh Pro/Resources.meta similarity index 100% rename from samples/UnityMonoSample/Assets/TextMesh Pro/Resources.meta rename to samples/CSharpUnityMono/Assets/TextMesh Pro/Resources.meta diff --git a/samples/UnityMonoSample/Assets/TextMesh Pro/Resources/Fonts & Materials.meta b/samples/CSharpUnityMono/Assets/TextMesh Pro/Resources/Fonts & Materials.meta similarity index 100% rename from samples/UnityMonoSample/Assets/TextMesh Pro/Resources/Fonts & Materials.meta rename to samples/CSharpUnityMono/Assets/TextMesh Pro/Resources/Fonts & Materials.meta diff --git a/samples/UnityMonoSample/Assets/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF - Drop Shadow.mat b/samples/CSharpUnityMono/Assets/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF - Drop Shadow.mat similarity index 100% rename from samples/UnityMonoSample/Assets/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF - Drop Shadow.mat rename to samples/CSharpUnityMono/Assets/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF - Drop Shadow.mat diff --git a/samples/UnityMonoSample/Assets/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF - Drop Shadow.mat.meta b/samples/CSharpUnityMono/Assets/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF - Drop Shadow.mat.meta similarity index 100% rename from samples/UnityMonoSample/Assets/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF - Drop Shadow.mat.meta rename to samples/CSharpUnityMono/Assets/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF - Drop Shadow.mat.meta diff --git a/samples/UnityMonoSample/Assets/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF - Fallback.asset b/samples/CSharpUnityMono/Assets/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF - Fallback.asset similarity index 100% rename from samples/UnityMonoSample/Assets/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF - Fallback.asset rename to samples/CSharpUnityMono/Assets/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF - Fallback.asset diff --git a/samples/UnityMonoSample/Assets/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF - Fallback.asset.meta b/samples/CSharpUnityMono/Assets/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF - Fallback.asset.meta similarity index 100% rename from samples/UnityMonoSample/Assets/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF - Fallback.asset.meta rename to samples/CSharpUnityMono/Assets/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF - Fallback.asset.meta diff --git a/samples/UnityMonoSample/Assets/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF - Outline.mat b/samples/CSharpUnityMono/Assets/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF - Outline.mat similarity index 100% rename from samples/UnityMonoSample/Assets/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF - Outline.mat rename to samples/CSharpUnityMono/Assets/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF - Outline.mat diff --git a/samples/UnityMonoSample/Assets/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF - Outline.mat.meta b/samples/CSharpUnityMono/Assets/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF - Outline.mat.meta similarity index 100% rename from samples/UnityMonoSample/Assets/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF - Outline.mat.meta rename to samples/CSharpUnityMono/Assets/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF - Outline.mat.meta diff --git a/samples/UnityMonoSample/Assets/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF.asset b/samples/CSharpUnityMono/Assets/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF.asset similarity index 100% rename from samples/UnityMonoSample/Assets/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF.asset rename to samples/CSharpUnityMono/Assets/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF.asset diff --git a/samples/UnityMonoSample/Assets/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF.asset.meta b/samples/CSharpUnityMono/Assets/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF.asset.meta similarity index 100% rename from samples/UnityMonoSample/Assets/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF.asset.meta rename to samples/CSharpUnityMono/Assets/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF.asset.meta diff --git a/samples/UnityMonoSample/Assets/TextMesh Pro/Resources/LineBreaking Following Characters.txt b/samples/CSharpUnityMono/Assets/TextMesh Pro/Resources/LineBreaking Following Characters.txt similarity index 100% rename from samples/UnityMonoSample/Assets/TextMesh Pro/Resources/LineBreaking Following Characters.txt rename to samples/CSharpUnityMono/Assets/TextMesh Pro/Resources/LineBreaking Following Characters.txt diff --git a/samples/UnityMonoSample/Assets/TextMesh Pro/Resources/LineBreaking Following Characters.txt.meta b/samples/CSharpUnityMono/Assets/TextMesh Pro/Resources/LineBreaking Following Characters.txt.meta similarity index 100% rename from samples/UnityMonoSample/Assets/TextMesh Pro/Resources/LineBreaking Following Characters.txt.meta rename to samples/CSharpUnityMono/Assets/TextMesh Pro/Resources/LineBreaking Following Characters.txt.meta diff --git a/samples/UnityMonoSample/Assets/TextMesh Pro/Resources/LineBreaking Leading Characters.txt b/samples/CSharpUnityMono/Assets/TextMesh Pro/Resources/LineBreaking Leading Characters.txt similarity index 100% rename from samples/UnityMonoSample/Assets/TextMesh Pro/Resources/LineBreaking Leading Characters.txt rename to samples/CSharpUnityMono/Assets/TextMesh Pro/Resources/LineBreaking Leading Characters.txt diff --git a/samples/UnityMonoSample/Assets/TextMesh Pro/Resources/LineBreaking Leading Characters.txt.meta b/samples/CSharpUnityMono/Assets/TextMesh Pro/Resources/LineBreaking Leading Characters.txt.meta similarity index 100% rename from samples/UnityMonoSample/Assets/TextMesh Pro/Resources/LineBreaking Leading Characters.txt.meta rename to samples/CSharpUnityMono/Assets/TextMesh Pro/Resources/LineBreaking Leading Characters.txt.meta diff --git a/samples/UnityMonoSample/Assets/TextMesh Pro/Resources/Sprite Assets.meta b/samples/CSharpUnityMono/Assets/TextMesh Pro/Resources/Sprite Assets.meta similarity index 100% rename from samples/UnityMonoSample/Assets/TextMesh Pro/Resources/Sprite Assets.meta rename to samples/CSharpUnityMono/Assets/TextMesh Pro/Resources/Sprite Assets.meta diff --git a/samples/UnityMonoSample/Assets/TextMesh Pro/Resources/Sprite Assets/EmojiOne.asset b/samples/CSharpUnityMono/Assets/TextMesh Pro/Resources/Sprite Assets/EmojiOne.asset similarity index 100% rename from samples/UnityMonoSample/Assets/TextMesh Pro/Resources/Sprite Assets/EmojiOne.asset rename to samples/CSharpUnityMono/Assets/TextMesh Pro/Resources/Sprite Assets/EmojiOne.asset diff --git a/samples/UnityMonoSample/Assets/TextMesh Pro/Resources/Sprite Assets/EmojiOne.asset.meta b/samples/CSharpUnityMono/Assets/TextMesh Pro/Resources/Sprite Assets/EmojiOne.asset.meta similarity index 100% rename from samples/UnityMonoSample/Assets/TextMesh Pro/Resources/Sprite Assets/EmojiOne.asset.meta rename to samples/CSharpUnityMono/Assets/TextMesh Pro/Resources/Sprite Assets/EmojiOne.asset.meta diff --git a/samples/UnityMonoSample/Assets/TextMesh Pro/Resources/Style Sheets.meta b/samples/CSharpUnityMono/Assets/TextMesh Pro/Resources/Style Sheets.meta similarity index 100% rename from samples/UnityMonoSample/Assets/TextMesh Pro/Resources/Style Sheets.meta rename to samples/CSharpUnityMono/Assets/TextMesh Pro/Resources/Style Sheets.meta diff --git a/samples/UnityMonoSample/Assets/TextMesh Pro/Resources/Style Sheets/Default Style Sheet.asset b/samples/CSharpUnityMono/Assets/TextMesh Pro/Resources/Style Sheets/Default Style Sheet.asset similarity index 100% rename from samples/UnityMonoSample/Assets/TextMesh Pro/Resources/Style Sheets/Default Style Sheet.asset rename to samples/CSharpUnityMono/Assets/TextMesh Pro/Resources/Style Sheets/Default Style Sheet.asset diff --git a/samples/UnityMonoSample/Assets/TextMesh Pro/Resources/Style Sheets/Default Style Sheet.asset.meta b/samples/CSharpUnityMono/Assets/TextMesh Pro/Resources/Style Sheets/Default Style Sheet.asset.meta similarity index 100% rename from samples/UnityMonoSample/Assets/TextMesh Pro/Resources/Style Sheets/Default Style Sheet.asset.meta rename to samples/CSharpUnityMono/Assets/TextMesh Pro/Resources/Style Sheets/Default Style Sheet.asset.meta diff --git a/samples/UnityMonoSample/Assets/TextMesh Pro/Resources/TMP Settings.asset b/samples/CSharpUnityMono/Assets/TextMesh Pro/Resources/TMP Settings.asset similarity index 100% rename from samples/UnityMonoSample/Assets/TextMesh Pro/Resources/TMP Settings.asset rename to samples/CSharpUnityMono/Assets/TextMesh Pro/Resources/TMP Settings.asset diff --git a/samples/UnityMonoSample/Assets/TextMesh Pro/Resources/TMP Settings.asset.meta b/samples/CSharpUnityMono/Assets/TextMesh Pro/Resources/TMP Settings.asset.meta similarity index 100% rename from samples/UnityMonoSample/Assets/TextMesh Pro/Resources/TMP Settings.asset.meta rename to samples/CSharpUnityMono/Assets/TextMesh Pro/Resources/TMP Settings.asset.meta diff --git a/samples/UnityMonoSample/Assets/TextMesh Pro/Shaders.meta b/samples/CSharpUnityMono/Assets/TextMesh Pro/Shaders.meta similarity index 100% rename from samples/UnityMonoSample/Assets/TextMesh Pro/Shaders.meta rename to samples/CSharpUnityMono/Assets/TextMesh Pro/Shaders.meta diff --git a/samples/UnityMonoSample/Assets/TextMesh Pro/Shaders/TMP_Bitmap-Custom-Atlas.shader b/samples/CSharpUnityMono/Assets/TextMesh Pro/Shaders/TMP_Bitmap-Custom-Atlas.shader similarity index 100% rename from samples/UnityMonoSample/Assets/TextMesh Pro/Shaders/TMP_Bitmap-Custom-Atlas.shader rename to samples/CSharpUnityMono/Assets/TextMesh Pro/Shaders/TMP_Bitmap-Custom-Atlas.shader diff --git a/samples/UnityMonoSample/Assets/TextMesh Pro/Shaders/TMP_Bitmap-Custom-Atlas.shader.meta b/samples/CSharpUnityMono/Assets/TextMesh Pro/Shaders/TMP_Bitmap-Custom-Atlas.shader.meta similarity index 100% rename from samples/UnityMonoSample/Assets/TextMesh Pro/Shaders/TMP_Bitmap-Custom-Atlas.shader.meta rename to samples/CSharpUnityMono/Assets/TextMesh Pro/Shaders/TMP_Bitmap-Custom-Atlas.shader.meta diff --git a/samples/UnityMonoSample/Assets/TextMesh Pro/Shaders/TMP_Bitmap-Mobile.shader b/samples/CSharpUnityMono/Assets/TextMesh Pro/Shaders/TMP_Bitmap-Mobile.shader similarity index 100% rename from samples/UnityMonoSample/Assets/TextMesh Pro/Shaders/TMP_Bitmap-Mobile.shader rename to samples/CSharpUnityMono/Assets/TextMesh Pro/Shaders/TMP_Bitmap-Mobile.shader diff --git a/samples/UnityMonoSample/Assets/TextMesh Pro/Shaders/TMP_Bitmap-Mobile.shader.meta b/samples/CSharpUnityMono/Assets/TextMesh Pro/Shaders/TMP_Bitmap-Mobile.shader.meta similarity index 100% rename from samples/UnityMonoSample/Assets/TextMesh Pro/Shaders/TMP_Bitmap-Mobile.shader.meta rename to samples/CSharpUnityMono/Assets/TextMesh Pro/Shaders/TMP_Bitmap-Mobile.shader.meta diff --git a/samples/UnityMonoSample/Assets/TextMesh Pro/Shaders/TMP_Bitmap.shader b/samples/CSharpUnityMono/Assets/TextMesh Pro/Shaders/TMP_Bitmap.shader similarity index 100% rename from samples/UnityMonoSample/Assets/TextMesh Pro/Shaders/TMP_Bitmap.shader rename to samples/CSharpUnityMono/Assets/TextMesh Pro/Shaders/TMP_Bitmap.shader diff --git a/samples/UnityMonoSample/Assets/TextMesh Pro/Shaders/TMP_Bitmap.shader.meta b/samples/CSharpUnityMono/Assets/TextMesh Pro/Shaders/TMP_Bitmap.shader.meta similarity index 100% rename from samples/UnityMonoSample/Assets/TextMesh Pro/Shaders/TMP_Bitmap.shader.meta rename to samples/CSharpUnityMono/Assets/TextMesh Pro/Shaders/TMP_Bitmap.shader.meta diff --git a/samples/UnityMonoSample/Assets/TextMesh Pro/Shaders/TMP_SDF Overlay.shader b/samples/CSharpUnityMono/Assets/TextMesh Pro/Shaders/TMP_SDF Overlay.shader similarity index 100% rename from samples/UnityMonoSample/Assets/TextMesh Pro/Shaders/TMP_SDF Overlay.shader rename to samples/CSharpUnityMono/Assets/TextMesh Pro/Shaders/TMP_SDF Overlay.shader diff --git a/samples/UnityMonoSample/Assets/TextMesh Pro/Shaders/TMP_SDF Overlay.shader.meta b/samples/CSharpUnityMono/Assets/TextMesh Pro/Shaders/TMP_SDF Overlay.shader.meta similarity index 100% rename from samples/UnityMonoSample/Assets/TextMesh Pro/Shaders/TMP_SDF Overlay.shader.meta rename to samples/CSharpUnityMono/Assets/TextMesh Pro/Shaders/TMP_SDF Overlay.shader.meta diff --git a/samples/UnityMonoSample/Assets/TextMesh Pro/Shaders/TMP_SDF SSD.shader b/samples/CSharpUnityMono/Assets/TextMesh Pro/Shaders/TMP_SDF SSD.shader similarity index 100% rename from samples/UnityMonoSample/Assets/TextMesh Pro/Shaders/TMP_SDF SSD.shader rename to samples/CSharpUnityMono/Assets/TextMesh Pro/Shaders/TMP_SDF SSD.shader diff --git a/samples/UnityMonoSample/Assets/TextMesh Pro/Shaders/TMP_SDF SSD.shader.meta b/samples/CSharpUnityMono/Assets/TextMesh Pro/Shaders/TMP_SDF SSD.shader.meta similarity index 100% rename from samples/UnityMonoSample/Assets/TextMesh Pro/Shaders/TMP_SDF SSD.shader.meta rename to samples/CSharpUnityMono/Assets/TextMesh Pro/Shaders/TMP_SDF SSD.shader.meta diff --git a/samples/UnityMonoSample/Assets/TextMesh Pro/Shaders/TMP_SDF-Mobile Masking.shader b/samples/CSharpUnityMono/Assets/TextMesh Pro/Shaders/TMP_SDF-Mobile Masking.shader similarity index 100% rename from samples/UnityMonoSample/Assets/TextMesh Pro/Shaders/TMP_SDF-Mobile Masking.shader rename to samples/CSharpUnityMono/Assets/TextMesh Pro/Shaders/TMP_SDF-Mobile Masking.shader diff --git a/samples/UnityMonoSample/Assets/TextMesh Pro/Shaders/TMP_SDF-Mobile Masking.shader.meta b/samples/CSharpUnityMono/Assets/TextMesh Pro/Shaders/TMP_SDF-Mobile Masking.shader.meta similarity index 100% rename from samples/UnityMonoSample/Assets/TextMesh Pro/Shaders/TMP_SDF-Mobile Masking.shader.meta rename to samples/CSharpUnityMono/Assets/TextMesh Pro/Shaders/TMP_SDF-Mobile Masking.shader.meta diff --git a/samples/UnityMonoSample/Assets/TextMesh Pro/Shaders/TMP_SDF-Mobile Overlay.shader b/samples/CSharpUnityMono/Assets/TextMesh Pro/Shaders/TMP_SDF-Mobile Overlay.shader similarity index 100% rename from samples/UnityMonoSample/Assets/TextMesh Pro/Shaders/TMP_SDF-Mobile Overlay.shader rename to samples/CSharpUnityMono/Assets/TextMesh Pro/Shaders/TMP_SDF-Mobile Overlay.shader diff --git a/samples/UnityMonoSample/Assets/TextMesh Pro/Shaders/TMP_SDF-Mobile Overlay.shader.meta b/samples/CSharpUnityMono/Assets/TextMesh Pro/Shaders/TMP_SDF-Mobile Overlay.shader.meta similarity index 100% rename from samples/UnityMonoSample/Assets/TextMesh Pro/Shaders/TMP_SDF-Mobile Overlay.shader.meta rename to samples/CSharpUnityMono/Assets/TextMesh Pro/Shaders/TMP_SDF-Mobile Overlay.shader.meta diff --git a/samples/UnityMonoSample/Assets/TextMesh Pro/Shaders/TMP_SDF-Mobile SSD.shader b/samples/CSharpUnityMono/Assets/TextMesh Pro/Shaders/TMP_SDF-Mobile SSD.shader similarity index 100% rename from samples/UnityMonoSample/Assets/TextMesh Pro/Shaders/TMP_SDF-Mobile SSD.shader rename to samples/CSharpUnityMono/Assets/TextMesh Pro/Shaders/TMP_SDF-Mobile SSD.shader diff --git a/samples/UnityMonoSample/Assets/TextMesh Pro/Shaders/TMP_SDF-Mobile SSD.shader.meta b/samples/CSharpUnityMono/Assets/TextMesh Pro/Shaders/TMP_SDF-Mobile SSD.shader.meta similarity index 100% rename from samples/UnityMonoSample/Assets/TextMesh Pro/Shaders/TMP_SDF-Mobile SSD.shader.meta rename to samples/CSharpUnityMono/Assets/TextMesh Pro/Shaders/TMP_SDF-Mobile SSD.shader.meta diff --git a/samples/UnityMonoSample/Assets/TextMesh Pro/Shaders/TMP_SDF-Mobile.shader b/samples/CSharpUnityMono/Assets/TextMesh Pro/Shaders/TMP_SDF-Mobile.shader similarity index 100% rename from samples/UnityMonoSample/Assets/TextMesh Pro/Shaders/TMP_SDF-Mobile.shader rename to samples/CSharpUnityMono/Assets/TextMesh Pro/Shaders/TMP_SDF-Mobile.shader diff --git a/samples/UnityMonoSample/Assets/TextMesh Pro/Shaders/TMP_SDF-Mobile.shader.meta b/samples/CSharpUnityMono/Assets/TextMesh Pro/Shaders/TMP_SDF-Mobile.shader.meta similarity index 100% rename from samples/UnityMonoSample/Assets/TextMesh Pro/Shaders/TMP_SDF-Mobile.shader.meta rename to samples/CSharpUnityMono/Assets/TextMesh Pro/Shaders/TMP_SDF-Mobile.shader.meta diff --git a/samples/UnityMonoSample/Assets/TextMesh Pro/Shaders/TMP_SDF-Surface-Mobile.shader b/samples/CSharpUnityMono/Assets/TextMesh Pro/Shaders/TMP_SDF-Surface-Mobile.shader similarity index 100% rename from samples/UnityMonoSample/Assets/TextMesh Pro/Shaders/TMP_SDF-Surface-Mobile.shader rename to samples/CSharpUnityMono/Assets/TextMesh Pro/Shaders/TMP_SDF-Surface-Mobile.shader diff --git a/samples/UnityMonoSample/Assets/TextMesh Pro/Shaders/TMP_SDF-Surface-Mobile.shader.meta b/samples/CSharpUnityMono/Assets/TextMesh Pro/Shaders/TMP_SDF-Surface-Mobile.shader.meta similarity index 100% rename from samples/UnityMonoSample/Assets/TextMesh Pro/Shaders/TMP_SDF-Surface-Mobile.shader.meta rename to samples/CSharpUnityMono/Assets/TextMesh Pro/Shaders/TMP_SDF-Surface-Mobile.shader.meta diff --git a/samples/UnityMonoSample/Assets/TextMesh Pro/Shaders/TMP_SDF-Surface.shader b/samples/CSharpUnityMono/Assets/TextMesh Pro/Shaders/TMP_SDF-Surface.shader similarity index 100% rename from samples/UnityMonoSample/Assets/TextMesh Pro/Shaders/TMP_SDF-Surface.shader rename to samples/CSharpUnityMono/Assets/TextMesh Pro/Shaders/TMP_SDF-Surface.shader diff --git a/samples/UnityMonoSample/Assets/TextMesh Pro/Shaders/TMP_SDF-Surface.shader.meta b/samples/CSharpUnityMono/Assets/TextMesh Pro/Shaders/TMP_SDF-Surface.shader.meta similarity index 100% rename from samples/UnityMonoSample/Assets/TextMesh Pro/Shaders/TMP_SDF-Surface.shader.meta rename to samples/CSharpUnityMono/Assets/TextMesh Pro/Shaders/TMP_SDF-Surface.shader.meta diff --git a/samples/UnityMonoSample/Assets/TextMesh Pro/Shaders/TMP_SDF.shader b/samples/CSharpUnityMono/Assets/TextMesh Pro/Shaders/TMP_SDF.shader similarity index 100% rename from samples/UnityMonoSample/Assets/TextMesh Pro/Shaders/TMP_SDF.shader rename to samples/CSharpUnityMono/Assets/TextMesh Pro/Shaders/TMP_SDF.shader diff --git a/samples/UnityMonoSample/Assets/TextMesh Pro/Shaders/TMP_SDF.shader.meta b/samples/CSharpUnityMono/Assets/TextMesh Pro/Shaders/TMP_SDF.shader.meta similarity index 100% rename from samples/UnityMonoSample/Assets/TextMesh Pro/Shaders/TMP_SDF.shader.meta rename to samples/CSharpUnityMono/Assets/TextMesh Pro/Shaders/TMP_SDF.shader.meta diff --git a/samples/UnityMonoSample/Assets/TextMesh Pro/Shaders/TMP_Sprite.shader b/samples/CSharpUnityMono/Assets/TextMesh Pro/Shaders/TMP_Sprite.shader similarity index 100% rename from samples/UnityMonoSample/Assets/TextMesh Pro/Shaders/TMP_Sprite.shader rename to samples/CSharpUnityMono/Assets/TextMesh Pro/Shaders/TMP_Sprite.shader diff --git a/samples/UnityMonoSample/Assets/TextMesh Pro/Shaders/TMP_Sprite.shader.meta b/samples/CSharpUnityMono/Assets/TextMesh Pro/Shaders/TMP_Sprite.shader.meta similarity index 100% rename from samples/UnityMonoSample/Assets/TextMesh Pro/Shaders/TMP_Sprite.shader.meta rename to samples/CSharpUnityMono/Assets/TextMesh Pro/Shaders/TMP_Sprite.shader.meta diff --git a/samples/UnityMonoSample/Assets/TextMesh Pro/Shaders/TMPro.cginc b/samples/CSharpUnityMono/Assets/TextMesh Pro/Shaders/TMPro.cginc similarity index 100% rename from samples/UnityMonoSample/Assets/TextMesh Pro/Shaders/TMPro.cginc rename to samples/CSharpUnityMono/Assets/TextMesh Pro/Shaders/TMPro.cginc diff --git a/samples/UnityMonoSample/Assets/TextMesh Pro/Shaders/TMPro.cginc.meta b/samples/CSharpUnityMono/Assets/TextMesh Pro/Shaders/TMPro.cginc.meta similarity index 100% rename from samples/UnityMonoSample/Assets/TextMesh Pro/Shaders/TMPro.cginc.meta rename to samples/CSharpUnityMono/Assets/TextMesh Pro/Shaders/TMPro.cginc.meta diff --git a/samples/UnityMonoSample/Assets/TextMesh Pro/Shaders/TMPro_Mobile.cginc b/samples/CSharpUnityMono/Assets/TextMesh Pro/Shaders/TMPro_Mobile.cginc similarity index 100% rename from samples/UnityMonoSample/Assets/TextMesh Pro/Shaders/TMPro_Mobile.cginc rename to samples/CSharpUnityMono/Assets/TextMesh Pro/Shaders/TMPro_Mobile.cginc diff --git a/samples/UnityMonoSample/Assets/TextMesh Pro/Shaders/TMPro_Mobile.cginc.meta b/samples/CSharpUnityMono/Assets/TextMesh Pro/Shaders/TMPro_Mobile.cginc.meta similarity index 100% rename from samples/UnityMonoSample/Assets/TextMesh Pro/Shaders/TMPro_Mobile.cginc.meta rename to samples/CSharpUnityMono/Assets/TextMesh Pro/Shaders/TMPro_Mobile.cginc.meta diff --git a/samples/UnityMonoSample/Assets/TextMesh Pro/Shaders/TMPro_Properties.cginc b/samples/CSharpUnityMono/Assets/TextMesh Pro/Shaders/TMPro_Properties.cginc similarity index 100% rename from samples/UnityMonoSample/Assets/TextMesh Pro/Shaders/TMPro_Properties.cginc rename to samples/CSharpUnityMono/Assets/TextMesh Pro/Shaders/TMPro_Properties.cginc diff --git a/samples/UnityMonoSample/Assets/TextMesh Pro/Shaders/TMPro_Properties.cginc.meta b/samples/CSharpUnityMono/Assets/TextMesh Pro/Shaders/TMPro_Properties.cginc.meta similarity index 100% rename from samples/UnityMonoSample/Assets/TextMesh Pro/Shaders/TMPro_Properties.cginc.meta rename to samples/CSharpUnityMono/Assets/TextMesh Pro/Shaders/TMPro_Properties.cginc.meta diff --git a/samples/UnityMonoSample/Assets/TextMesh Pro/Shaders/TMPro_Surface.cginc b/samples/CSharpUnityMono/Assets/TextMesh Pro/Shaders/TMPro_Surface.cginc similarity index 100% rename from samples/UnityMonoSample/Assets/TextMesh Pro/Shaders/TMPro_Surface.cginc rename to samples/CSharpUnityMono/Assets/TextMesh Pro/Shaders/TMPro_Surface.cginc diff --git a/samples/UnityMonoSample/Assets/TextMesh Pro/Shaders/TMPro_Surface.cginc.meta b/samples/CSharpUnityMono/Assets/TextMesh Pro/Shaders/TMPro_Surface.cginc.meta similarity index 100% rename from samples/UnityMonoSample/Assets/TextMesh Pro/Shaders/TMPro_Surface.cginc.meta rename to samples/CSharpUnityMono/Assets/TextMesh Pro/Shaders/TMPro_Surface.cginc.meta diff --git a/samples/UnityMonoSample/Assets/TextMesh Pro/Sprites.meta b/samples/CSharpUnityMono/Assets/TextMesh Pro/Sprites.meta similarity index 100% rename from samples/UnityMonoSample/Assets/TextMesh Pro/Sprites.meta rename to samples/CSharpUnityMono/Assets/TextMesh Pro/Sprites.meta diff --git a/samples/UnityMonoSample/Assets/TextMesh Pro/Sprites/EmojiOne Attribution.txt b/samples/CSharpUnityMono/Assets/TextMesh Pro/Sprites/EmojiOne Attribution.txt similarity index 100% rename from samples/UnityMonoSample/Assets/TextMesh Pro/Sprites/EmojiOne Attribution.txt rename to samples/CSharpUnityMono/Assets/TextMesh Pro/Sprites/EmojiOne Attribution.txt diff --git a/samples/UnityMonoSample/Assets/TextMesh Pro/Sprites/EmojiOne Attribution.txt.meta b/samples/CSharpUnityMono/Assets/TextMesh Pro/Sprites/EmojiOne Attribution.txt.meta similarity index 100% rename from samples/UnityMonoSample/Assets/TextMesh Pro/Sprites/EmojiOne Attribution.txt.meta rename to samples/CSharpUnityMono/Assets/TextMesh Pro/Sprites/EmojiOne Attribution.txt.meta diff --git a/samples/UnityMonoSample/Assets/TextMesh Pro/Sprites/EmojiOne.json b/samples/CSharpUnityMono/Assets/TextMesh Pro/Sprites/EmojiOne.json similarity index 100% rename from samples/UnityMonoSample/Assets/TextMesh Pro/Sprites/EmojiOne.json rename to samples/CSharpUnityMono/Assets/TextMesh Pro/Sprites/EmojiOne.json diff --git a/samples/UnityMonoSample/Assets/TextMesh Pro/Sprites/EmojiOne.json.meta b/samples/CSharpUnityMono/Assets/TextMesh Pro/Sprites/EmojiOne.json.meta similarity index 100% rename from samples/UnityMonoSample/Assets/TextMesh Pro/Sprites/EmojiOne.json.meta rename to samples/CSharpUnityMono/Assets/TextMesh Pro/Sprites/EmojiOne.json.meta diff --git a/samples/UnityMonoSample/Assets/TextMesh Pro/Sprites/EmojiOne.png b/samples/CSharpUnityMono/Assets/TextMesh Pro/Sprites/EmojiOne.png similarity index 100% rename from samples/UnityMonoSample/Assets/TextMesh Pro/Sprites/EmojiOne.png rename to samples/CSharpUnityMono/Assets/TextMesh Pro/Sprites/EmojiOne.png diff --git a/samples/UnityMonoSample/Assets/TextMesh Pro/Sprites/EmojiOne.png.meta b/samples/CSharpUnityMono/Assets/TextMesh Pro/Sprites/EmojiOne.png.meta similarity index 100% rename from samples/UnityMonoSample/Assets/TextMesh Pro/Sprites/EmojiOne.png.meta rename to samples/CSharpUnityMono/Assets/TextMesh Pro/Sprites/EmojiOne.png.meta diff --git a/samples/UnityMonoSample/Assets/packages.config b/samples/CSharpUnityMono/Assets/packages.config similarity index 100% rename from samples/UnityMonoSample/Assets/packages.config rename to samples/CSharpUnityMono/Assets/packages.config diff --git a/samples/UnityMonoSample/Assets/packages.config.meta b/samples/CSharpUnityMono/Assets/packages.config.meta similarity index 100% rename from samples/UnityMonoSample/Assets/packages.config.meta rename to samples/CSharpUnityMono/Assets/packages.config.meta diff --git a/samples/UnityMonoSample/BuildVisualStudioSolution/UnityCommon.props b/samples/CSharpUnityMono/BuildVisualStudioSolution/UnityCommon.props similarity index 100% rename from samples/UnityMonoSample/BuildVisualStudioSolution/UnityCommon.props rename to samples/CSharpUnityMono/BuildVisualStudioSolution/UnityCommon.props diff --git a/samples/UnityMonoSample/BuildVisualStudioSolution/UnityMonoSample/Main.cpp b/samples/CSharpUnityMono/BuildVisualStudioSolution/UnityMonoSample/Main.cpp similarity index 100% rename from samples/UnityMonoSample/BuildVisualStudioSolution/UnityMonoSample/Main.cpp rename to samples/CSharpUnityMono/BuildVisualStudioSolution/UnityMonoSample/Main.cpp diff --git a/samples/UnityMonoSample/BuildVisualStudioSolution/UnityMonoSample/PrecompiledHeader.cpp b/samples/CSharpUnityMono/BuildVisualStudioSolution/UnityMonoSample/PrecompiledHeader.cpp similarity index 100% rename from samples/UnityMonoSample/BuildVisualStudioSolution/UnityMonoSample/PrecompiledHeader.cpp rename to samples/CSharpUnityMono/BuildVisualStudioSolution/UnityMonoSample/PrecompiledHeader.cpp diff --git a/samples/UnityMonoSample/BuildVisualStudioSolution/UnityMonoSample/PrecompiledHeader.h b/samples/CSharpUnityMono/BuildVisualStudioSolution/UnityMonoSample/PrecompiledHeader.h similarity index 100% rename from samples/UnityMonoSample/BuildVisualStudioSolution/UnityMonoSample/PrecompiledHeader.h rename to samples/CSharpUnityMono/BuildVisualStudioSolution/UnityMonoSample/PrecompiledHeader.h diff --git a/samples/UnityMonoSample/BuildVisualStudioSolution/UnityMonoSample/UnityConfiguration.gen.cpp b/samples/CSharpUnityMono/BuildVisualStudioSolution/UnityMonoSample/UnityConfiguration.gen.cpp similarity index 100% rename from samples/UnityMonoSample/BuildVisualStudioSolution/UnityMonoSample/UnityConfiguration.gen.cpp rename to samples/CSharpUnityMono/BuildVisualStudioSolution/UnityMonoSample/UnityConfiguration.gen.cpp diff --git a/samples/UnityMonoSample/BuildVisualStudioSolution/UnityMonoSample/UnityData.vcxitems b/samples/CSharpUnityMono/BuildVisualStudioSolution/UnityMonoSample/UnityData.vcxitems similarity index 100% rename from samples/UnityMonoSample/BuildVisualStudioSolution/UnityMonoSample/UnityData.vcxitems rename to samples/CSharpUnityMono/BuildVisualStudioSolution/UnityMonoSample/UnityData.vcxitems diff --git a/samples/UnityMonoSample/BuildVisualStudioSolution/UnityMonoSample/UnityMonoSample.vcxproj b/samples/CSharpUnityMono/BuildVisualStudioSolution/UnityMonoSample/UnityMonoSample.vcxproj similarity index 100% rename from samples/UnityMonoSample/BuildVisualStudioSolution/UnityMonoSample/UnityMonoSample.vcxproj rename to samples/CSharpUnityMono/BuildVisualStudioSolution/UnityMonoSample/UnityMonoSample.vcxproj diff --git a/samples/UnityMonoSample/BuildVisualStudioSolution/UnityMonoSample/WindowsPlayer.ico b/samples/CSharpUnityMono/BuildVisualStudioSolution/UnityMonoSample/WindowsPlayer.ico similarity index 100% rename from samples/UnityMonoSample/BuildVisualStudioSolution/UnityMonoSample/WindowsPlayer.ico rename to samples/CSharpUnityMono/BuildVisualStudioSolution/UnityMonoSample/WindowsPlayer.ico diff --git a/samples/UnityMonoSample/BuildVisualStudioSolution/UnityMonoSample/WindowsPlayer.manifest b/samples/CSharpUnityMono/BuildVisualStudioSolution/UnityMonoSample/WindowsPlayer.manifest similarity index 100% rename from samples/UnityMonoSample/BuildVisualStudioSolution/UnityMonoSample/WindowsPlayer.manifest rename to samples/CSharpUnityMono/BuildVisualStudioSolution/UnityMonoSample/WindowsPlayer.manifest diff --git a/samples/UnityMonoSample/BuildVisualStudioSolution/UnityMonoSample/WindowsPlayer.rc b/samples/CSharpUnityMono/BuildVisualStudioSolution/UnityMonoSample/WindowsPlayer.rc similarity index 100% rename from samples/UnityMonoSample/BuildVisualStudioSolution/UnityMonoSample/WindowsPlayer.rc rename to samples/CSharpUnityMono/BuildVisualStudioSolution/UnityMonoSample/WindowsPlayer.rc diff --git a/samples/UnityMonoSample/BuildVisualStudioSolution/UnityMonoSample/WindowsPlayerVersion.rc b/samples/CSharpUnityMono/BuildVisualStudioSolution/UnityMonoSample/WindowsPlayerVersion.rc similarity index 100% rename from samples/UnityMonoSample/BuildVisualStudioSolution/UnityMonoSample/WindowsPlayerVersion.rc rename to samples/CSharpUnityMono/BuildVisualStudioSolution/UnityMonoSample/WindowsPlayerVersion.rc diff --git a/samples/UnityMonoSample/BuildVisualStudioSolution/UnityMonoSample/resource.h b/samples/CSharpUnityMono/BuildVisualStudioSolution/UnityMonoSample/resource.h similarity index 100% rename from samples/UnityMonoSample/BuildVisualStudioSolution/UnityMonoSample/resource.h rename to samples/CSharpUnityMono/BuildVisualStudioSolution/UnityMonoSample/resource.h diff --git a/samples/UnityMonoSample/BuildVisualStudioSolution/UnityPlayerStub/Exports.cpp b/samples/CSharpUnityMono/BuildVisualStudioSolution/UnityPlayerStub/Exports.cpp similarity index 100% rename from samples/UnityMonoSample/BuildVisualStudioSolution/UnityPlayerStub/Exports.cpp rename to samples/CSharpUnityMono/BuildVisualStudioSolution/UnityPlayerStub/Exports.cpp diff --git a/samples/UnityMonoSample/BuildVisualStudioSolution/UnityPlayerStub/Exports.h b/samples/CSharpUnityMono/BuildVisualStudioSolution/UnityPlayerStub/Exports.h similarity index 100% rename from samples/UnityMonoSample/BuildVisualStudioSolution/UnityPlayerStub/Exports.h rename to samples/CSharpUnityMono/BuildVisualStudioSolution/UnityPlayerStub/Exports.h diff --git a/samples/UnityMonoSample/BuildVisualStudioSolution/UnityPlayerStub/UnityPlayerStub.vcxproj b/samples/CSharpUnityMono/BuildVisualStudioSolution/UnityPlayerStub/UnityPlayerStub.vcxproj similarity index 100% rename from samples/UnityMonoSample/BuildVisualStudioSolution/UnityPlayerStub/UnityPlayerStub.vcxproj rename to samples/CSharpUnityMono/BuildVisualStudioSolution/UnityPlayerStub/UnityPlayerStub.vcxproj diff --git a/samples/UnityMonoSample/BuildVisualStudioSolution/Velopack.cpp b/samples/CSharpUnityMono/BuildVisualStudioSolution/Velopack.cpp similarity index 100% rename from samples/UnityMonoSample/BuildVisualStudioSolution/Velopack.cpp rename to samples/CSharpUnityMono/BuildVisualStudioSolution/Velopack.cpp diff --git a/samples/UnityMonoSample/BuildVisualStudioSolution/Velopack.hpp b/samples/CSharpUnityMono/BuildVisualStudioSolution/Velopack.hpp similarity index 100% rename from samples/UnityMonoSample/BuildVisualStudioSolution/Velopack.hpp rename to samples/CSharpUnityMono/BuildVisualStudioSolution/Velopack.hpp diff --git a/samples/UnityMonoSample/ProjectSettings/AudioManager.asset b/samples/CSharpUnityMono/ProjectSettings/AudioManager.asset similarity index 100% rename from samples/UnityMonoSample/ProjectSettings/AudioManager.asset rename to samples/CSharpUnityMono/ProjectSettings/AudioManager.asset diff --git a/samples/UnityMonoSample/ProjectSettings/ClusterInputManager.asset b/samples/CSharpUnityMono/ProjectSettings/ClusterInputManager.asset similarity index 100% rename from samples/UnityMonoSample/ProjectSettings/ClusterInputManager.asset rename to samples/CSharpUnityMono/ProjectSettings/ClusterInputManager.asset diff --git a/samples/UnityMonoSample/ProjectSettings/DynamicsManager.asset b/samples/CSharpUnityMono/ProjectSettings/DynamicsManager.asset similarity index 100% rename from samples/UnityMonoSample/ProjectSettings/DynamicsManager.asset rename to samples/CSharpUnityMono/ProjectSettings/DynamicsManager.asset diff --git a/samples/UnityMonoSample/ProjectSettings/EditorBuildSettings.asset b/samples/CSharpUnityMono/ProjectSettings/EditorBuildSettings.asset similarity index 100% rename from samples/UnityMonoSample/ProjectSettings/EditorBuildSettings.asset rename to samples/CSharpUnityMono/ProjectSettings/EditorBuildSettings.asset diff --git a/samples/UnityMonoSample/ProjectSettings/EditorSettings.asset b/samples/CSharpUnityMono/ProjectSettings/EditorSettings.asset similarity index 100% rename from samples/UnityMonoSample/ProjectSettings/EditorSettings.asset rename to samples/CSharpUnityMono/ProjectSettings/EditorSettings.asset diff --git a/samples/UnityMonoSample/ProjectSettings/GraphicsSettings.asset b/samples/CSharpUnityMono/ProjectSettings/GraphicsSettings.asset similarity index 100% rename from samples/UnityMonoSample/ProjectSettings/GraphicsSettings.asset rename to samples/CSharpUnityMono/ProjectSettings/GraphicsSettings.asset diff --git a/samples/UnityMonoSample/ProjectSettings/InputManager.asset b/samples/CSharpUnityMono/ProjectSettings/InputManager.asset similarity index 100% rename from samples/UnityMonoSample/ProjectSettings/InputManager.asset rename to samples/CSharpUnityMono/ProjectSettings/InputManager.asset diff --git a/samples/UnityMonoSample/ProjectSettings/MemorySettings.asset b/samples/CSharpUnityMono/ProjectSettings/MemorySettings.asset similarity index 100% rename from samples/UnityMonoSample/ProjectSettings/MemorySettings.asset rename to samples/CSharpUnityMono/ProjectSettings/MemorySettings.asset diff --git a/samples/UnityMonoSample/ProjectSettings/NavMeshAreas.asset b/samples/CSharpUnityMono/ProjectSettings/NavMeshAreas.asset similarity index 100% rename from samples/UnityMonoSample/ProjectSettings/NavMeshAreas.asset rename to samples/CSharpUnityMono/ProjectSettings/NavMeshAreas.asset diff --git a/samples/UnityMonoSample/ProjectSettings/PackageManagerSettings.asset b/samples/CSharpUnityMono/ProjectSettings/PackageManagerSettings.asset similarity index 100% rename from samples/UnityMonoSample/ProjectSettings/PackageManagerSettings.asset rename to samples/CSharpUnityMono/ProjectSettings/PackageManagerSettings.asset diff --git a/samples/UnityMonoSample/ProjectSettings/Physics2DSettings.asset b/samples/CSharpUnityMono/ProjectSettings/Physics2DSettings.asset similarity index 100% rename from samples/UnityMonoSample/ProjectSettings/Physics2DSettings.asset rename to samples/CSharpUnityMono/ProjectSettings/Physics2DSettings.asset diff --git a/samples/UnityMonoSample/ProjectSettings/PresetManager.asset b/samples/CSharpUnityMono/ProjectSettings/PresetManager.asset similarity index 100% rename from samples/UnityMonoSample/ProjectSettings/PresetManager.asset rename to samples/CSharpUnityMono/ProjectSettings/PresetManager.asset diff --git a/samples/UnityMonoSample/ProjectSettings/ProjectSettings.asset b/samples/CSharpUnityMono/ProjectSettings/ProjectSettings.asset similarity index 100% rename from samples/UnityMonoSample/ProjectSettings/ProjectSettings.asset rename to samples/CSharpUnityMono/ProjectSettings/ProjectSettings.asset diff --git a/samples/UnityMonoSample/ProjectSettings/ProjectVersion.txt b/samples/CSharpUnityMono/ProjectSettings/ProjectVersion.txt similarity index 100% rename from samples/UnityMonoSample/ProjectSettings/ProjectVersion.txt rename to samples/CSharpUnityMono/ProjectSettings/ProjectVersion.txt diff --git a/samples/UnityMonoSample/ProjectSettings/QualitySettings.asset b/samples/CSharpUnityMono/ProjectSettings/QualitySettings.asset similarity index 100% rename from samples/UnityMonoSample/ProjectSettings/QualitySettings.asset rename to samples/CSharpUnityMono/ProjectSettings/QualitySettings.asset diff --git a/samples/UnityMonoSample/ProjectSettings/SceneTemplateSettings.json b/samples/CSharpUnityMono/ProjectSettings/SceneTemplateSettings.json similarity index 100% rename from samples/UnityMonoSample/ProjectSettings/SceneTemplateSettings.json rename to samples/CSharpUnityMono/ProjectSettings/SceneTemplateSettings.json diff --git a/samples/UnityMonoSample/ProjectSettings/TagManager.asset b/samples/CSharpUnityMono/ProjectSettings/TagManager.asset similarity index 100% rename from samples/UnityMonoSample/ProjectSettings/TagManager.asset rename to samples/CSharpUnityMono/ProjectSettings/TagManager.asset diff --git a/samples/UnityMonoSample/ProjectSettings/TimeManager.asset b/samples/CSharpUnityMono/ProjectSettings/TimeManager.asset similarity index 100% rename from samples/UnityMonoSample/ProjectSettings/TimeManager.asset rename to samples/CSharpUnityMono/ProjectSettings/TimeManager.asset diff --git a/samples/UnityMonoSample/ProjectSettings/UnityConnectSettings.asset b/samples/CSharpUnityMono/ProjectSettings/UnityConnectSettings.asset similarity index 100% rename from samples/UnityMonoSample/ProjectSettings/UnityConnectSettings.asset rename to samples/CSharpUnityMono/ProjectSettings/UnityConnectSettings.asset diff --git a/samples/UnityMonoSample/ProjectSettings/VFXManager.asset b/samples/CSharpUnityMono/ProjectSettings/VFXManager.asset similarity index 100% rename from samples/UnityMonoSample/ProjectSettings/VFXManager.asset rename to samples/CSharpUnityMono/ProjectSettings/VFXManager.asset diff --git a/samples/UnityMonoSample/ProjectSettings/VersionControlSettings.asset b/samples/CSharpUnityMono/ProjectSettings/VersionControlSettings.asset similarity index 100% rename from samples/UnityMonoSample/ProjectSettings/VersionControlSettings.asset rename to samples/CSharpUnityMono/ProjectSettings/VersionControlSettings.asset diff --git a/samples/UnityMonoSample/ProjectSettings/XRSettings.asset b/samples/CSharpUnityMono/ProjectSettings/XRSettings.asset similarity index 100% rename from samples/UnityMonoSample/ProjectSettings/XRSettings.asset rename to samples/CSharpUnityMono/ProjectSettings/XRSettings.asset diff --git a/samples/UnityMonoSample/ProjectSettings/boot.config b/samples/CSharpUnityMono/ProjectSettings/boot.config similarity index 100% rename from samples/UnityMonoSample/ProjectSettings/boot.config rename to samples/CSharpUnityMono/ProjectSettings/boot.config diff --git a/samples/UnityMonoSample/README.md b/samples/CSharpUnityMono/README.md similarity index 100% rename from samples/UnityMonoSample/README.md rename to samples/CSharpUnityMono/README.md diff --git a/samples/UnityMonoSample/package-lock.json b/samples/CSharpUnityMono/package-lock.json similarity index 100% rename from samples/UnityMonoSample/package-lock.json rename to samples/CSharpUnityMono/package-lock.json diff --git a/samples/UnityMonoSample/package.json b/samples/CSharpUnityMono/package.json similarity index 100% rename from samples/UnityMonoSample/package.json rename to samples/CSharpUnityMono/package.json diff --git a/samples/UnoSample/.editorconfig b/samples/CSharpUno/.editorconfig similarity index 100% rename from samples/UnoSample/.editorconfig rename to samples/CSharpUno/.editorconfig diff --git a/samples/UnoSample/.gitignore b/samples/CSharpUno/.gitignore similarity index 100% rename from samples/UnoSample/.gitignore rename to samples/CSharpUno/.gitignore diff --git a/samples/UnoSample/.vscode/extensions.json b/samples/CSharpUno/.vscode/extensions.json similarity index 100% rename from samples/UnoSample/.vscode/extensions.json rename to samples/CSharpUno/.vscode/extensions.json diff --git a/samples/UnoSample/.vscode/launch.json b/samples/CSharpUno/.vscode/launch.json similarity index 100% rename from samples/UnoSample/.vscode/launch.json rename to samples/CSharpUno/.vscode/launch.json diff --git a/samples/UnoSample/.vscode/settings.json b/samples/CSharpUno/.vscode/settings.json similarity index 100% rename from samples/UnoSample/.vscode/settings.json rename to samples/CSharpUno/.vscode/settings.json diff --git a/samples/UnoSample/.vscode/tasks.json b/samples/CSharpUno/.vscode/tasks.json similarity index 100% rename from samples/UnoSample/.vscode/tasks.json rename to samples/CSharpUno/.vscode/tasks.json diff --git a/samples/UnoSample/.vsconfig b/samples/CSharpUno/.vsconfig similarity index 100% rename from samples/UnoSample/.vsconfig rename to samples/CSharpUno/.vsconfig diff --git a/samples/UnoSample/Directory.Build.props b/samples/CSharpUno/Directory.Build.props similarity index 100% rename from samples/UnoSample/Directory.Build.props rename to samples/CSharpUno/Directory.Build.props diff --git a/samples/UnoSample/Directory.Build.targets b/samples/CSharpUno/Directory.Build.targets similarity index 100% rename from samples/UnoSample/Directory.Build.targets rename to samples/CSharpUno/Directory.Build.targets diff --git a/samples/UnoSample/Directory.Packages.props b/samples/CSharpUno/Directory.Packages.props similarity index 100% rename from samples/UnoSample/Directory.Packages.props rename to samples/CSharpUno/Directory.Packages.props diff --git a/samples/UnoSample/README.md b/samples/CSharpUno/README.md similarity index 100% rename from samples/UnoSample/README.md rename to samples/CSharpUno/README.md diff --git a/samples/UnoSample/UnoSample.sln b/samples/CSharpUno/UnoSample.sln similarity index 100% rename from samples/UnoSample/UnoSample.sln rename to samples/CSharpUno/UnoSample.sln diff --git a/samples/UnoSample/UnoSample/App.xaml b/samples/CSharpUno/UnoSample/App.xaml similarity index 100% rename from samples/UnoSample/UnoSample/App.xaml rename to samples/CSharpUno/UnoSample/App.xaml diff --git a/samples/UnoSample/UnoSample/App.xaml.cs b/samples/CSharpUno/UnoSample/App.xaml.cs similarity index 100% rename from samples/UnoSample/UnoSample/App.xaml.cs rename to samples/CSharpUno/UnoSample/App.xaml.cs diff --git a/samples/UnoSample/UnoSample/Assets/Icons/icon.svg b/samples/CSharpUno/UnoSample/Assets/Icons/icon.svg similarity index 100% rename from samples/UnoSample/UnoSample/Assets/Icons/icon.svg rename to samples/CSharpUno/UnoSample/Assets/Icons/icon.svg diff --git a/samples/UnoSample/UnoSample/Assets/Icons/icon_foreground.svg b/samples/CSharpUno/UnoSample/Assets/Icons/icon_foreground.svg similarity index 100% rename from samples/UnoSample/UnoSample/Assets/Icons/icon_foreground.svg rename to samples/CSharpUno/UnoSample/Assets/Icons/icon_foreground.svg diff --git a/samples/UnoSample/UnoSample/Assets/Images/back.svg b/samples/CSharpUno/UnoSample/Assets/Images/back.svg similarity index 100% rename from samples/UnoSample/UnoSample/Assets/Images/back.svg rename to samples/CSharpUno/UnoSample/Assets/Images/back.svg diff --git a/samples/UnoSample/UnoSample/Assets/SharedAssets.md b/samples/CSharpUno/UnoSample/Assets/SharedAssets.md similarity index 100% rename from samples/UnoSample/UnoSample/Assets/SharedAssets.md rename to samples/CSharpUno/UnoSample/Assets/SharedAssets.md diff --git a/samples/UnoSample/UnoSample/Assets/Splash/splash_screen.svg b/samples/CSharpUno/UnoSample/Assets/Splash/splash_screen.svg similarity index 100% rename from samples/UnoSample/UnoSample/Assets/Splash/splash_screen.svg rename to samples/CSharpUno/UnoSample/Assets/Splash/splash_screen.svg diff --git a/samples/UnoSample/UnoSample/GlobalUsings.cs b/samples/CSharpUno/UnoSample/GlobalUsings.cs similarity index 100% rename from samples/UnoSample/UnoSample/GlobalUsings.cs rename to samples/CSharpUno/UnoSample/GlobalUsings.cs diff --git a/samples/UnoSample/UnoSample/Models/AppConfig.cs b/samples/CSharpUno/UnoSample/Models/AppConfig.cs similarity index 100% rename from samples/UnoSample/UnoSample/Models/AppConfig.cs rename to samples/CSharpUno/UnoSample/Models/AppConfig.cs diff --git a/samples/UnoSample/UnoSample/Models/Entity.cs b/samples/CSharpUno/UnoSample/Models/Entity.cs similarity index 100% rename from samples/UnoSample/UnoSample/Models/Entity.cs rename to samples/CSharpUno/UnoSample/Models/Entity.cs diff --git a/samples/UnoSample/UnoSample/Models/WeatherForecast.cs b/samples/CSharpUno/UnoSample/Models/WeatherForecast.cs similarity index 100% rename from samples/UnoSample/UnoSample/Models/WeatherForecast.cs rename to samples/CSharpUno/UnoSample/Models/WeatherForecast.cs diff --git a/samples/UnoSample/UnoSample/Package.appxmanifest b/samples/CSharpUno/UnoSample/Package.appxmanifest similarity index 100% rename from samples/UnoSample/UnoSample/Package.appxmanifest rename to samples/CSharpUno/UnoSample/Package.appxmanifest diff --git a/samples/UnoSample/UnoSample/Platforms/Desktop/Program.cs b/samples/CSharpUno/UnoSample/Platforms/Desktop/Program.cs similarity index 100% rename from samples/UnoSample/UnoSample/Platforms/Desktop/Program.cs rename to samples/CSharpUno/UnoSample/Platforms/Desktop/Program.cs diff --git a/samples/UnoSample/UnoSample/Platforms/MacCatalyst/Entitlements.plist b/samples/CSharpUno/UnoSample/Platforms/MacCatalyst/Entitlements.plist similarity index 100% rename from samples/UnoSample/UnoSample/Platforms/MacCatalyst/Entitlements.plist rename to samples/CSharpUno/UnoSample/Platforms/MacCatalyst/Entitlements.plist diff --git a/samples/UnoSample/UnoSample/Platforms/MacCatalyst/Info.plist b/samples/CSharpUno/UnoSample/Platforms/MacCatalyst/Info.plist similarity index 100% rename from samples/UnoSample/UnoSample/Platforms/MacCatalyst/Info.plist rename to samples/CSharpUno/UnoSample/Platforms/MacCatalyst/Info.plist diff --git a/samples/UnoSample/UnoSample/Platforms/MacCatalyst/Main.maccatalyst.cs b/samples/CSharpUno/UnoSample/Platforms/MacCatalyst/Main.maccatalyst.cs similarity index 100% rename from samples/UnoSample/UnoSample/Platforms/MacCatalyst/Main.maccatalyst.cs rename to samples/CSharpUno/UnoSample/Platforms/MacCatalyst/Main.maccatalyst.cs diff --git a/samples/UnoSample/UnoSample/Platforms/MacCatalyst/Media.xcassets/LaunchImages.launchimage/Contents.json b/samples/CSharpUno/UnoSample/Platforms/MacCatalyst/Media.xcassets/LaunchImages.launchimage/Contents.json similarity index 100% rename from samples/UnoSample/UnoSample/Platforms/MacCatalyst/Media.xcassets/LaunchImages.launchimage/Contents.json rename to samples/CSharpUno/UnoSample/Platforms/MacCatalyst/Media.xcassets/LaunchImages.launchimage/Contents.json diff --git a/samples/UnoSample/UnoSample/Platforms/Windows/Program.cs b/samples/CSharpUno/UnoSample/Platforms/Windows/Program.cs similarity index 100% rename from samples/UnoSample/UnoSample/Platforms/Windows/Program.cs rename to samples/CSharpUno/UnoSample/Platforms/Windows/Program.cs diff --git a/samples/UnoSample/UnoSample/Platforms/Windows/Properties/PublishProfiles/win-arm64.pubxml b/samples/CSharpUno/UnoSample/Platforms/Windows/Properties/PublishProfiles/win-arm64.pubxml similarity index 100% rename from samples/UnoSample/UnoSample/Platforms/Windows/Properties/PublishProfiles/win-arm64.pubxml rename to samples/CSharpUno/UnoSample/Platforms/Windows/Properties/PublishProfiles/win-arm64.pubxml diff --git a/samples/UnoSample/UnoSample/Platforms/Windows/Properties/PublishProfiles/win-x64.pubxml b/samples/CSharpUno/UnoSample/Platforms/Windows/Properties/PublishProfiles/win-x64.pubxml similarity index 100% rename from samples/UnoSample/UnoSample/Platforms/Windows/Properties/PublishProfiles/win-x64.pubxml rename to samples/CSharpUno/UnoSample/Platforms/Windows/Properties/PublishProfiles/win-x64.pubxml diff --git a/samples/UnoSample/UnoSample/Platforms/Windows/Properties/PublishProfiles/win-x86.pubxml b/samples/CSharpUno/UnoSample/Platforms/Windows/Properties/PublishProfiles/win-x86.pubxml similarity index 100% rename from samples/UnoSample/UnoSample/Platforms/Windows/Properties/PublishProfiles/win-x86.pubxml rename to samples/CSharpUno/UnoSample/Platforms/Windows/Properties/PublishProfiles/win-x86.pubxml diff --git a/samples/UnoSample/UnoSample/Presentation/MainPage.xaml b/samples/CSharpUno/UnoSample/Presentation/MainPage.xaml similarity index 100% rename from samples/UnoSample/UnoSample/Presentation/MainPage.xaml rename to samples/CSharpUno/UnoSample/Presentation/MainPage.xaml diff --git a/samples/UnoSample/UnoSample/Presentation/MainPage.xaml.cs b/samples/CSharpUno/UnoSample/Presentation/MainPage.xaml.cs similarity index 100% rename from samples/UnoSample/UnoSample/Presentation/MainPage.xaml.cs rename to samples/CSharpUno/UnoSample/Presentation/MainPage.xaml.cs diff --git a/samples/UnoSample/UnoSample/Presentation/MainViewModel.cs b/samples/CSharpUno/UnoSample/Presentation/MainViewModel.cs similarity index 100% rename from samples/UnoSample/UnoSample/Presentation/MainViewModel.cs rename to samples/CSharpUno/UnoSample/Presentation/MainViewModel.cs diff --git a/samples/UnoSample/UnoSample/Presentation/Shell.xaml b/samples/CSharpUno/UnoSample/Presentation/Shell.xaml similarity index 100% rename from samples/UnoSample/UnoSample/Presentation/Shell.xaml rename to samples/CSharpUno/UnoSample/Presentation/Shell.xaml diff --git a/samples/UnoSample/UnoSample/Presentation/Shell.xaml.cs b/samples/CSharpUno/UnoSample/Presentation/Shell.xaml.cs similarity index 100% rename from samples/UnoSample/UnoSample/Presentation/Shell.xaml.cs rename to samples/CSharpUno/UnoSample/Presentation/Shell.xaml.cs diff --git a/samples/UnoSample/UnoSample/Presentation/ShellViewModel.cs b/samples/CSharpUno/UnoSample/Presentation/ShellViewModel.cs similarity index 100% rename from samples/UnoSample/UnoSample/Presentation/ShellViewModel.cs rename to samples/CSharpUno/UnoSample/Presentation/ShellViewModel.cs diff --git a/samples/UnoSample/UnoSample/ReadMe.md b/samples/CSharpUno/UnoSample/ReadMe.md similarity index 100% rename from samples/UnoSample/UnoSample/ReadMe.md rename to samples/CSharpUno/UnoSample/ReadMe.md diff --git a/samples/UnoSample/UnoSample/Serialization/WeatherForecastContext.cs b/samples/CSharpUno/UnoSample/Serialization/WeatherForecastContext.cs similarity index 100% rename from samples/UnoSample/UnoSample/Serialization/WeatherForecastContext.cs rename to samples/CSharpUno/UnoSample/Serialization/WeatherForecastContext.cs diff --git a/samples/UnoSample/UnoSample/Services/Caching/IWeatherCache.cs b/samples/CSharpUno/UnoSample/Services/Caching/IWeatherCache.cs similarity index 100% rename from samples/UnoSample/UnoSample/Services/Caching/IWeatherCache.cs rename to samples/CSharpUno/UnoSample/Services/Caching/IWeatherCache.cs diff --git a/samples/UnoSample/UnoSample/Services/Caching/WeatherCache.cs b/samples/CSharpUno/UnoSample/Services/Caching/WeatherCache.cs similarity index 100% rename from samples/UnoSample/UnoSample/Services/Caching/WeatherCache.cs rename to samples/CSharpUno/UnoSample/Services/Caching/WeatherCache.cs diff --git a/samples/UnoSample/UnoSample/Services/Endpoints/DebugHandler.cs b/samples/CSharpUno/UnoSample/Services/Endpoints/DebugHandler.cs similarity index 100% rename from samples/UnoSample/UnoSample/Services/Endpoints/DebugHandler.cs rename to samples/CSharpUno/UnoSample/Services/Endpoints/DebugHandler.cs diff --git a/samples/UnoSample/UnoSample/Services/Endpoints/IApiClient.cs b/samples/CSharpUno/UnoSample/Services/Endpoints/IApiClient.cs similarity index 100% rename from samples/UnoSample/UnoSample/Services/Endpoints/IApiClient.cs rename to samples/CSharpUno/UnoSample/Services/Endpoints/IApiClient.cs diff --git a/samples/UnoSample/UnoSample/Strings/en/Resources.resw b/samples/CSharpUno/UnoSample/Strings/en/Resources.resw similarity index 100% rename from samples/UnoSample/UnoSample/Strings/en/Resources.resw rename to samples/CSharpUno/UnoSample/Strings/en/Resources.resw diff --git a/samples/UnoSample/UnoSample/Strings/es/Resources.resw b/samples/CSharpUno/UnoSample/Strings/es/Resources.resw similarity index 100% rename from samples/UnoSample/UnoSample/Strings/es/Resources.resw rename to samples/CSharpUno/UnoSample/Strings/es/Resources.resw diff --git a/samples/UnoSample/UnoSample/Strings/fr/Resources.resw b/samples/CSharpUno/UnoSample/Strings/fr/Resources.resw similarity index 100% rename from samples/UnoSample/UnoSample/Strings/fr/Resources.resw rename to samples/CSharpUno/UnoSample/Strings/fr/Resources.resw diff --git a/samples/UnoSample/UnoSample/Strings/pt-BR/Resources.resw b/samples/CSharpUno/UnoSample/Strings/pt-BR/Resources.resw similarity index 100% rename from samples/UnoSample/UnoSample/Strings/pt-BR/Resources.resw rename to samples/CSharpUno/UnoSample/Strings/pt-BR/Resources.resw diff --git a/samples/UnoSample/UnoSample/Styles/ColorPaletteOverride.json b/samples/CSharpUno/UnoSample/Styles/ColorPaletteOverride.json similarity index 100% rename from samples/UnoSample/UnoSample/Styles/ColorPaletteOverride.json rename to samples/CSharpUno/UnoSample/Styles/ColorPaletteOverride.json diff --git a/samples/UnoSample/UnoSample/Styles/ColorPaletteOverride.xaml b/samples/CSharpUno/UnoSample/Styles/ColorPaletteOverride.xaml similarity index 100% rename from samples/UnoSample/UnoSample/Styles/ColorPaletteOverride.xaml rename to samples/CSharpUno/UnoSample/Styles/ColorPaletteOverride.xaml diff --git a/samples/UnoSample/UnoSample/UnoSample.csproj b/samples/CSharpUno/UnoSample/UnoSample.csproj similarity index 100% rename from samples/UnoSample/UnoSample/UnoSample.csproj rename to samples/CSharpUno/UnoSample/UnoSample.csproj diff --git a/samples/UnoSample/UnoSample/app.manifest b/samples/CSharpUno/UnoSample/app.manifest similarity index 100% rename from samples/UnoSample/UnoSample/app.manifest rename to samples/CSharpUno/UnoSample/app.manifest diff --git a/samples/UnoSample/UnoSample/appsettings.development.json b/samples/CSharpUno/UnoSample/appsettings.development.json similarity index 100% rename from samples/UnoSample/UnoSample/appsettings.development.json rename to samples/CSharpUno/UnoSample/appsettings.development.json diff --git a/samples/UnoSample/UnoSample/appsettings.json b/samples/CSharpUno/UnoSample/appsettings.json similarity index 100% rename from samples/UnoSample/UnoSample/appsettings.json rename to samples/CSharpUno/UnoSample/appsettings.json diff --git a/samples/UnoSample/global.json b/samples/CSharpUno/global.json similarity index 100% rename from samples/UnoSample/global.json rename to samples/CSharpUno/global.json diff --git a/samples/VeloWpfSample/App.xaml b/samples/CSharpWpf/App.xaml similarity index 73% rename from samples/VeloWpfSample/App.xaml rename to samples/CSharpWpf/App.xaml index 242066f5..34ef6176 100644 --- a/samples/VeloWpfSample/App.xaml +++ b/samples/CSharpWpf/App.xaml @@ -1,7 +1,7 @@ - diff --git a/samples/VeloWpfSample/App.xaml.cs b/samples/CSharpWpf/App.xaml.cs similarity index 77% rename from samples/VeloWpfSample/App.xaml.cs rename to samples/CSharpWpf/App.xaml.cs index 3862b0f6..e1b69ac8 100644 --- a/samples/VeloWpfSample/App.xaml.cs +++ b/samples/CSharpWpf/App.xaml.cs @@ -1,6 +1,6 @@ using System.Windows; -namespace VeloWpfSample +namespace CSharpWpf { public partial class App : Application { diff --git a/samples/VeloWpfSample/AssemblyInfo.cs b/samples/CSharpWpf/AssemblyInfo.cs similarity index 100% rename from samples/VeloWpfSample/AssemblyInfo.cs rename to samples/CSharpWpf/AssemblyInfo.cs diff --git a/samples/VeloWpfSample/VeloWpfSample.csproj b/samples/CSharpWpf/CSharpWpf.csproj similarity index 86% rename from samples/VeloWpfSample/VeloWpfSample.csproj rename to samples/CSharpWpf/CSharpWpf.csproj index 5e6eba8d..c5fafcbf 100644 --- a/samples/VeloWpfSample/VeloWpfSample.csproj +++ b/samples/CSharpWpf/CSharpWpf.csproj @@ -2,6 +2,7 @@ WinExe + VelopackCSharpWpf net48 true true @@ -9,7 +10,7 @@ - VeloWpfSample.Program + CSharpWpf.Program diff --git a/samples/VeloWpfSample/MainWindow.xaml b/samples/CSharpWpf/MainWindow.xaml similarity index 90% rename from samples/VeloWpfSample/MainWindow.xaml rename to samples/CSharpWpf/MainWindow.xaml index 25adafd0..4ac5a1a4 100644 --- a/samples/VeloWpfSample/MainWindow.xaml +++ b/samples/CSharpWpf/MainWindow.xaml @@ -1,12 +1,12 @@ - + Title="CSharpWpf" Height="600" Width="600"> diff --git a/samples/VeloWpfSample/MainWindow.xaml.cs b/samples/CSharpWpf/MainWindow.xaml.cs similarity index 99% rename from samples/VeloWpfSample/MainWindow.xaml.cs rename to samples/CSharpWpf/MainWindow.xaml.cs index fda6dd08..ce78683e 100644 --- a/samples/VeloWpfSample/MainWindow.xaml.cs +++ b/samples/CSharpWpf/MainWindow.xaml.cs @@ -3,7 +3,7 @@ using System.Windows; using Microsoft.Extensions.Logging; using Velopack; -namespace VeloWpfSample +namespace CSharpWpf { public partial class MainWindow : Window { diff --git a/samples/VeloWpfSample/MemoryLogger.cs b/samples/CSharpWpf/MemoryLogger.cs similarity index 98% rename from samples/VeloWpfSample/MemoryLogger.cs rename to samples/CSharpWpf/MemoryLogger.cs index 84ba757a..7852bee1 100644 --- a/samples/VeloWpfSample/MemoryLogger.cs +++ b/samples/CSharpWpf/MemoryLogger.cs @@ -1,7 +1,7 @@ using System.Text; using Microsoft.Extensions.Logging; -namespace VeloWpfSample +namespace CSharpWpf { public class LogUpdatedEventArgs : EventArgs { diff --git a/samples/VeloWpfSample/Program.cs b/samples/CSharpWpf/Program.cs similarity index 92% rename from samples/VeloWpfSample/Program.cs rename to samples/CSharpWpf/Program.cs index 30ee14a6..339e04e2 100644 --- a/samples/VeloWpfSample/Program.cs +++ b/samples/CSharpWpf/Program.cs @@ -1,11 +1,11 @@ using System.Windows; using Velopack; -namespace VeloWpfSample +namespace CSharpWpf { // Since WPF has an "automatic" Program.Main, we need to create our own. // In order for this to work, you must also add the following to your .csproj: - // VeloWpfSample.Program + // CSharpWpf.Program public class Program { public static MemoryLogger Log { get; private set; } diff --git a/samples/VeloWpfSample/build.bat b/samples/CSharpWpf/build.bat similarity index 64% rename from samples/VeloWpfSample/build.bat rename to samples/CSharpWpf/build.bat index 3dd5144b..4ff25db7 100644 --- a/samples/VeloWpfSample/build.bat +++ b/samples/CSharpWpf/build.bat @@ -10,9 +10,9 @@ if "%~1"=="" ( set "version=%~1" echo. -echo Compiling VeloWpfSample with dotnet... +echo Compiling VelopackCSharpWpf with dotnet... dotnet publish -c Release -o %~dp0publish echo. echo Building Velopack Release v%version% -vpk pack -u VeloWpfSample -v %version% -o %~dp0releases -p %~dp0publish -f net8-x64-desktop \ No newline at end of file +vpk pack -u VelopackCSharpWpf -v %version% -o %~dp0releases -p %~dp0publish -f net8-x64-desktop \ No newline at end of file diff --git a/samples/VeloWpfSample/readme.md b/samples/CSharpWpf/readme.md similarity index 100% rename from samples/VeloWpfSample/readme.md rename to samples/CSharpWpf/readme.md diff --git a/samples/Directory.Build.targets b/samples/Directory.Build.targets index f5ef83c6..973ce80d 100644 --- a/samples/Directory.Build.targets +++ b/samples/Directory.Build.targets @@ -26,7 +26,7 @@ - + diff --git a/samples/readme.md b/samples/readme.md index 54bd2e8c..0880f44e 100644 --- a/samples/readme.md +++ b/samples/readme.md @@ -1,10 +1,7 @@ # Velopack Samples -- [**AvaloniaCrossPlat**](AvaloniaCrossPlat) - uses Avalonia to provide a desktop UI, installer, and updates for Mac, Linux, and Windows. - -- [**VeloWpfSample**](VeloWpfSample) - demonstrates how to use Velopack effectively with WPF. - -## Other Languages -Note that only sample apps written in C# using the core reference library are available here. - -For other programming languages (Rust, C++, JS, etc) please visit the [Velopack Documentation](https://docs.velopack.io/category/sample-apps). \ No newline at end of file +## C# +- [**CSharpAvalonia**](CSharpAvalonia) - Velopack in a cross-platform app with [Avalonia](https://avaloniaui.net/). +- [**CSharpUnityMono**](CSharpUnityMono) - Velopack with [Unity Game Engine](https://unity.com/) and Mono. +- [**CSharpUno**](CSharpUno) - Velopack in a cross-platform app with [Uno Platform](https://github.com/unoplatform/uno). +- [**CSharpWpf**](CSharpWpf) - Velopack with WPF on Windows. diff --git a/src/Directory.Build.props b/src/Directory.Build.props index b251166e..3b276319 100644 --- a/src/Directory.Build.props +++ b/src/Directory.Build.props @@ -20,10 +20,10 @@ $(LocalAppData)\NuGet\v3-cache true $(UserProfile)\.nuget\packages - true + false true - ..\..\Velopack.snk + $(MSBuildThisFileDirectory)..\Velopack.snk latest diff --git a/src/Directory.Build.targets b/src/Directory.Build.targets index 954b8a39..06dd7900 100644 --- a/src/Directory.Build.targets +++ b/src/Directory.Build.targets @@ -27,24 +27,24 @@ - - + + - - - - + + + + - - - - - - + + + + + + diff --git a/src/Rust/UpdateLocksmith_x64.lib b/src/Rust/UpdateLocksmith_x64.lib deleted file mode 100644 index 372dfa56313128ca89c0e7d7c81e5b5bd97b3d1b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2580890 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%0AUJFy9g>7j?R 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℞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