diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..1cbe923
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,23 @@
+# Visual Studio
+.vs/
+*.user
+*.suo
+*.userosscache
+*.VC.db
+
+# Build output
+bin/
+obj/
+
+# Rider
+.idea/
+
+# NuGet
+packages/
+
+# Resharper
+_ReSharper*/
+
+# OS files
+Thumbs.db
+.DS_Store
diff --git a/App.xaml b/App.xaml
new file mode 100644
index 0000000..09770ed
--- /dev/null
+++ b/App.xaml
@@ -0,0 +1,9 @@
+
+
+
+
+
diff --git a/App.xaml.cs b/App.xaml.cs
new file mode 100644
index 0000000..bdaab89
--- /dev/null
+++ b/App.xaml.cs
@@ -0,0 +1,14 @@
+using System.Configuration;
+using System.Data;
+using System.Windows;
+
+namespace MossyUpdater
+{
+ ///
+ /// Interaction logic for App.xaml
+ ///
+ public partial class App : Application
+ {
+ }
+
+}
diff --git a/AssemblyInfo.cs b/AssemblyInfo.cs
new file mode 100644
index 0000000..372e037
--- /dev/null
+++ b/AssemblyInfo.cs
@@ -0,0 +1,10 @@
+using System.Windows;
+
+[assembly: ThemeInfo(
+ ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located
+ //(used if a resource is not found in the page,
+ // or application resource dictionaries)
+ ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located
+ //(used if a resource is not found in the page,
+ // app, or any theme specific resource dictionaries)
+)]
diff --git a/MainWindow.xaml b/MainWindow.xaml
new file mode 100644
index 0000000..3d84671
--- /dev/null
+++ b/MainWindow.xaml
@@ -0,0 +1,76 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/MainWindow.xaml.cs b/MainWindow.xaml.cs
new file mode 100644
index 0000000..07e2cd3
--- /dev/null
+++ b/MainWindow.xaml.cs
@@ -0,0 +1,72 @@
+using System;
+using System.IO;
+using System.Net.Http;
+using System.Threading.Tasks;
+using System.Windows;
+using Ookii.Dialogs.Wpf; // ← add this
+
+namespace MossyUpdater
+{
+ public partial class MainWindow : Window
+ {
+ public MainWindow()
+ {
+ InitializeComponent();
+ }
+
+ private void Browse_Click(object sender, RoutedEventArgs e)
+ {
+ var dlg = new VistaFolderBrowserDialog
+ {
+ Description = "Select a destination folder",
+ UseDescriptionForTitle = true
+ };
+
+ // ShowDialog returns true if the user clicked OK
+ if (dlg.ShowDialog() == true)
+ FolderTextBox.Text = dlg.SelectedPath;
+ }
+
+ private async void Download_Click(object sender, RoutedEventArgs e)
+ {
+ string url = UrlTextBox.Text.Trim();
+ string folder = FolderTextBox.Text.Trim();
+ string filename = FilenameTextBox.Text.Trim();
+
+ if (string.IsNullOrEmpty(url)
+ || string.IsNullOrEmpty(folder)
+ || string.IsNullOrEmpty(filename))
+ {
+ StatusTextBlock.Text = "Please fill in all fields.";
+ StatusTextBlock.Foreground = System.Windows.Media.Brushes.Red;
+ return;
+ }
+
+ string fullPath = Path.Combine(folder, filename);
+
+ try
+ {
+ using var client = new HttpClient();
+ var data = await client.GetByteArrayAsync(url);
+ await File.WriteAllBytesAsync(fullPath, data);
+
+ UnblockFile(fullPath);
+
+ StatusTextBlock.Text = $"Downloaded and unblocked:\n{fullPath}";
+ StatusTextBlock.Foreground = System.Windows.Media.Brushes.Green;
+ }
+ catch (Exception ex)
+ {
+ StatusTextBlock.Text = $"Error: {ex.Message}";
+ StatusTextBlock.Foreground = System.Windows.Media.Brushes.Red;
+ }
+ }
+
+ private void UnblockFile(string path)
+ {
+ var zone = path + ":Zone.Identifier";
+ if (File.Exists(zone))
+ File.Delete(zone);
+ }
+ }
+}
diff --git a/Mosswart_Mask_Live.png b/Mosswart_Mask_Live.png
new file mode 100644
index 0000000..fcf9039
Binary files /dev/null and b/Mosswart_Mask_Live.png differ
diff --git a/MossyUpdater.csproj b/MossyUpdater.csproj
new file mode 100644
index 0000000..9f87710
--- /dev/null
+++ b/MossyUpdater.csproj
@@ -0,0 +1,25 @@
+
+
+
+ WinExe
+ net8.0-windows
+ enable
+ enable
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/MossyUpdater.sln b/MossyUpdater.sln
new file mode 100644
index 0000000..047677b
--- /dev/null
+++ b/MossyUpdater.sln
@@ -0,0 +1,25 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 17
+VisualStudioVersion = 17.13.35931.197 d17.13
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MossyUpdater", "MossyUpdater.csproj", "{B110060B-D3A6-44CB-86E1-EF2B65F1209D}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {B110060B-D3A6-44CB-86E1-EF2B65F1209D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {B110060B-D3A6-44CB-86E1-EF2B65F1209D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {B110060B-D3A6-44CB-86E1-EF2B65F1209D}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {B110060B-D3A6-44CB-86E1-EF2B65F1209D}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {FF3977FA-6EF6-4AFF-9E27-19038F7BF519}
+ EndGlobalSection
+EndGlobal
diff --git a/Properties/PublishProfiles/FolderProfile.pubxml b/Properties/PublishProfiles/FolderProfile.pubxml
new file mode 100644
index 0000000..6675afe
--- /dev/null
+++ b/Properties/PublishProfiles/FolderProfile.pubxml
@@ -0,0 +1,16 @@
+
+
+
+
+ Release
+ Any CPU
+ bin\Release\net8.0-windows\publish\win-x64\
+ FileSystem
+ <_TargetId>Folder
+ net8.0-windows
+ win-x64
+ false
+ true
+ false
+
+
\ No newline at end of file