Upload via GUI (186 Dateien)
This commit is contained in:
@@ -0,0 +1,18 @@
|
|||||||
|
<Application x:Class="DeskCoreSetup.App"
|
||||||
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||||
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
|
||||||
|
<Application.Resources>
|
||||||
|
<ResourceDictionary>
|
||||||
|
<ResourceDictionary.MergedDictionaries>
|
||||||
|
<!-- [0] wird je nach Hell/Dunkel ersetzt -->
|
||||||
|
<ResourceDictionary Source="Themes/Colors.Light.xaml"/>
|
||||||
|
<ResourceDictionary Source="Themes/Controls.xaml"/>
|
||||||
|
</ResourceDictionary.MergedDictionaries>
|
||||||
|
<SolidColorBrush x:Key="AccentBrush" Color="#0067C0"/>
|
||||||
|
<SolidColorBrush x:Key="AccentHoverBrush" Color="#1975C5"/>
|
||||||
|
<SolidColorBrush x:Key="OnAccentBrush" Color="White"/>
|
||||||
|
<SolidColorBrush x:Key="AccentSubtleBrush" Color="#220067C0"/>
|
||||||
|
<SolidColorBrush x:Key="AccentSubtleStrokeBrush" Color="#550067C0"/>
|
||||||
|
</ResourceDictionary>
|
||||||
|
</Application.Resources>
|
||||||
|
</Application>
|
||||||
@@ -0,0 +1,77 @@
|
|||||||
|
using System.Windows;
|
||||||
|
using System.Windows.Media;
|
||||||
|
using Microsoft.Win32;
|
||||||
|
|
||||||
|
namespace DeskCoreSetup;
|
||||||
|
|
||||||
|
public partial class App : Application
|
||||||
|
{
|
||||||
|
protected override void OnStartup(StartupEventArgs e)
|
||||||
|
{
|
||||||
|
base.OnStartup(e);
|
||||||
|
bool uninstall = e.Args.Any(a => a.Equals("--uninstall", StringComparison.OrdinalIgnoreCase));
|
||||||
|
bool silent = e.Args.Any(a => a.Equals("/S", StringComparison.OrdinalIgnoreCase));
|
||||||
|
bool launch = e.Args.Any(a => a.Equals("/launch", StringComparison.OrdinalIgnoreCase));
|
||||||
|
var dirArg = e.Args.FirstOrDefault(a => a.StartsWith("/D=", StringComparison.OrdinalIgnoreCase))?.Substring(3);
|
||||||
|
|
||||||
|
// Stille Installation/Deinstallation für Skripte: DeskCore-Setup.exe /S [/D=Ordner] bzw. --uninstall /S
|
||||||
|
if (silent)
|
||||||
|
{
|
||||||
|
var progress = new Progress<(double, string)>(_ => { });
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (uninstall) Installer.Uninstall(removeData: false, progress);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var dir = dirArg ?? Installer.InstalledDir ?? Installer.DefaultDir;
|
||||||
|
Installer.Install(dir, desktopLink: Installer.InstalledDir is null || Installer.DesktopLinkExists,
|
||||||
|
autostart: Installer.AutostartEnabled, progress, installRuntime: true);
|
||||||
|
// nach einem Update aus DeskCore heraus: gleich wieder starten
|
||||||
|
if (launch) Installer.StartUnelevated(System.IO.Path.Combine(dir, Installer.ExeName));
|
||||||
|
}
|
||||||
|
Shutdown(0);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
// ohne Oberfläche: Fehler für Skripte nachvollziehbar ablegen
|
||||||
|
try { System.IO.File.WriteAllText(System.IO.Path.Combine(System.IO.Path.GetTempPath(), "DeskCore-Setup.log"), $"[{DateTime.Now}] {ex}"); } catch { }
|
||||||
|
Shutdown(1);
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
ApplyTheme();
|
||||||
|
new MainWindow(uninstall).Show();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>Hell/Dunkel und Akzentfarbe wie in Windows eingestellt.</summary>
|
||||||
|
private void ApplyTheme()
|
||||||
|
{
|
||||||
|
bool light = ReadDword(@"Software\Microsoft\Windows\CurrentVersion\Themes\Personalize", "AppsUseLightTheme") != 0;
|
||||||
|
Resources.MergedDictionaries[0] = new ResourceDictionary
|
||||||
|
{
|
||||||
|
Source = new Uri($"pack://application:,,,/Themes/Colors.{(light ? "Light" : "Dark")}.xaml"),
|
||||||
|
};
|
||||||
|
int abgr = ReadDword(@"Software\Microsoft\Windows\DWM", "AccentColor") is var v and not -1 ? v : unchecked((int)0xFFD77800);
|
||||||
|
var accent = Color.FromRgb((byte)abgr, (byte)(abgr >> 8), (byte)(abgr >> 16));
|
||||||
|
var a = light ? Mix(accent, Colors.Black, 0.12) : Mix(accent, Colors.White, 0.45);
|
||||||
|
Resources["AccentBrush"] = new SolidColorBrush(a);
|
||||||
|
Resources["AccentHoverBrush"] = new SolidColorBrush(light ? Mix(a, Colors.White, 0.1) : Mix(a, Colors.Black, 0.1));
|
||||||
|
Resources["OnAccentBrush"] = new SolidColorBrush(light ? Colors.White : Colors.Black);
|
||||||
|
Resources["AccentSubtleBrush"] = new SolidColorBrush(Color.FromArgb(light ? (byte)0x22 : (byte)0x30, a.R, a.G, a.B));
|
||||||
|
Resources["AccentSubtleStrokeBrush"] = new SolidColorBrush(Color.FromArgb(light ? (byte)0x55 : (byte)0x60, a.R, a.G, a.B));
|
||||||
|
}
|
||||||
|
|
||||||
|
private static int ReadDword(string key, string name)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
using var k = Registry.CurrentUser.OpenSubKey(key);
|
||||||
|
return k?.GetValue(name) is int i ? i : -1;
|
||||||
|
}
|
||||||
|
catch { return -1; }
|
||||||
|
}
|
||||||
|
|
||||||
|
private static Color Mix(Color c, Color with, double t) => Color.FromRgb(
|
||||||
|
(byte)(c.R + (with.R - c.R) * t), (byte)(c.G + (with.G - c.G) * t), (byte)(c.B + (with.B - c.B) * t));
|
||||||
|
}
|
||||||
@@ -0,0 +1,49 @@
|
|||||||
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
<PropertyGroup>
|
||||||
|
<OutputType>WinExe</OutputType>
|
||||||
|
<!-- .NET Framework 4.8 ist in jedem Windows 10/11 enthalten → der Installer läuft immer
|
||||||
|
und kann die für DeskCore nötige .NET-9-Laufzeit selbst nachinstallieren -->
|
||||||
|
<TargetFramework>net48</TargetFramework>
|
||||||
|
<UseWPF>true</UseWPF>
|
||||||
|
<UseWindowsForms>true</UseWindowsForms>
|
||||||
|
<LangVersion>latest</LangVersion>
|
||||||
|
<Nullable>enable</Nullable>
|
||||||
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
|
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||||
|
<Prefer32Bit>false</Prefer32Bit>
|
||||||
|
<GenerateDocumentationFile>false</GenerateDocumentationFile>
|
||||||
|
<AssemblyName>DeskCore-Setup</AssemblyName>
|
||||||
|
<RootNamespace>DeskCoreSetup</RootNamespace>
|
||||||
|
<ApplicationIcon>..\app.ico</ApplicationIcon>
|
||||||
|
<!-- Installer fragt beim Start einmal nach Administratorrechten (für die .NET-Laufzeit von Microsoft) -->
|
||||||
|
<ApplicationManifest>app.manifest</ApplicationManifest>
|
||||||
|
<Product>DeskCore Setup</Product>
|
||||||
|
<AssemblyTitle>DeskCore Setup</AssemblyTitle>
|
||||||
|
<Description>Installiert DeskCore</Description>
|
||||||
|
<Company>M_Viper</Company>
|
||||||
|
<Authors>M_Viper</Authors>
|
||||||
|
<Copyright>Copyright (c) M_Viper. Alle Rechte vorbehalten.</Copyright>
|
||||||
|
<NeutralLanguage>de-DE</NeutralLanguage>
|
||||||
|
<!-- fertig veröffentlichte DeskCore.exe, die eingepackt wird (build.ps1 legt sie hier ab) -->
|
||||||
|
<AppPayload Condition="'$(AppPayload)' == ''">..\artifacts\app\DeskCore.exe</AppPayload>
|
||||||
|
</PropertyGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<!-- WinForms nur für den Ordner-Dialog; nicht global, sonst Namenskonflikte mit WPF -->
|
||||||
|
<Using Remove="System.Windows.Forms" />
|
||||||
|
<Using Remove="System.Drawing" />
|
||||||
|
<Reference Include="Microsoft.CSharp" />
|
||||||
|
<Reference Include="Microsoft.VisualBasic" />
|
||||||
|
<Reference Include="System.Net.Http" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<!-- gleiches Design wie die App -->
|
||||||
|
<Page Include="..\Themes\Colors.Light.xaml" Link="Themes\Colors.Light.xaml" />
|
||||||
|
<Page Include="..\Themes\Colors.Dark.xaml" Link="Themes\Colors.Dark.xaml" />
|
||||||
|
<Page Include="..\Themes\Controls.xaml" Link="Themes\Controls.xaml" />
|
||||||
|
<Resource Include="..\app.ico" Link="app.ico" />
|
||||||
|
<Resource Include="..\app.png" Link="app.png" />
|
||||||
|
<!-- Nutzlast -->
|
||||||
|
<EmbeddedResource Include="$(AppPayload)" LogicalName="payload.DeskCore.exe" />
|
||||||
|
<EmbeddedResource Include="..\LICENSE.txt" LogicalName="payload.LICENSE.txt" />
|
||||||
|
</ItemGroup>
|
||||||
|
</Project>
|
||||||
@@ -0,0 +1,401 @@
|
|||||||
|
using System.Diagnostics;
|
||||||
|
using System.IO;
|
||||||
|
using Microsoft.Win32;
|
||||||
|
|
||||||
|
namespace DeskCoreSetup;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Installation/Deinstallation für den aktuellen Benutzer. Der Installer selbst läuft mit Administratorrechten
|
||||||
|
/// (wegen der .NET-Laufzeit von Microsoft), DeskCore wird aber immer ohne gestartet.
|
||||||
|
/// </summary>
|
||||||
|
public static class Installer
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// DeskCore ohne Administratorrechte starten – über den Explorer, der als normaler Benutzer läuft.
|
||||||
|
/// Wichtig: Ein Programm mit Adminrechten darf von Windows aus keine Icons per Ziehen vom Desktop annehmen.
|
||||||
|
/// </summary>
|
||||||
|
public static void StartUnelevated(string exe)
|
||||||
|
{
|
||||||
|
try { Process.Start(new ProcessStartInfo("explorer.exe", $"\"{exe}\"") { UseShellExecute = false }); }
|
||||||
|
catch { }
|
||||||
|
}
|
||||||
|
|
||||||
|
public const string AppName = "DeskCore";
|
||||||
|
public const string Publisher = "M_Viper";
|
||||||
|
public const string ExeName = "DeskCore.exe";
|
||||||
|
public const string UninstallerName = "DeskCore-Uninstall.exe";
|
||||||
|
private const string UninstallKey = @"Software\Microsoft\Windows\CurrentVersion\Uninstall\DeskCore";
|
||||||
|
private const string RunKey = @"Software\Microsoft\Windows\CurrentVersion\Run";
|
||||||
|
|
||||||
|
public static string Version
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
var v = typeof(Installer).Assembly.GetName().Version!;
|
||||||
|
return $"{v.Major}.{v.Minor}.{v.Build}";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>Pfad dieses Setups (auch als Deinstallationsprogramm).</summary>
|
||||||
|
public static string SelfPath => System.Reflection.Assembly.GetExecutingAssembly().Location;
|
||||||
|
|
||||||
|
public static string DefaultDir =>
|
||||||
|
Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "Programs", AppName);
|
||||||
|
|
||||||
|
private static string StartMenuLink =>
|
||||||
|
Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Programs), AppName + ".lnk");
|
||||||
|
|
||||||
|
private static string DesktopLink =>
|
||||||
|
Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory), AppName + ".lnk");
|
||||||
|
|
||||||
|
/// <summary>Ordner einer vorhandenen Installation (oder null).</summary>
|
||||||
|
public static string? InstalledDir
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
using var k = Registry.CurrentUser.OpenSubKey(UninstallKey);
|
||||||
|
return k?.GetValue("InstallLocation") as string is { } d && File.Exists(Path.Combine(d, ExeName)) ? d : null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static string? InstalledVersion
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
using var k = Registry.CurrentUser.OpenSubKey(UninstallKey);
|
||||||
|
return k?.GetValue("DisplayVersion") as string;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static bool AutostartEnabled
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
using var k = Registry.CurrentUser.OpenSubKey(RunKey);
|
||||||
|
return k?.GetValue(AppName) is string;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static bool DesktopLinkExists => File.Exists(DesktopLink);
|
||||||
|
|
||||||
|
public static string LicenseText => ReadResourceText("payload.LICENSE.txt");
|
||||||
|
|
||||||
|
// ---------- Installieren ----------
|
||||||
|
|
||||||
|
public static void Install(string dir, bool desktopLink, bool autostart, IProgress<(double, string)> progress,
|
||||||
|
bool installRuntime = false)
|
||||||
|
{
|
||||||
|
if (!Runtime.Is64BitWindows)
|
||||||
|
throw new InvalidOperationException("DeskCore benötigt ein 64-Bit-Windows (Windows 10 oder 11).");
|
||||||
|
if (installRuntime && !Runtime.IsInstalled)
|
||||||
|
{
|
||||||
|
// 0–60 % für die Laufzeit, Rest für DeskCore
|
||||||
|
Runtime.Install((v, text) => progress.Report((v * 0.6, text)));
|
||||||
|
var inner = progress;
|
||||||
|
progress = new Scaled(inner, 0.6, 0.4);
|
||||||
|
}
|
||||||
|
|
||||||
|
progress.Report((0.05, "DeskCore wird beendet …"));
|
||||||
|
CloseRunningApp();
|
||||||
|
RemoveLegacyInstall();
|
||||||
|
|
||||||
|
progress.Report((0.2, "Dateien werden kopiert …"));
|
||||||
|
Directory.CreateDirectory(dir);
|
||||||
|
var exe = Path.Combine(dir, ExeName);
|
||||||
|
WriteResource("payload.DeskCore.exe", exe);
|
||||||
|
WriteResource("payload.LICENSE.txt", Path.Combine(dir, "LICENSE.txt"));
|
||||||
|
|
||||||
|
// Setup selbst als Deinstallationsprogramm ablegen
|
||||||
|
var self = SelfPath;
|
||||||
|
var uninstaller = Path.Combine(dir, UninstallerName);
|
||||||
|
if (!string.Equals(Path.GetFullPath(self), Path.GetFullPath(uninstaller), StringComparison.OrdinalIgnoreCase))
|
||||||
|
{
|
||||||
|
MoveAside(uninstaller);
|
||||||
|
File.Copy(self, uninstaller, overwrite: true);
|
||||||
|
}
|
||||||
|
|
||||||
|
progress.Report((0.55, "Verknüpfungen werden angelegt …"));
|
||||||
|
CreateShortcut(StartMenuLink, exe);
|
||||||
|
if (desktopLink) CreateShortcut(DesktopLink, exe);
|
||||||
|
|
||||||
|
progress.Report((0.75, "Windows wird eingerichtet …"));
|
||||||
|
using (var run = Registry.CurrentUser.CreateSubKey(RunKey))
|
||||||
|
{
|
||||||
|
if (autostart) run.SetValue(AppName, $"\"{exe}\" --minimized");
|
||||||
|
else run.DeleteValue(AppName, throwOnMissingValue: false);
|
||||||
|
}
|
||||||
|
|
||||||
|
using (var k = Registry.CurrentUser.CreateSubKey(UninstallKey))
|
||||||
|
{
|
||||||
|
long size = new[] { exe, uninstaller, Path.Combine(dir, "LICENSE.txt") }
|
||||||
|
.Where(File.Exists).Sum(f => new FileInfo(f).Length) / 1024;
|
||||||
|
k.SetValue("DisplayName", AppName);
|
||||||
|
k.SetValue("DisplayVersion", Version);
|
||||||
|
k.SetValue("Publisher", Publisher);
|
||||||
|
k.SetValue("DisplayIcon", $"{exe},0");
|
||||||
|
k.SetValue("InstallLocation", dir);
|
||||||
|
k.SetValue("UninstallString", $"\"{uninstaller}\" --uninstall");
|
||||||
|
k.SetValue("QuietUninstallString", $"\"{uninstaller}\" --uninstall /S");
|
||||||
|
k.SetValue("URLInfoAbout", "https://m-viper.de");
|
||||||
|
k.SetValue("InstallDate", DateTime.Now.ToString("yyyyMMdd"));
|
||||||
|
k.SetValue("EstimatedSize", (int)size, RegistryValueKind.DWord);
|
||||||
|
k.SetValue("NoModify", 1, RegistryValueKind.DWord);
|
||||||
|
k.SetValue("NoRepair", 1, RegistryValueKind.DWord);
|
||||||
|
}
|
||||||
|
|
||||||
|
progress.Report((1.0, "Fertig"));
|
||||||
|
}
|
||||||
|
|
||||||
|
// ---------- Frühere Version "DeskHub" entfernen ----------
|
||||||
|
|
||||||
|
private const string LegacyName = "DeskHub";
|
||||||
|
private const string LegacyUninstallKey = @"Software\Microsoft\Windows\CurrentVersion\Uninstall\DeskHub";
|
||||||
|
|
||||||
|
/// <summary>Ordner einer alten Installation unter dem früheren Namen "DeskHub" – nur unsere eigene.</summary>
|
||||||
|
public static string? LegacyInstallDir
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
using var k = Registry.CurrentUser.OpenSubKey(LegacyUninstallKey);
|
||||||
|
// "DeskHub" heißt auch ein anderes Programm → nur mit unserem Herausgeber anfassen
|
||||||
|
if (k?.GetValue("Publisher") as string != Publisher) return null;
|
||||||
|
return k.GetValue("InstallLocation") as string;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void RemoveLegacyInstall()
|
||||||
|
{
|
||||||
|
var dir = LegacyInstallDir;
|
||||||
|
if (dir is null) return;
|
||||||
|
var exe = Path.Combine(dir, LegacyName + ".exe");
|
||||||
|
|
||||||
|
// nur Prozesse beenden, die wirklich aus dem alten Ordner laufen
|
||||||
|
foreach (var p in Process.GetProcessesByName(LegacyName))
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (p.MainModule?.FileName is { } f && Storage_IsUnder(f, dir))
|
||||||
|
{
|
||||||
|
p.Kill();
|
||||||
|
p.WaitForExit(10000);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch { }
|
||||||
|
}
|
||||||
|
|
||||||
|
DeleteIfPointsTo(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Programs), LegacyName + ".lnk"), exe);
|
||||||
|
DeleteIfPointsTo(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory), LegacyName + ".lnk"), exe);
|
||||||
|
using (var run = Registry.CurrentUser.OpenSubKey(RunKey, writable: true))
|
||||||
|
{
|
||||||
|
if (run?.GetValue(LegacyName) is string cmd && cmd.IndexOf(exe, StringComparison.OrdinalIgnoreCase) >= 0)
|
||||||
|
run.DeleteValue(LegacyName, throwOnMissingValue: false);
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (var f in new[] { exe, Path.Combine(dir, "LICENSE.txt"), Path.Combine(dir, LegacyName + "-Uninstall.exe") })
|
||||||
|
MoveAside(f);
|
||||||
|
CleanupOldFiles(dir);
|
||||||
|
try { Directory.Delete(dir); } catch { } // nur wenn leer
|
||||||
|
Registry.CurrentUser.DeleteSubKeyTree(LegacyUninstallKey, throwOnMissingSubKey: false);
|
||||||
|
}
|
||||||
|
|
||||||
|
// ---------- Deinstallieren ----------
|
||||||
|
|
||||||
|
public static readonly string[] DataDirs =
|
||||||
|
[
|
||||||
|
Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), AppName), // Kategorien
|
||||||
|
Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), AppName), // Einstellungen
|
||||||
|
Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), AppName), // Rückgängig-Zwischenablage
|
||||||
|
];
|
||||||
|
|
||||||
|
public static void Uninstall(bool removeData, IProgress<(double, string)> progress)
|
||||||
|
{
|
||||||
|
// Nur im eingetragenen Installationsordner löschen – nie dort, wo das Setup zufällig liegt (z. B. Downloads)
|
||||||
|
var dir = InstalledDir;
|
||||||
|
var exe = dir is null ? "" : Path.Combine(dir, ExeName);
|
||||||
|
|
||||||
|
progress.Report((0.1, "DeskCore wird beendet …"));
|
||||||
|
CloseRunningApp();
|
||||||
|
|
||||||
|
progress.Report((0.3, "Verknüpfungen werden entfernt …"));
|
||||||
|
DeleteIfPointsTo(StartMenuLink, exe);
|
||||||
|
DeleteIfPointsTo(DesktopLink, exe);
|
||||||
|
|
||||||
|
progress.Report((0.45, "Windows-Einträge werden entfernt …"));
|
||||||
|
using (var run = Registry.CurrentUser.OpenSubKey(RunKey, writable: true))
|
||||||
|
run?.DeleteValue(AppName, throwOnMissingValue: false);
|
||||||
|
Registry.CurrentUser.DeleteSubKeyTree(UninstallKey, throwOnMissingSubKey: false);
|
||||||
|
|
||||||
|
if (removeData)
|
||||||
|
{
|
||||||
|
progress.Report((0.6, "Kategorien und Einstellungen werden in den Papierkorb gelegt …"));
|
||||||
|
foreach (var d in DataDirs.Where(Directory.Exists))
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Microsoft.VisualBasic.FileIO.FileSystem.DeleteDirectory(d,
|
||||||
|
Microsoft.VisualBasic.FileIO.UIOption.OnlyErrorDialogs,
|
||||||
|
Microsoft.VisualBasic.FileIO.RecycleOption.SendToRecycleBin);
|
||||||
|
}
|
||||||
|
catch { }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
progress.Report((0.85, "Dateien werden entfernt …"));
|
||||||
|
if (dir is null) { progress.Report((1.0, "Fertig")); return; }
|
||||||
|
TryDelete(exe);
|
||||||
|
TryDelete(Path.Combine(dir, "LICENSE.txt"));
|
||||||
|
CleanupOldFiles(dir);
|
||||||
|
|
||||||
|
// Das laufende Deinstallationsprogramm kann sich nicht selbst löschen → kurz nach dem Beenden per cmd.
|
||||||
|
// rmdir ohne /s entfernt den Ordner nur, wenn er danach leer ist.
|
||||||
|
var self = SelfPath;
|
||||||
|
if (Storage_IsUnder(self, dir))
|
||||||
|
{
|
||||||
|
Process.Start(new ProcessStartInfo("cmd.exe",
|
||||||
|
$"/c ping 127.0.0.1 -n 3 > nul & del /f /q \"{self}\" & del /f /q \"{Path.Combine(dir, "*.old")}\" & rmdir \"{dir}\"")
|
||||||
|
{
|
||||||
|
CreateNoWindow = true, UseShellExecute = false, WindowStyle = ProcessWindowStyle.Hidden,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
TryDelete(Path.Combine(dir, UninstallerName));
|
||||||
|
try { Directory.Delete(dir); } catch { } // nur wenn leer
|
||||||
|
}
|
||||||
|
progress.Report((1.0, "Fertig"));
|
||||||
|
}
|
||||||
|
|
||||||
|
// ---------- Helfer ----------
|
||||||
|
|
||||||
|
/// <summary>Rechnet Fortschritt 0–1 in einen Teilbereich um.</summary>
|
||||||
|
private sealed class Scaled(IProgress<(double, string)> inner, double offset, double factor) : IProgress<(double, string)>
|
||||||
|
{
|
||||||
|
public void Report((double, string) value) => inner.Report((offset + value.Item1 * factor, value.Item2));
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>Laufendes DeskCore beenden (das X versteckt es nur im Infobereich).</summary>
|
||||||
|
private static void CloseRunningApp()
|
||||||
|
{
|
||||||
|
foreach (var p in Process.GetProcessesByName("DeskCore"))
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
p.Kill();
|
||||||
|
p.WaitForExit(10000);
|
||||||
|
}
|
||||||
|
catch { }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void WriteResource(string name, string path)
|
||||||
|
{
|
||||||
|
CleanupOldFiles(Path.GetDirectoryName(path)!);
|
||||||
|
MoveAside(path);
|
||||||
|
for (int attempt = 1; ; attempt++)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
using var s = typeof(Installer).Assembly.GetManifestResourceStream(name)
|
||||||
|
?? throw new InvalidOperationException($"Installationsdatei {name} fehlt.");
|
||||||
|
using var f = File.Create(path);
|
||||||
|
s.CopyTo(f);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
catch (IOException) when (attempt < 10)
|
||||||
|
{
|
||||||
|
Thread.Sleep(500);
|
||||||
|
}
|
||||||
|
catch (IOException) when (attempt >= 10)
|
||||||
|
{
|
||||||
|
throw new IOException($"„{Path.GetFileName(path)}“ wird noch verwendet. Bitte DeskCore beenden (Rechtsklick auf das Symbol im Infobereich → Beenden) und erneut versuchen.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Vorhandene Datei beiseite umbenennen. Das klappt unter Windows auch dann, wenn sie noch geöffnet ist
|
||||||
|
/// (z. B. vom Explorer für das Icon oder vom Virenscanner) – überschreiben würde dagegen fehlschlagen.
|
||||||
|
/// </summary>
|
||||||
|
private static void MoveAside(string path)
|
||||||
|
{
|
||||||
|
if (!File.Exists(path)) return;
|
||||||
|
try { File.Delete(path); return; } catch { }
|
||||||
|
try { File.Move(path, $"{path}.{Guid.NewGuid():N}.old"); } catch { }
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>Beiseitegelegte Dateien früherer Installationen wegräumen (sofern nicht mehr in Benutzung).</summary>
|
||||||
|
private static void CleanupOldFiles(string dir)
|
||||||
|
{
|
||||||
|
if (!Directory.Exists(dir)) return;
|
||||||
|
foreach (var f in Directory.GetFiles(dir, "*.old"))
|
||||||
|
try { File.Delete(f); } catch { }
|
||||||
|
}
|
||||||
|
|
||||||
|
private static string ReadResourceText(string name)
|
||||||
|
{
|
||||||
|
using var s = typeof(Installer).Assembly.GetManifestResourceStream(name);
|
||||||
|
if (s is null) return "";
|
||||||
|
using var r = new StreamReader(s);
|
||||||
|
return r.ReadToEnd().Trim();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void CreateShortcut(string link, string target)
|
||||||
|
{
|
||||||
|
Directory.CreateDirectory(Path.GetDirectoryName(link)!);
|
||||||
|
dynamic shell = Activator.CreateInstance(Type.GetTypeFromProgID("WScript.Shell")!)!;
|
||||||
|
dynamic lnk = shell.CreateShortcut(link);
|
||||||
|
lnk.TargetPath = target;
|
||||||
|
lnk.WorkingDirectory = Path.GetDirectoryName(target);
|
||||||
|
lnk.IconLocation = $"{target},0";
|
||||||
|
lnk.Description = "Desktop-Icons in Kategorien sortieren";
|
||||||
|
lnk.Save();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void DeleteIfPointsTo(string link, string target)
|
||||||
|
{
|
||||||
|
if (!File.Exists(link)) return;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
dynamic shell = Activator.CreateInstance(Type.GetTypeFromProgID("WScript.Shell")!)!;
|
||||||
|
string t = shell.CreateShortcut(link).TargetPath;
|
||||||
|
if (!string.Equals(t, target, StringComparison.OrdinalIgnoreCase)) return;
|
||||||
|
}
|
||||||
|
catch { return; }
|
||||||
|
// Explorer/Indexdienst halten Verknüpfungen manchmal kurz fest → mehrmals versuchen
|
||||||
|
for (int i = 0; i < 10 && File.Exists(link); i++)
|
||||||
|
{
|
||||||
|
try { File.Delete(link); }
|
||||||
|
catch { Thread.Sleep(300); }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void TryDelete(string path)
|
||||||
|
{
|
||||||
|
try { if (File.Exists(path)) File.Delete(path); } catch { }
|
||||||
|
}
|
||||||
|
|
||||||
|
private static bool Storage_IsUnder(string path, string dir) =>
|
||||||
|
(Path.GetFullPath(path)).StartsWith(Path.GetFullPath(dir).TrimEnd('\\') + "\\", StringComparison.OrdinalIgnoreCase);
|
||||||
|
|
||||||
|
public static long DataSize()
|
||||||
|
{
|
||||||
|
long sum = 0;
|
||||||
|
foreach (var d in DataDirs.Where(Directory.Exists))
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
foreach (var f in Directory.EnumerateFiles(d, "*", SearchOption.AllDirectories))
|
||||||
|
try { sum += new FileInfo(f).Length; } catch { }
|
||||||
|
}
|
||||||
|
catch { }
|
||||||
|
}
|
||||||
|
return sum;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static string FormatSize(long bytes) => bytes switch
|
||||||
|
{
|
||||||
|
< 1024 * 1024 => $"{Math.Max(1, bytes / 1024)} KB",
|
||||||
|
< 1024L * 1024 * 1024 => $"{bytes / 1024.0 / 1024:0.#} MB",
|
||||||
|
_ => $"{bytes / 1024.0 / 1024 / 1024:0.##} GB",
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,183 @@
|
|||||||
|
<Window x:Class="DeskCoreSetup.MainWindow"
|
||||||
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||||
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
|
Title="DeskCore Setup" Icon="app.ico" Width="720" Height="500" ResizeMode="CanMinimize"
|
||||||
|
Background="{DynamicResource BaseBrush}" Foreground="{DynamicResource TextBrush}"
|
||||||
|
FontFamily="{DynamicResource UiFont}" FontSize="14"
|
||||||
|
TextOptions.TextFormattingMode="Display" UseLayoutRounding="True"
|
||||||
|
WindowStartupLocation="CenterScreen">
|
||||||
|
|
||||||
|
<WindowChrome.WindowChrome>
|
||||||
|
<WindowChrome CaptionHeight="36" ResizeBorderThickness="0" GlassFrameThickness="0,0,0,1"
|
||||||
|
CornerRadius="0" UseAeroCaptionButtons="False"/>
|
||||||
|
</WindowChrome.WindowChrome>
|
||||||
|
|
||||||
|
<Window.Resources>
|
||||||
|
<Style x:Key="StepText" TargetType="TextBlock">
|
||||||
|
<Setter Property="Margin" Value="0,0,0,14"/>
|
||||||
|
<Setter Property="Foreground" Value="{DynamicResource TextTertiaryBrush}"/>
|
||||||
|
</Style>
|
||||||
|
<Style x:Key="PageTitle" TargetType="TextBlock">
|
||||||
|
<Setter Property="FontFamily" Value="{DynamicResource DisplayFont}"/>
|
||||||
|
<Setter Property="FontSize" Value="24"/>
|
||||||
|
<Setter Property="FontWeight" Value="SemiBold"/>
|
||||||
|
<Setter Property="Margin" Value="0,0,0,12"/>
|
||||||
|
</Style>
|
||||||
|
<Style x:Key="Body" TargetType="TextBlock">
|
||||||
|
<Setter Property="TextWrapping" Value="Wrap"/>
|
||||||
|
<Setter Property="LineHeight" Value="21"/>
|
||||||
|
<Setter Property="Foreground" Value="{DynamicResource TextSecondaryBrush}"/>
|
||||||
|
</Style>
|
||||||
|
</Window.Resources>
|
||||||
|
|
||||||
|
<Grid>
|
||||||
|
<Grid.RowDefinitions>
|
||||||
|
<RowDefinition Height="36"/>
|
||||||
|
<RowDefinition Height="*"/>
|
||||||
|
<RowDefinition Height="Auto"/>
|
||||||
|
</Grid.RowDefinitions>
|
||||||
|
<Grid.ColumnDefinitions>
|
||||||
|
<ColumnDefinition Width="220"/>
|
||||||
|
<ColumnDefinition Width="*"/>
|
||||||
|
</Grid.ColumnDefinitions>
|
||||||
|
|
||||||
|
<!-- Titelleiste -->
|
||||||
|
<Grid Grid.ColumnSpan="2">
|
||||||
|
<StackPanel Orientation="Horizontal" VerticalAlignment="Center" Margin="14,0,0,0">
|
||||||
|
<Image Source="app.ico" Width="16" Height="16" RenderOptions.BitmapScalingMode="HighQuality"/>
|
||||||
|
<TextBlock x:Name="WindowTitle" Text="DeskCore Setup" FontSize="12" Margin="10,0,0,0" VerticalAlignment="Center"/>
|
||||||
|
</StackPanel>
|
||||||
|
<StackPanel Orientation="Horizontal" HorizontalAlignment="Right" VerticalAlignment="Top">
|
||||||
|
<Button Style="{StaticResource CaptionButton}" Content="" Click="Minimize_Click"
|
||||||
|
WindowChrome.IsHitTestVisibleInChrome="True"/>
|
||||||
|
<Button x:Name="CloseButton" Style="{StaticResource CloseCaptionButton}" Content="" Click="Cancel_Click"
|
||||||
|
WindowChrome.IsHitTestVisibleInChrome="True"/>
|
||||||
|
</StackPanel>
|
||||||
|
</Grid>
|
||||||
|
|
||||||
|
<!-- Seitenleiste mit Schritten -->
|
||||||
|
<StackPanel Grid.Row="1" Grid.RowSpan="2" Margin="28,18,20,20">
|
||||||
|
<Image Source="app.png" Width="72" Height="72" HorizontalAlignment="Left" RenderOptions.BitmapScalingMode="HighQuality"/>
|
||||||
|
<TextBlock Text="DeskCore" FontFamily="{DynamicResource DisplayFont}" FontSize="22" FontWeight="SemiBold" Margin="0,14,0,0"/>
|
||||||
|
<TextBlock x:Name="VersionText" Foreground="{DynamicResource TextSecondaryBrush}" FontSize="12" Margin="0,2,0,28"/>
|
||||||
|
<StackPanel x:Name="Steps">
|
||||||
|
<TextBlock x:Name="Step0" Text="Willkommen" Style="{StaticResource StepText}"/>
|
||||||
|
<TextBlock x:Name="Step1" Text="Lizenz" Style="{StaticResource StepText}"/>
|
||||||
|
<TextBlock x:Name="Step2" Text="Optionen" Style="{StaticResource StepText}"/>
|
||||||
|
<TextBlock x:Name="Step3" Text="Installation" Style="{StaticResource StepText}"/>
|
||||||
|
</StackPanel>
|
||||||
|
</StackPanel>
|
||||||
|
|
||||||
|
<!-- Inhalt -->
|
||||||
|
<Border Grid.Row="1" Grid.Column="1" Background="{DynamicResource LayerBrush}" BorderBrush="{DynamicResource LayerStrokeBrush}"
|
||||||
|
BorderThickness="1,1,0,1" CornerRadius="8,0,0,8" Padding="32,28,32,20">
|
||||||
|
<Grid>
|
||||||
|
<!-- 0: Willkommen -->
|
||||||
|
<StackPanel x:Name="PageWelcome">
|
||||||
|
<TextBlock Text="Willkommen bei DeskCore" Style="{StaticResource PageTitle}"/>
|
||||||
|
<TextBlock Style="{StaticResource Body}"
|
||||||
|
Text="DeskCore sortiert deine Desktop-Icons in eigene Kategorien – mit Suche, Desktop-Boxen, automatischem Einsortieren und Rückgängig-Funktion."/>
|
||||||
|
<TextBlock Style="{StaticResource Body}" Margin="0,14,0,0"
|
||||||
|
Text="Der Assistent installiert DeskCore für dein Benutzerkonto und – falls nötig – die benötigte Laufzeit von Microsoft. DeskCore selbst läuft danach ganz normal ohne Administratorrechte."/>
|
||||||
|
<Border x:Name="RuntimeHint" Margin="0,22,0,0" Padding="14,10" CornerRadius="6" Visibility="Collapsed"
|
||||||
|
Background="{DynamicResource ControlFillBrush}" BorderBrush="{DynamicResource ControlStrokeBrush}" BorderThickness="1">
|
||||||
|
<DockPanel>
|
||||||
|
<TextBlock DockPanel.Dock="Left" Text="" FontFamily="{DynamicResource IconFont}" FontSize="16"
|
||||||
|
Foreground="{DynamicResource AccentBrush}" Margin="0,2,12,0" VerticalAlignment="Top"/>
|
||||||
|
<TextBlock x:Name="RuntimeHintText" TextWrapping="Wrap" LineHeight="20"/>
|
||||||
|
</DockPanel>
|
||||||
|
</Border>
|
||||||
|
<Border x:Name="UpdateHint" Margin="0,22,0,0" Padding="14,10" CornerRadius="6" Visibility="Collapsed"
|
||||||
|
Background="{DynamicResource AccentSubtleBrush}" BorderBrush="{DynamicResource AccentSubtleStrokeBrush}" BorderThickness="1">
|
||||||
|
<DockPanel>
|
||||||
|
<TextBlock DockPanel.Dock="Left" Text="" FontFamily="{DynamicResource IconFont}" FontSize="16"
|
||||||
|
Foreground="{DynamicResource AccentBrush}" Margin="0,2,12,0" VerticalAlignment="Top"/>
|
||||||
|
<TextBlock x:Name="UpdateHintText" TextWrapping="Wrap" LineHeight="20"/>
|
||||||
|
</DockPanel>
|
||||||
|
</Border>
|
||||||
|
</StackPanel>
|
||||||
|
|
||||||
|
<!-- 1: Lizenz -->
|
||||||
|
<DockPanel x:Name="PageLicense" Visibility="Collapsed">
|
||||||
|
<TextBlock DockPanel.Dock="Top" Text="Lizenz- und Nutzungsbedingungen" Style="{StaticResource PageTitle}"/>
|
||||||
|
<CheckBox x:Name="AcceptLicense" DockPanel.Dock="Bottom" Margin="0,14,0,0" Click="AcceptLicense_Click"
|
||||||
|
Content="Ich akzeptiere die Lizenz- und Nutzungsbedingungen"/>
|
||||||
|
<Border Background="{DynamicResource ControlFillBrush}" BorderBrush="{DynamicResource ControlStrokeBrush}"
|
||||||
|
BorderThickness="1" CornerRadius="6">
|
||||||
|
<ScrollViewer VerticalScrollBarVisibility="Auto">
|
||||||
|
<TextBlock x:Name="LicenseText" TextWrapping="Wrap" FontSize="12.5" LineHeight="18" Margin="14,10"/>
|
||||||
|
</ScrollViewer>
|
||||||
|
</Border>
|
||||||
|
</DockPanel>
|
||||||
|
|
||||||
|
<!-- 2: Optionen -->
|
||||||
|
<StackPanel x:Name="PageOptions" Visibility="Collapsed">
|
||||||
|
<TextBlock Text="Optionen" Style="{StaticResource PageTitle}"/>
|
||||||
|
<TextBlock Text="Installationsordner" FontWeight="SemiBold" FontSize="13" Margin="0,4,0,8"/>
|
||||||
|
<DockPanel>
|
||||||
|
<Button DockPanel.Dock="Right" Content="Ändern …" Margin="8,0,0,0" Click="ChangeDir_Click"/>
|
||||||
|
<TextBox x:Name="DirBox"/>
|
||||||
|
</DockPanel>
|
||||||
|
<CheckBox x:Name="DesktopLinkBox" Content="Verknüpfung auf dem Desktop" Margin="0,24,0,0" IsChecked="True"/>
|
||||||
|
<CheckBox x:Name="StartMenuBox" Content="Eintrag im Startmenü" Margin="0,12,0,0" IsChecked="True" IsEnabled="False"/>
|
||||||
|
<CheckBox x:Name="AutostartBox" Content="Mit Windows starten (unauffällig im Infobereich)" Margin="0,12,0,0"/>
|
||||||
|
<CheckBox x:Name="RuntimeBox" Margin="0,12,0,0" IsChecked="True" Visibility="Collapsed"
|
||||||
|
Content="Microsoft .NET 9 Desktop Runtime automatisch installieren (benötigt, ca. 55 MB)"/>
|
||||||
|
</StackPanel>
|
||||||
|
|
||||||
|
<!-- 3: Fortschritt / Fertig -->
|
||||||
|
<StackPanel x:Name="PageProgress" Visibility="Collapsed">
|
||||||
|
<TextBlock x:Name="ProgressTitle" Text="DeskCore wird installiert …" Style="{StaticResource PageTitle}"/>
|
||||||
|
<TextBlock x:Name="ProgressText" Style="{StaticResource Body}" Text="Einen Moment bitte."/>
|
||||||
|
<Border x:Name="ProgressTrack" Height="4" CornerRadius="2" Margin="0,22,0,0" Background="{DynamicResource SubtleSelectedBrush}">
|
||||||
|
<Border x:Name="ProgressFill" HorizontalAlignment="Left" Width="0" CornerRadius="2" Background="{DynamicResource AccentBrush}"/>
|
||||||
|
</Border>
|
||||||
|
<StackPanel x:Name="DonePanel" Visibility="Collapsed" Margin="0,26,0,0">
|
||||||
|
<StackPanel Orientation="Horizontal">
|
||||||
|
<Border Width="28" Height="28" CornerRadius="14" Background="{DynamicResource SuccessBrush}">
|
||||||
|
<TextBlock Text="" FontFamily="{DynamicResource IconFont}" FontSize="13" Foreground="White"
|
||||||
|
HorizontalAlignment="Center" VerticalAlignment="Center"/>
|
||||||
|
</Border>
|
||||||
|
<TextBlock x:Name="DoneText" VerticalAlignment="Center" Margin="12,0,0,0" FontWeight="SemiBold"/>
|
||||||
|
</StackPanel>
|
||||||
|
<Border x:Name="RuntimeMissing" Margin="0,18,0,0" Padding="14,10" CornerRadius="6" Visibility="Collapsed"
|
||||||
|
Background="{DynamicResource AccentSubtleBrush}" BorderBrush="{DynamicResource AccentSubtleStrokeBrush}" BorderThickness="1">
|
||||||
|
<StackPanel>
|
||||||
|
<TextBlock TextWrapping="Wrap" LineHeight="20"
|
||||||
|
Text="Damit DeskCore startet, wird noch die kostenlose „Microsoft .NET 9 Desktop Runtime“ benötigt."/>
|
||||||
|
<Button Content="Download-Seite von Microsoft öffnen" HorizontalAlignment="Left" Margin="0,10,0,0" Click="OpenRuntimePage_Click"/>
|
||||||
|
</StackPanel>
|
||||||
|
</Border>
|
||||||
|
<CheckBox x:Name="LaunchBox" Content="DeskCore jetzt starten" IsChecked="True" Margin="0,22,0,0"/>
|
||||||
|
</StackPanel>
|
||||||
|
</StackPanel>
|
||||||
|
|
||||||
|
<!-- Deinstallation -->
|
||||||
|
<StackPanel x:Name="PageUninstall" Visibility="Collapsed">
|
||||||
|
<TextBlock Text="DeskCore deinstallieren" Style="{StaticResource PageTitle}"/>
|
||||||
|
<TextBlock Style="{StaticResource Body}"
|
||||||
|
Text="DeskCore wird von deinem PC entfernt: Programm, Verknüpfungen, Autostart und der Eintrag in den Windows-Einstellungen."/>
|
||||||
|
<Border Margin="0,22,0,0" Padding="16,14" CornerRadius="6" Background="{DynamicResource ControlFillBrush}"
|
||||||
|
BorderBrush="{DynamicResource ControlStrokeBrush}" BorderThickness="1">
|
||||||
|
<StackPanel>
|
||||||
|
<TextBlock Text="Deine Kategorien bleiben standardmäßig erhalten" FontWeight="SemiBold"/>
|
||||||
|
<TextBlock x:Name="DataInfo" Style="{StaticResource Body}" FontSize="12.5" Margin="0,4,0,12"/>
|
||||||
|
<CheckBox x:Name="RemoveDataBox" Content="Auch Kategorien und Einstellungen entfernen (Papierkorb)"
|
||||||
|
Click="RemoveDataBox_Click"/>
|
||||||
|
<TextBlock x:Name="RemoveDataWarning" Visibility="Collapsed" Margin="30,8,0,0" TextWrapping="Wrap" FontSize="12.5"
|
||||||
|
Foreground="{DynamicResource DangerBrush}"
|
||||||
|
Text="Achtung: Dateien und Ordner, die nur noch in deinen Kategorien liegen, wandern damit in den Papierkorb."/>
|
||||||
|
</StackPanel>
|
||||||
|
</Border>
|
||||||
|
</StackPanel>
|
||||||
|
</Grid>
|
||||||
|
</Border>
|
||||||
|
|
||||||
|
<!-- Fußleiste -->
|
||||||
|
<StackPanel Grid.Row="2" Grid.Column="1" Orientation="Horizontal" HorizontalAlignment="Right" Margin="0,14,20,18">
|
||||||
|
<Button x:Name="BackButton" Content="Zurück" Width="110" Margin="0,0,8,0" Click="Back_Click"/>
|
||||||
|
<Button x:Name="NextButton" Content="Weiter" Width="130" Margin="0,0,8,0" Style="{StaticResource AccentButton}" IsDefault="True" Click="Next_Click"/>
|
||||||
|
<Button x:Name="CancelButton" Content="Abbrechen" Width="110" Click="Cancel_Click"/>
|
||||||
|
</StackPanel>
|
||||||
|
</Grid>
|
||||||
|
</Window>
|
||||||
@@ -0,0 +1,279 @@
|
|||||||
|
using System.Diagnostics;
|
||||||
|
using System.IO;
|
||||||
|
using System.Windows;
|
||||||
|
using System.Windows.Controls;
|
||||||
|
using System.Windows.Media;
|
||||||
|
using System.Windows.Media.Animation;
|
||||||
|
|
||||||
|
namespace DeskCoreSetup;
|
||||||
|
|
||||||
|
public partial class MainWindow : Window
|
||||||
|
{
|
||||||
|
private readonly bool _uninstall;
|
||||||
|
private int _page;
|
||||||
|
private bool _busy;
|
||||||
|
private bool _done;
|
||||||
|
private string? _installedExe;
|
||||||
|
|
||||||
|
public MainWindow(bool uninstall)
|
||||||
|
{
|
||||||
|
InitializeComponent();
|
||||||
|
_uninstall = uninstall;
|
||||||
|
VersionText.Text = $"Version {Installer.Version}";
|
||||||
|
LicenseText.Text = Installer.LicenseText;
|
||||||
|
|
||||||
|
DirBox.Text = Installer.InstalledDir ?? Installer.DefaultDir;
|
||||||
|
DesktopLinkBox.IsChecked = Installer.InstalledDir is null || Installer.DesktopLinkExists;
|
||||||
|
AutostartBox.IsChecked = Installer.AutostartEnabled;
|
||||||
|
|
||||||
|
if (!Runtime.IsInstalled)
|
||||||
|
{
|
||||||
|
RuntimeHint.Visibility = Visibility.Visible;
|
||||||
|
RuntimeBox.Visibility = Visibility.Visible;
|
||||||
|
RuntimeHintText.Text = Runtime.Is64BitWindows
|
||||||
|
? "DeskCore benötigt die kostenlose „Microsoft .NET 9 Desktop Runtime“. Sie fehlt auf diesem PC und wird bei der " +
|
||||||
|
"Installation automatisch von Microsoft geladen (ca. 55 MB) und mitinstalliert."
|
||||||
|
: "DeskCore benötigt ein 64-Bit-Windows (Windows 10 oder 11) und kann auf diesem PC leider nicht installiert werden.";
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Installer.InstalledDir is null && Installer.LegacyInstallDir is not null)
|
||||||
|
{
|
||||||
|
UpdateHint.Visibility = Visibility.Visible;
|
||||||
|
UpdateHintText.Text = "Die bisherige Version „DeskHub“ wird durch DeskCore ersetzt. Deine Kategorien und Einstellungen werden übernommen.";
|
||||||
|
}
|
||||||
|
else if (Installer.InstalledDir is not null)
|
||||||
|
{
|
||||||
|
UpdateHint.Visibility = Visibility.Visible;
|
||||||
|
UpdateHintText.Text = Installer.InstalledVersion == Installer.Version
|
||||||
|
? $"DeskCore {Installer.Version} ist bereits installiert und wird neu installiert. Deine Kategorien und Einstellungen bleiben erhalten."
|
||||||
|
: $"Die vorhandene Installation (Version {Installer.InstalledVersion}) wird durch Version {Installer.Version} ersetzt. Deine Kategorien und Einstellungen bleiben erhalten.";
|
||||||
|
}
|
||||||
|
|
||||||
|
if (_uninstall)
|
||||||
|
{
|
||||||
|
Title = WindowTitle.Text = "DeskCore deinstallieren";
|
||||||
|
Steps.Visibility = Visibility.Collapsed;
|
||||||
|
ShowOnly(PageUninstall);
|
||||||
|
NextButton.Content = "Deinstallieren";
|
||||||
|
BackButton.Visibility = Visibility.Collapsed;
|
||||||
|
LoadDataInfo();
|
||||||
|
}
|
||||||
|
else ShowPage(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
// ---------- Seiten ----------
|
||||||
|
|
||||||
|
private void ShowOnly(UIElement page)
|
||||||
|
{
|
||||||
|
foreach (var p in new UIElement[] { PageWelcome, PageLicense, PageOptions, PageProgress, PageUninstall })
|
||||||
|
p.Visibility = p == page ? Visibility.Visible : Visibility.Collapsed;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ShowPage(int page)
|
||||||
|
{
|
||||||
|
_page = page;
|
||||||
|
ShowOnly(page switch { 0 => PageWelcome, 1 => PageLicense, 2 => PageOptions, _ => PageProgress });
|
||||||
|
|
||||||
|
var steps = new[] { Step0, Step1, Step2, Step3 };
|
||||||
|
for (int i = 0; i < steps.Length; i++)
|
||||||
|
{
|
||||||
|
var label = ((string)steps[i].Tag ?? (string)(steps[i].Tag = steps[i].Text));
|
||||||
|
steps[i].Text = i < page || (_done && i == page) ? $"✓ {label}" : label;
|
||||||
|
steps[i].FontWeight = i == page ? FontWeights.SemiBold : FontWeights.Normal;
|
||||||
|
steps[i].Foreground = (Brush)FindResource(i == page ? "TextBrush" : i < page ? "TextSecondaryBrush" : "TextTertiaryBrush");
|
||||||
|
}
|
||||||
|
|
||||||
|
BackButton.Visibility = page is 1 or 2 ? Visibility.Visible : Visibility.Hidden;
|
||||||
|
NextButton.Content = page switch { 2 => "Installieren", 3 => "Fertigstellen", _ => "Weiter" };
|
||||||
|
NextButton.IsEnabled = page != 1 || AcceptLicense.IsChecked == true;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void AcceptLicense_Click(object sender, RoutedEventArgs e) => NextButton.IsEnabled = AcceptLicense.IsChecked == true;
|
||||||
|
|
||||||
|
private void Back_Click(object sender, RoutedEventArgs e)
|
||||||
|
{
|
||||||
|
if (!_busy && _page > 0) ShowPage(_page - 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
private async void Next_Click(object sender, RoutedEventArgs e)
|
||||||
|
{
|
||||||
|
if (_busy) return;
|
||||||
|
|
||||||
|
if (_uninstall)
|
||||||
|
{
|
||||||
|
if (_done) { Close(); return; }
|
||||||
|
await RunUninstall();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (_page)
|
||||||
|
{
|
||||||
|
case 0: ShowPage(1); break;
|
||||||
|
case 1 when AcceptLicense.IsChecked == true: ShowPage(2); break;
|
||||||
|
case 2:
|
||||||
|
var dir = DirBox.Text.Trim();
|
||||||
|
if (!IsFullPath(dir) || dir.IndexOfAny(Path.GetInvalidPathChars()) >= 0)
|
||||||
|
{
|
||||||
|
MessageBox.Show(this, "Bitte einen gültigen Ordner angeben, z. B. C:\\Programme\\DeskCore.", "DeskCore Setup");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
await RunInstall(dir);
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
if (LaunchBox.IsChecked == true && _installedExe is not null)
|
||||||
|
Installer.StartUnelevated(_installedExe); // ohne Adminrechte, sonst klappt Ziehen vom Desktop nicht
|
||||||
|
Close();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ChangeDir_Click(object sender, RoutedEventArgs e)
|
||||||
|
{
|
||||||
|
using var dlg = new System.Windows.Forms.FolderBrowserDialog
|
||||||
|
{
|
||||||
|
Description = "Installationsordner wählen",
|
||||||
|
SelectedPath = Directory.Exists(DirBox.Text) ? DirBox.Text : Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData),
|
||||||
|
ShowNewFolderButton = true,
|
||||||
|
};
|
||||||
|
if (dlg.ShowDialog() != System.Windows.Forms.DialogResult.OK) return;
|
||||||
|
var chosen = dlg.SelectedPath;
|
||||||
|
// wie bei üblichen Installern: Unterordner "DeskCore" anhängen
|
||||||
|
DirBox.Text = Path.GetFileName(chosen.TrimEnd('\\')).Equals("DeskCore", StringComparison.OrdinalIgnoreCase)
|
||||||
|
? chosen : Path.Combine(chosen, "DeskCore");
|
||||||
|
}
|
||||||
|
|
||||||
|
// ---------- Installation ----------
|
||||||
|
|
||||||
|
private async Task RunInstall(string dir)
|
||||||
|
{
|
||||||
|
_busy = true;
|
||||||
|
ShowPage(3);
|
||||||
|
SetButtons(false);
|
||||||
|
var progress = new Progress<(double Value, string Text)>(p => SetProgress(p.Value, p.Text));
|
||||||
|
bool desktop = DesktopLinkBox.IsChecked == true, autostart = AutostartBox.IsChecked == true;
|
||||||
|
bool runtime = RuntimeBox.Visibility == Visibility.Visible && RuntimeBox.IsChecked == true;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
await Task.Run(() => Installer.Install(dir, desktop, autostart, progress, runtime));
|
||||||
|
_installedExe = Path.Combine(dir, Installer.ExeName);
|
||||||
|
_done = true;
|
||||||
|
ProgressTitle.Text = "Installation abgeschlossen";
|
||||||
|
ProgressText.Text = $"DeskCore wurde in {dir} installiert. Du findest es im Startmenü" + (desktop ? " und auf dem Desktop." : ".");
|
||||||
|
DoneText.Text = "Alles bereit!";
|
||||||
|
DonePanel.Visibility = Visibility.Visible;
|
||||||
|
if (!Runtime.IsInstalled)
|
||||||
|
{
|
||||||
|
// Laufzeit fehlt weiterhin (abgewählt) → Hinweis statt Startversuch
|
||||||
|
DoneText.Text = "DeskCore ist installiert";
|
||||||
|
RuntimeMissing.Visibility = Visibility.Visible;
|
||||||
|
LaunchBox.IsChecked = false;
|
||||||
|
LaunchBox.IsEnabled = false;
|
||||||
|
}
|
||||||
|
ShowPage(3);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
ProgressTitle.Text = "Installation fehlgeschlagen";
|
||||||
|
ProgressText.Text = ex.Message;
|
||||||
|
ProgressText.Foreground = (Brush)FindResource("DangerBrush");
|
||||||
|
NextButton.Content = "Schließen";
|
||||||
|
_installedExe = null;
|
||||||
|
}
|
||||||
|
_busy = false;
|
||||||
|
NextButton.IsEnabled = true;
|
||||||
|
CloseButton.IsEnabled = true;
|
||||||
|
BackButton.Visibility = Visibility.Hidden;
|
||||||
|
CancelButton.Visibility = Visibility.Collapsed;
|
||||||
|
}
|
||||||
|
|
||||||
|
// ---------- Deinstallation ----------
|
||||||
|
|
||||||
|
private async void LoadDataInfo()
|
||||||
|
{
|
||||||
|
var root = Installer.DataDirs[0];
|
||||||
|
if (!Directory.Exists(root))
|
||||||
|
{
|
||||||
|
DataInfo.Text = "Es wurden keine Kategorien gefunden.";
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
DataInfo.Text = $"Sie liegen in {root}. Größe wird berechnet …";
|
||||||
|
var size = await Task.Run(Installer.DataSize);
|
||||||
|
DataInfo.Text = $"Sie liegen in {root} ({Installer.FormatSize(size)}) und bleiben dort, falls du DeskCore später wieder installierst.";
|
||||||
|
}
|
||||||
|
|
||||||
|
private void RemoveDataBox_Click(object sender, RoutedEventArgs e) =>
|
||||||
|
RemoveDataWarning.Visibility = RemoveDataBox.IsChecked == true ? Visibility.Visible : Visibility.Collapsed;
|
||||||
|
|
||||||
|
private async Task RunUninstall()
|
||||||
|
{
|
||||||
|
_busy = true;
|
||||||
|
bool removeData = RemoveDataBox.IsChecked == true;
|
||||||
|
ShowOnly(PageProgress);
|
||||||
|
ProgressTitle.Text = "DeskCore wird entfernt …";
|
||||||
|
LaunchBox.Visibility = Visibility.Collapsed;
|
||||||
|
SetButtons(false);
|
||||||
|
var progress = new Progress<(double Value, string Text)>(p => SetProgress(p.Value, p.Text));
|
||||||
|
try
|
||||||
|
{
|
||||||
|
await Task.Run(() => Installer.Uninstall(removeData, progress));
|
||||||
|
ProgressTitle.Text = "Deinstallation abgeschlossen";
|
||||||
|
ProgressText.Text = removeData
|
||||||
|
? "DeskCore, deine Kategorien und Einstellungen wurden entfernt (die Daten liegen im Papierkorb)."
|
||||||
|
: "DeskCore wurde entfernt. Deine Kategorien liegen weiterhin in " + Installer.DataDirs[0] + ".";
|
||||||
|
DoneText.Text = "Fertig";
|
||||||
|
DonePanel.Visibility = Visibility.Visible;
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
ProgressTitle.Text = "Deinstallation fehlgeschlagen";
|
||||||
|
ProgressText.Text = ex.Message;
|
||||||
|
}
|
||||||
|
_done = true;
|
||||||
|
_busy = false;
|
||||||
|
CloseButton.IsEnabled = true;
|
||||||
|
NextButton.Content = "Schließen";
|
||||||
|
NextButton.IsEnabled = true;
|
||||||
|
CancelButton.Visibility = Visibility.Collapsed;
|
||||||
|
}
|
||||||
|
|
||||||
|
// ---------- Helfer ----------
|
||||||
|
|
||||||
|
private void SetButtons(bool enabled)
|
||||||
|
{
|
||||||
|
NextButton.IsEnabled = enabled;
|
||||||
|
BackButton.IsEnabled = enabled;
|
||||||
|
CancelButton.IsEnabled = enabled;
|
||||||
|
CloseButton.IsEnabled = enabled;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void SetProgress(double value, string text)
|
||||||
|
{
|
||||||
|
if (!_done) ProgressText.Text = text;
|
||||||
|
var target = Math.Max(0, ProgressTrack.ActualWidth * value);
|
||||||
|
ProgressFill.BeginAnimation(WidthProperty,
|
||||||
|
new DoubleAnimation(target, TimeSpan.FromMilliseconds(250)) { EasingFunction = new CubicEase() });
|
||||||
|
}
|
||||||
|
|
||||||
|
private static bool IsFullPath(string p) =>
|
||||||
|
p.Length >= 3 && char.IsLetter(p[0]) && p[1] == ':' && (p[2] == '\\' || p[2] == '/');
|
||||||
|
|
||||||
|
private void OpenRuntimePage_Click(object sender, RoutedEventArgs e) =>
|
||||||
|
Process.Start(new ProcessStartInfo(Runtime.DownloadPage) { UseShellExecute = true });
|
||||||
|
|
||||||
|
private void Minimize_Click(object sender, RoutedEventArgs e) => WindowState = WindowState.Minimized;
|
||||||
|
|
||||||
|
private void Cancel_Click(object sender, RoutedEventArgs e)
|
||||||
|
{
|
||||||
|
if (_busy) return;
|
||||||
|
if (!_done && !_uninstall && _page > 0 &&
|
||||||
|
MessageBox.Show(this, "Installation wirklich abbrechen?", "DeskCore Setup", MessageBoxButton.YesNo, MessageBoxImage.Question) != MessageBoxResult.Yes)
|
||||||
|
return;
|
||||||
|
Close();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void OnClosing(System.ComponentModel.CancelEventArgs e)
|
||||||
|
{
|
||||||
|
if (_busy) e.Cancel = true; // während der Installation nicht schließen
|
||||||
|
base.OnClosing(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
|
||||||
|
<assemblyIdentity version="1.0.0.0" name="DeskCore.Setup"/>
|
||||||
|
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
|
||||||
|
<security>
|
||||||
|
<requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
|
||||||
|
<!-- Der Installer läuft mit Administratorrechten: so kann er die von Microsoft benötigte
|
||||||
|
.NET-Laufzeit ohne zweite Nachfrage mitinstallieren. DeskCore selbst startet danach ohne Adminrechte. -->
|
||||||
|
<requestedExecutionLevel level="requireAdministrator" uiAccess="false"/>
|
||||||
|
</requestedPrivileges>
|
||||||
|
</security>
|
||||||
|
</trustInfo>
|
||||||
|
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
|
||||||
|
<application>
|
||||||
|
<!-- Windows 10 und 11 -->
|
||||||
|
<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/>
|
||||||
|
</application>
|
||||||
|
</compatibility>
|
||||||
|
<application xmlns="urn:schemas-microsoft-com:asm.v3">
|
||||||
|
<windowsSettings>
|
||||||
|
<dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>
|
||||||
|
</windowsSettings>
|
||||||
|
</application>
|
||||||
|
</assembly>
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
{
|
||||||
|
"runtimeTarget": {
|
||||||
|
"name": ".NETCoreApp,Version=v9.0/win-x64",
|
||||||
|
"signature": ""
|
||||||
|
},
|
||||||
|
"compilationOptions": {},
|
||||||
|
"targets": {
|
||||||
|
".NETCoreApp,Version=v9.0": {},
|
||||||
|
".NETCoreApp,Version=v9.0/win-x64": {
|
||||||
|
"DeskCore-Setup/1.0.0": {
|
||||||
|
"runtime": {
|
||||||
|
"DeskCore-Setup.dll": {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"libraries": {
|
||||||
|
"DeskCore-Setup/1.0.0": {
|
||||||
|
"type": "project",
|
||||||
|
"serviceable": false,
|
||||||
|
"sha512": ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,20 @@
|
|||||||
|
{
|
||||||
|
"runtimeOptions": {
|
||||||
|
"tfm": "net9.0",
|
||||||
|
"frameworks": [
|
||||||
|
{
|
||||||
|
"name": "Microsoft.NETCore.App",
|
||||||
|
"version": "9.0.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Microsoft.WindowsDesktop.App",
|
||||||
|
"version": "9.0.0"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"configProperties": {
|
||||||
|
"System.Reflection.Metadata.MetadataUpdater.IsSupported": false,
|
||||||
|
"System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": false,
|
||||||
|
"CSWINRT_USE_WINDOWS_UI_XAML_PROJECTIONS": false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,59 @@
|
|||||||
|
{
|
||||||
|
"format": 1,
|
||||||
|
"restore": {
|
||||||
|
"C:\\Users\\Viper\\Desktop\\Programme\\DeskCore-Source\\Setup\\DeskCoreSetup.csproj": {}
|
||||||
|
},
|
||||||
|
"projects": {
|
||||||
|
"C:\\Users\\Viper\\Desktop\\Programme\\DeskCore-Source\\Setup\\DeskCoreSetup.csproj": {
|
||||||
|
"version": "1.0.4",
|
||||||
|
"restore": {
|
||||||
|
"projectUniqueName": "C:\\Users\\Viper\\Desktop\\Programme\\DeskCore-Source\\Setup\\DeskCoreSetup.csproj",
|
||||||
|
"projectName": "DeskCore-Setup",
|
||||||
|
"projectPath": "C:\\Users\\Viper\\Desktop\\Programme\\DeskCore-Source\\Setup\\DeskCoreSetup.csproj",
|
||||||
|
"packagesPath": "C:\\Users\\Viper\\.nuget\\packages\\",
|
||||||
|
"outputPath": "C:\\Users\\Viper\\Desktop\\Programme\\DeskCore-Source\\Setup\\obj\\",
|
||||||
|
"projectStyle": "PackageReference",
|
||||||
|
"configFilePaths": [
|
||||||
|
"C:\\Users\\Viper\\AppData\\Roaming\\NuGet\\NuGet.Config"
|
||||||
|
],
|
||||||
|
"originalTargetFrameworks": [
|
||||||
|
"net48"
|
||||||
|
],
|
||||||
|
"sources": {
|
||||||
|
"https://api.nuget.org/v3/index.json": {}
|
||||||
|
},
|
||||||
|
"frameworks": {
|
||||||
|
"net48": {
|
||||||
|
"targetAlias": "net48",
|
||||||
|
"projectReferences": {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"warningProperties": {
|
||||||
|
"warnAsError": [
|
||||||
|
"NU1605"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"restoreAuditProperties": {
|
||||||
|
"enableAudit": "true",
|
||||||
|
"auditLevel": "low",
|
||||||
|
"auditMode": "direct"
|
||||||
|
},
|
||||||
|
"SdkAnalysisLevel": "10.0.100"
|
||||||
|
},
|
||||||
|
"frameworks": {
|
||||||
|
"net48": {
|
||||||
|
"targetAlias": "net48",
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.NETFramework.ReferenceAssemblies": {
|
||||||
|
"suppressParent": "All",
|
||||||
|
"target": "Package",
|
||||||
|
"version": "[1.0.3, )",
|
||||||
|
"autoReferenced": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\10.0.112\\RuntimeIdentifierGraph.json"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8" standalone="no"?>
|
||||||
|
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<PropertyGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
|
||||||
|
<RestoreSuccess Condition=" '$(RestoreSuccess)' == '' ">True</RestoreSuccess>
|
||||||
|
<RestoreTool Condition=" '$(RestoreTool)' == '' ">NuGet</RestoreTool>
|
||||||
|
<ProjectAssetsFile Condition=" '$(ProjectAssetsFile)' == '' ">$(MSBuildThisFileDirectory)project.assets.json</ProjectAssetsFile>
|
||||||
|
<NuGetPackageRoot Condition=" '$(NuGetPackageRoot)' == '' ">$(UserProfile)\.nuget\packages\</NuGetPackageRoot>
|
||||||
|
<NuGetPackageFolders Condition=" '$(NuGetPackageFolders)' == '' ">C:\Users\Viper\.nuget\packages\</NuGetPackageFolders>
|
||||||
|
<NuGetProjectStyle Condition=" '$(NuGetProjectStyle)' == '' ">PackageReference</NuGetProjectStyle>
|
||||||
|
<NuGetToolVersion Condition=" '$(NuGetToolVersion)' == '' ">7.0.0</NuGetToolVersion>
|
||||||
|
</PropertyGroup>
|
||||||
|
<ItemGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
|
||||||
|
<SourceRoot Include="C:\Users\Viper\.nuget\packages\" />
|
||||||
|
</ItemGroup>
|
||||||
|
</Project>
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8" standalone="no"?>
|
||||||
|
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
|
||||||
|
<Import Project="$(NuGetPackageRoot)microsoft.netframework.referenceassemblies.net48\1.0.3\build\Microsoft.NETFramework.ReferenceAssemblies.net48.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.netframework.referenceassemblies.net48\1.0.3\build\Microsoft.NETFramework.ReferenceAssemblies.net48.targets')" />
|
||||||
|
</ImportGroup>
|
||||||
|
</Project>
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
// <autogenerated />
|
||||||
|
using System;
|
||||||
|
using System.Reflection;
|
||||||
|
[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")]
|
||||||
Binary file not shown.
@@ -0,0 +1,77 @@
|
|||||||
|
#pragma checksum "..\..\..\App.xaml" "{ff1816ec-aa5e-4d10-87f7-6f4963833460}" "2F55484CCDC4F93150C83267DEA1BE82F9151116"
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <auto-generated>
|
||||||
|
// This code was generated by a tool.
|
||||||
|
//
|
||||||
|
// Changes to this file may cause incorrect behavior and will be lost if
|
||||||
|
// the code is regenerated.
|
||||||
|
// </auto-generated>
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Diagnostics;
|
||||||
|
using System.Windows;
|
||||||
|
using System.Windows.Automation;
|
||||||
|
using System.Windows.Controls;
|
||||||
|
using System.Windows.Controls.Primitives;
|
||||||
|
using System.Windows.Controls.Ribbon;
|
||||||
|
using System.Windows.Data;
|
||||||
|
using System.Windows.Documents;
|
||||||
|
using System.Windows.Forms.Integration;
|
||||||
|
using System.Windows.Ink;
|
||||||
|
using System.Windows.Input;
|
||||||
|
using System.Windows.Markup;
|
||||||
|
using System.Windows.Media;
|
||||||
|
using System.Windows.Media.Animation;
|
||||||
|
using System.Windows.Media.Effects;
|
||||||
|
using System.Windows.Media.Imaging;
|
||||||
|
using System.Windows.Media.Media3D;
|
||||||
|
using System.Windows.Media.TextFormatting;
|
||||||
|
using System.Windows.Navigation;
|
||||||
|
using System.Windows.Shapes;
|
||||||
|
using System.Windows.Shell;
|
||||||
|
|
||||||
|
|
||||||
|
namespace DeskCoreSetup {
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// App
|
||||||
|
/// </summary>
|
||||||
|
public partial class App : System.Windows.Application {
|
||||||
|
|
||||||
|
private bool _contentLoaded;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// InitializeComponent
|
||||||
|
/// </summary>
|
||||||
|
[System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "10.0.12.0")]
|
||||||
|
public void InitializeComponent() {
|
||||||
|
if (_contentLoaded) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
_contentLoaded = true;
|
||||||
|
System.Uri resourceLocater = new System.Uri("/DeskCore-Setup;component/app.xaml", System.UriKind.Relative);
|
||||||
|
|
||||||
|
#line 1 "..\..\..\App.xaml"
|
||||||
|
System.Windows.Application.LoadComponent(this, resourceLocater);
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Application Entry Point.
|
||||||
|
/// </summary>
|
||||||
|
[System.STAThreadAttribute()]
|
||||||
|
[System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "10.0.12.0")]
|
||||||
|
public static void Main() {
|
||||||
|
DeskCoreSetup.App app = new DeskCoreSetup.App();
|
||||||
|
app.InitializeComponent();
|
||||||
|
app.Run();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,6 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<configuration>
|
||||||
|
<startup>
|
||||||
|
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8" />
|
||||||
|
</startup>
|
||||||
|
</configuration>
|
||||||
Binary file not shown.
@@ -0,0 +1,20 @@
|
|||||||
|
DeskCore-Setup
|
||||||
|
|
||||||
|
|
||||||
|
winexe
|
||||||
|
C#
|
||||||
|
.cs
|
||||||
|
C:\Users\Viper\Desktop\Programme\DeskCore-Source\Setup\obj\Release\net48\
|
||||||
|
DeskCoreSetup
|
||||||
|
none
|
||||||
|
false
|
||||||
|
TRACE;RELEASE;NETFRAMEWORK;NET48;NET30_OR_GREATER;NET35_OR_GREATER;NET40_OR_GREATER;NET45_OR_GREATER;NET451_OR_GREATER;NET452_OR_GREATER;NET46_OR_GREATER;NET461_OR_GREATER;NET462_OR_GREATER;NET47_OR_GREATER;NET471_OR_GREATER;NET472_OR_GREATER;NET48_OR_GREATER
|
||||||
|
C:\Users\Viper\Desktop\Programme\DeskCore-Source\Setup\App.xaml
|
||||||
|
4-1182040411
|
||||||
|
|
||||||
|
5-706554335
|
||||||
|
241796289289
|
||||||
|
MainWindow.xaml;..\Themes\Colors.Light.xaml;..\Themes\Colors.Dark.xaml;..\Themes\Controls.xaml;
|
||||||
|
|
||||||
|
False
|
||||||
|
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <auto-generated>
|
||||||
|
// This code was generated by a tool.
|
||||||
|
//
|
||||||
|
// Changes to this file may cause incorrect behavior and will be lost if
|
||||||
|
// the code is regenerated.
|
||||||
|
// </auto-generated>
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Reflection;
|
||||||
|
|
||||||
|
[assembly: System.Reflection.AssemblyCompanyAttribute("M_Viper")]
|
||||||
|
[assembly: System.Reflection.AssemblyConfigurationAttribute("Release")]
|
||||||
|
[assembly: System.Reflection.AssemblyCopyrightAttribute("Copyright (c) M_Viper. Alle Rechte vorbehalten.")]
|
||||||
|
[assembly: System.Reflection.AssemblyDescriptionAttribute("Installiert DeskCore")]
|
||||||
|
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.4.0")]
|
||||||
|
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.4")]
|
||||||
|
[assembly: System.Reflection.AssemblyProductAttribute("DeskCore Setup")]
|
||||||
|
[assembly: System.Reflection.AssemblyTitleAttribute("DeskCore Setup")]
|
||||||
|
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.4.0")]
|
||||||
|
[assembly: System.Resources.NeutralResourcesLanguageAttribute("de-DE")]
|
||||||
|
|
||||||
|
// Von der MSBuild WriteCodeFragment-Klasse generiert.
|
||||||
|
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
d2e033b6ce1399c33b5b36da4d426df28d32a528502994c6fd13241554523b24
|
||||||
Binary file not shown.
Binary file not shown.
@@ -0,0 +1 @@
|
|||||||
|
054b30b1baba2269cbcd4852a291a982fdd2874935a858bccfe0f353f3966d8b
|
||||||
@@ -0,0 +1,471 @@
|
|||||||
|
{
|
||||||
|
"version": 3,
|
||||||
|
"targets": {
|
||||||
|
".NETFramework,Version=v4.8": {
|
||||||
|
"Microsoft.NETFramework.ReferenceAssemblies/1.0.3": {
|
||||||
|
"type": "package",
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.NETFramework.ReferenceAssemblies.net48": "1.0.3"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Microsoft.NETFramework.ReferenceAssemblies.net48/1.0.3": {
|
||||||
|
"type": "package",
|
||||||
|
"build": {
|
||||||
|
"build/Microsoft.NETFramework.ReferenceAssemblies.net48.targets": {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"libraries": {
|
||||||
|
"Microsoft.NETFramework.ReferenceAssemblies/1.0.3": {
|
||||||
|
"sha512": "vUc9Npcs14QsyOD01tnv/m8sQUnGTGOw1BCmKcv77LBJY7OxhJ+zJF7UD/sCL3lYNFuqmQEVlkfS4Quif6FyYg==",
|
||||||
|
"type": "package",
|
||||||
|
"path": "microsoft.netframework.referenceassemblies/1.0.3",
|
||||||
|
"files": [
|
||||||
|
".nupkg.metadata",
|
||||||
|
".signature.p7s",
|
||||||
|
"microsoft.netframework.referenceassemblies.1.0.3.nupkg.sha512",
|
||||||
|
"microsoft.netframework.referenceassemblies.nuspec"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"Microsoft.NETFramework.ReferenceAssemblies.net48/1.0.3": {
|
||||||
|
"sha512": "zMk4D+9zyiEWByyQ7oPImPN/Jhpj166Ky0Nlla4eXlNL8hI/BtSJsgR8Inldd4NNpIAH3oh8yym0W2DrhXdSLQ==",
|
||||||
|
"type": "package",
|
||||||
|
"path": "microsoft.netframework.referenceassemblies.net48/1.0.3",
|
||||||
|
"files": [
|
||||||
|
".nupkg.metadata",
|
||||||
|
".signature.p7s",
|
||||||
|
"build/.NETFramework/v4.8/Accessibility.dll",
|
||||||
|
"build/.NETFramework/v4.8/Accessibility.xml",
|
||||||
|
"build/.NETFramework/v4.8/CustomMarshalers.dll",
|
||||||
|
"build/.NETFramework/v4.8/CustomMarshalers.xml",
|
||||||
|
"build/.NETFramework/v4.8/Facades/Microsoft.Win32.Primitives.dll",
|
||||||
|
"build/.NETFramework/v4.8/Facades/System.AppContext.dll",
|
||||||
|
"build/.NETFramework/v4.8/Facades/System.Collections.Concurrent.dll",
|
||||||
|
"build/.NETFramework/v4.8/Facades/System.Collections.NonGeneric.dll",
|
||||||
|
"build/.NETFramework/v4.8/Facades/System.Collections.Specialized.dll",
|
||||||
|
"build/.NETFramework/v4.8/Facades/System.Collections.dll",
|
||||||
|
"build/.NETFramework/v4.8/Facades/System.ComponentModel.Annotations.dll",
|
||||||
|
"build/.NETFramework/v4.8/Facades/System.ComponentModel.EventBasedAsync.dll",
|
||||||
|
"build/.NETFramework/v4.8/Facades/System.ComponentModel.Primitives.dll",
|
||||||
|
"build/.NETFramework/v4.8/Facades/System.ComponentModel.TypeConverter.dll",
|
||||||
|
"build/.NETFramework/v4.8/Facades/System.ComponentModel.dll",
|
||||||
|
"build/.NETFramework/v4.8/Facades/System.Console.dll",
|
||||||
|
"build/.NETFramework/v4.8/Facades/System.Data.Common.dll",
|
||||||
|
"build/.NETFramework/v4.8/Facades/System.Diagnostics.Contracts.dll",
|
||||||
|
"build/.NETFramework/v4.8/Facades/System.Diagnostics.Debug.dll",
|
||||||
|
"build/.NETFramework/v4.8/Facades/System.Diagnostics.FileVersionInfo.dll",
|
||||||
|
"build/.NETFramework/v4.8/Facades/System.Diagnostics.Process.dll",
|
||||||
|
"build/.NETFramework/v4.8/Facades/System.Diagnostics.StackTrace.dll",
|
||||||
|
"build/.NETFramework/v4.8/Facades/System.Diagnostics.TextWriterTraceListener.dll",
|
||||||
|
"build/.NETFramework/v4.8/Facades/System.Diagnostics.Tools.dll",
|
||||||
|
"build/.NETFramework/v4.8/Facades/System.Diagnostics.TraceSource.dll",
|
||||||
|
"build/.NETFramework/v4.8/Facades/System.Drawing.Primitives.dll",
|
||||||
|
"build/.NETFramework/v4.8/Facades/System.Dynamic.Runtime.dll",
|
||||||
|
"build/.NETFramework/v4.8/Facades/System.Globalization.Calendars.dll",
|
||||||
|
"build/.NETFramework/v4.8/Facades/System.Globalization.Extensions.dll",
|
||||||
|
"build/.NETFramework/v4.8/Facades/System.Globalization.dll",
|
||||||
|
"build/.NETFramework/v4.8/Facades/System.IO.Compression.ZipFile.dll",
|
||||||
|
"build/.NETFramework/v4.8/Facades/System.IO.FileSystem.DriveInfo.dll",
|
||||||
|
"build/.NETFramework/v4.8/Facades/System.IO.FileSystem.Primitives.dll",
|
||||||
|
"build/.NETFramework/v4.8/Facades/System.IO.FileSystem.Watcher.dll",
|
||||||
|
"build/.NETFramework/v4.8/Facades/System.IO.FileSystem.dll",
|
||||||
|
"build/.NETFramework/v4.8/Facades/System.IO.IsolatedStorage.dll",
|
||||||
|
"build/.NETFramework/v4.8/Facades/System.IO.MemoryMappedFiles.dll",
|
||||||
|
"build/.NETFramework/v4.8/Facades/System.IO.Pipes.dll",
|
||||||
|
"build/.NETFramework/v4.8/Facades/System.IO.UnmanagedMemoryStream.dll",
|
||||||
|
"build/.NETFramework/v4.8/Facades/System.IO.dll",
|
||||||
|
"build/.NETFramework/v4.8/Facades/System.Linq.Expressions.dll",
|
||||||
|
"build/.NETFramework/v4.8/Facades/System.Linq.Parallel.dll",
|
||||||
|
"build/.NETFramework/v4.8/Facades/System.Linq.Queryable.dll",
|
||||||
|
"build/.NETFramework/v4.8/Facades/System.Linq.dll",
|
||||||
|
"build/.NETFramework/v4.8/Facades/System.Net.Http.Rtc.dll",
|
||||||
|
"build/.NETFramework/v4.8/Facades/System.Net.NameResolution.dll",
|
||||||
|
"build/.NETFramework/v4.8/Facades/System.Net.NetworkInformation.dll",
|
||||||
|
"build/.NETFramework/v4.8/Facades/System.Net.Ping.dll",
|
||||||
|
"build/.NETFramework/v4.8/Facades/System.Net.Primitives.dll",
|
||||||
|
"build/.NETFramework/v4.8/Facades/System.Net.Requests.dll",
|
||||||
|
"build/.NETFramework/v4.8/Facades/System.Net.Security.dll",
|
||||||
|
"build/.NETFramework/v4.8/Facades/System.Net.Sockets.dll",
|
||||||
|
"build/.NETFramework/v4.8/Facades/System.Net.WebHeaderCollection.dll",
|
||||||
|
"build/.NETFramework/v4.8/Facades/System.Net.WebSockets.Client.dll",
|
||||||
|
"build/.NETFramework/v4.8/Facades/System.Net.WebSockets.dll",
|
||||||
|
"build/.NETFramework/v4.8/Facades/System.ObjectModel.dll",
|
||||||
|
"build/.NETFramework/v4.8/Facades/System.Reflection.Emit.ILGeneration.dll",
|
||||||
|
"build/.NETFramework/v4.8/Facades/System.Reflection.Emit.Lightweight.dll",
|
||||||
|
"build/.NETFramework/v4.8/Facades/System.Reflection.Emit.dll",
|
||||||
|
"build/.NETFramework/v4.8/Facades/System.Reflection.Extensions.dll",
|
||||||
|
"build/.NETFramework/v4.8/Facades/System.Reflection.Primitives.dll",
|
||||||
|
"build/.NETFramework/v4.8/Facades/System.Reflection.dll",
|
||||||
|
"build/.NETFramework/v4.8/Facades/System.Resources.Reader.dll",
|
||||||
|
"build/.NETFramework/v4.8/Facades/System.Resources.ResourceManager.dll",
|
||||||
|
"build/.NETFramework/v4.8/Facades/System.Resources.Writer.dll",
|
||||||
|
"build/.NETFramework/v4.8/Facades/System.Runtime.CompilerServices.VisualC.dll",
|
||||||
|
"build/.NETFramework/v4.8/Facades/System.Runtime.Extensions.dll",
|
||||||
|
"build/.NETFramework/v4.8/Facades/System.Runtime.Handles.dll",
|
||||||
|
"build/.NETFramework/v4.8/Facades/System.Runtime.InteropServices.RuntimeInformation.dll",
|
||||||
|
"build/.NETFramework/v4.8/Facades/System.Runtime.InteropServices.WindowsRuntime.dll",
|
||||||
|
"build/.NETFramework/v4.8/Facades/System.Runtime.InteropServices.dll",
|
||||||
|
"build/.NETFramework/v4.8/Facades/System.Runtime.Numerics.dll",
|
||||||
|
"build/.NETFramework/v4.8/Facades/System.Runtime.Serialization.Formatters.dll",
|
||||||
|
"build/.NETFramework/v4.8/Facades/System.Runtime.Serialization.Json.dll",
|
||||||
|
"build/.NETFramework/v4.8/Facades/System.Runtime.Serialization.Primitives.dll",
|
||||||
|
"build/.NETFramework/v4.8/Facades/System.Runtime.Serialization.Xml.dll",
|
||||||
|
"build/.NETFramework/v4.8/Facades/System.Runtime.dll",
|
||||||
|
"build/.NETFramework/v4.8/Facades/System.Security.Claims.dll",
|
||||||
|
"build/.NETFramework/v4.8/Facades/System.Security.Cryptography.Algorithms.dll",
|
||||||
|
"build/.NETFramework/v4.8/Facades/System.Security.Cryptography.Csp.dll",
|
||||||
|
"build/.NETFramework/v4.8/Facades/System.Security.Cryptography.Encoding.dll",
|
||||||
|
"build/.NETFramework/v4.8/Facades/System.Security.Cryptography.Primitives.dll",
|
||||||
|
"build/.NETFramework/v4.8/Facades/System.Security.Cryptography.X509Certificates.dll",
|
||||||
|
"build/.NETFramework/v4.8/Facades/System.Security.Principal.dll",
|
||||||
|
"build/.NETFramework/v4.8/Facades/System.Security.SecureString.dll",
|
||||||
|
"build/.NETFramework/v4.8/Facades/System.ServiceModel.Duplex.dll",
|
||||||
|
"build/.NETFramework/v4.8/Facades/System.ServiceModel.Http.dll",
|
||||||
|
"build/.NETFramework/v4.8/Facades/System.ServiceModel.NetTcp.dll",
|
||||||
|
"build/.NETFramework/v4.8/Facades/System.ServiceModel.Primitives.dll",
|
||||||
|
"build/.NETFramework/v4.8/Facades/System.ServiceModel.Security.dll",
|
||||||
|
"build/.NETFramework/v4.8/Facades/System.Text.Encoding.Extensions.dll",
|
||||||
|
"build/.NETFramework/v4.8/Facades/System.Text.Encoding.dll",
|
||||||
|
"build/.NETFramework/v4.8/Facades/System.Text.RegularExpressions.dll",
|
||||||
|
"build/.NETFramework/v4.8/Facades/System.Threading.Overlapped.dll",
|
||||||
|
"build/.NETFramework/v4.8/Facades/System.Threading.Tasks.Parallel.dll",
|
||||||
|
"build/.NETFramework/v4.8/Facades/System.Threading.Tasks.dll",
|
||||||
|
"build/.NETFramework/v4.8/Facades/System.Threading.Thread.dll",
|
||||||
|
"build/.NETFramework/v4.8/Facades/System.Threading.ThreadPool.dll",
|
||||||
|
"build/.NETFramework/v4.8/Facades/System.Threading.Timer.dll",
|
||||||
|
"build/.NETFramework/v4.8/Facades/System.Threading.dll",
|
||||||
|
"build/.NETFramework/v4.8/Facades/System.ValueTuple.dll",
|
||||||
|
"build/.NETFramework/v4.8/Facades/System.Xml.ReaderWriter.dll",
|
||||||
|
"build/.NETFramework/v4.8/Facades/System.Xml.XDocument.dll",
|
||||||
|
"build/.NETFramework/v4.8/Facades/System.Xml.XPath.XDocument.dll",
|
||||||
|
"build/.NETFramework/v4.8/Facades/System.Xml.XPath.dll",
|
||||||
|
"build/.NETFramework/v4.8/Facades/System.Xml.XmlDocument.dll",
|
||||||
|
"build/.NETFramework/v4.8/Facades/System.Xml.XmlSerializer.dll",
|
||||||
|
"build/.NETFramework/v4.8/Facades/netstandard.dll",
|
||||||
|
"build/.NETFramework/v4.8/ISymWrapper.dll",
|
||||||
|
"build/.NETFramework/v4.8/ISymWrapper.xml",
|
||||||
|
"build/.NETFramework/v4.8/Microsoft.Activities.Build.dll",
|
||||||
|
"build/.NETFramework/v4.8/Microsoft.Activities.Build.xml",
|
||||||
|
"build/.NETFramework/v4.8/Microsoft.Build.Conversion.v4.0.dll",
|
||||||
|
"build/.NETFramework/v4.8/Microsoft.Build.Conversion.v4.0.xml",
|
||||||
|
"build/.NETFramework/v4.8/Microsoft.Build.Engine.dll",
|
||||||
|
"build/.NETFramework/v4.8/Microsoft.Build.Engine.xml",
|
||||||
|
"build/.NETFramework/v4.8/Microsoft.Build.Framework.dll",
|
||||||
|
"build/.NETFramework/v4.8/Microsoft.Build.Framework.xml",
|
||||||
|
"build/.NETFramework/v4.8/Microsoft.Build.Tasks.v4.0.dll",
|
||||||
|
"build/.NETFramework/v4.8/Microsoft.Build.Tasks.v4.0.xml",
|
||||||
|
"build/.NETFramework/v4.8/Microsoft.Build.Utilities.v4.0.dll",
|
||||||
|
"build/.NETFramework/v4.8/Microsoft.Build.Utilities.v4.0.xml",
|
||||||
|
"build/.NETFramework/v4.8/Microsoft.Build.dll",
|
||||||
|
"build/.NETFramework/v4.8/Microsoft.Build.xml",
|
||||||
|
"build/.NETFramework/v4.8/Microsoft.CSharp.dll",
|
||||||
|
"build/.NETFramework/v4.8/Microsoft.CSharp.xml",
|
||||||
|
"build/.NETFramework/v4.8/Microsoft.JScript.dll",
|
||||||
|
"build/.NETFramework/v4.8/Microsoft.JScript.xml",
|
||||||
|
"build/.NETFramework/v4.8/Microsoft.VisualBasic.Compatibility.Data.dll",
|
||||||
|
"build/.NETFramework/v4.8/Microsoft.VisualBasic.Compatibility.Data.xml",
|
||||||
|
"build/.NETFramework/v4.8/Microsoft.VisualBasic.Compatibility.dll",
|
||||||
|
"build/.NETFramework/v4.8/Microsoft.VisualBasic.Compatibility.xml",
|
||||||
|
"build/.NETFramework/v4.8/Microsoft.VisualBasic.dll",
|
||||||
|
"build/.NETFramework/v4.8/Microsoft.VisualBasic.xml",
|
||||||
|
"build/.NETFramework/v4.8/Microsoft.VisualC.STLCLR.dll",
|
||||||
|
"build/.NETFramework/v4.8/Microsoft.VisualC.STLCLR.xml",
|
||||||
|
"build/.NETFramework/v4.8/Microsoft.VisualC.dll",
|
||||||
|
"build/.NETFramework/v4.8/Microsoft.VisualC.xml",
|
||||||
|
"build/.NETFramework/v4.8/PermissionSets/FullTrust.xml",
|
||||||
|
"build/.NETFramework/v4.8/PermissionSets/Internet.xml",
|
||||||
|
"build/.NETFramework/v4.8/PermissionSets/LocalIntranet.xml",
|
||||||
|
"build/.NETFramework/v4.8/PresentationBuildTasks.dll",
|
||||||
|
"build/.NETFramework/v4.8/PresentationBuildTasks.xml",
|
||||||
|
"build/.NETFramework/v4.8/PresentationCore.dll",
|
||||||
|
"build/.NETFramework/v4.8/PresentationCore.xml",
|
||||||
|
"build/.NETFramework/v4.8/PresentationFramework.Aero.dll",
|
||||||
|
"build/.NETFramework/v4.8/PresentationFramework.Aero.xml",
|
||||||
|
"build/.NETFramework/v4.8/PresentationFramework.Aero2.dll",
|
||||||
|
"build/.NETFramework/v4.8/PresentationFramework.Aero2.xml",
|
||||||
|
"build/.NETFramework/v4.8/PresentationFramework.AeroLite.dll",
|
||||||
|
"build/.NETFramework/v4.8/PresentationFramework.AeroLite.xml",
|
||||||
|
"build/.NETFramework/v4.8/PresentationFramework.Classic.dll",
|
||||||
|
"build/.NETFramework/v4.8/PresentationFramework.Classic.xml",
|
||||||
|
"build/.NETFramework/v4.8/PresentationFramework.Luna.dll",
|
||||||
|
"build/.NETFramework/v4.8/PresentationFramework.Luna.xml",
|
||||||
|
"build/.NETFramework/v4.8/PresentationFramework.Royale.dll",
|
||||||
|
"build/.NETFramework/v4.8/PresentationFramework.Royale.xml",
|
||||||
|
"build/.NETFramework/v4.8/PresentationFramework.dll",
|
||||||
|
"build/.NETFramework/v4.8/PresentationFramework.xml",
|
||||||
|
"build/.NETFramework/v4.8/ReachFramework.dll",
|
||||||
|
"build/.NETFramework/v4.8/ReachFramework.xml",
|
||||||
|
"build/.NETFramework/v4.8/RedistList/FrameworkList.xml",
|
||||||
|
"build/.NETFramework/v4.8/System.Activities.Core.Presentation.dll",
|
||||||
|
"build/.NETFramework/v4.8/System.Activities.Core.Presentation.xml",
|
||||||
|
"build/.NETFramework/v4.8/System.Activities.DurableInstancing.dll",
|
||||||
|
"build/.NETFramework/v4.8/System.Activities.DurableInstancing.xml",
|
||||||
|
"build/.NETFramework/v4.8/System.Activities.Presentation.dll",
|
||||||
|
"build/.NETFramework/v4.8/System.Activities.Presentation.xml",
|
||||||
|
"build/.NETFramework/v4.8/System.Activities.dll",
|
||||||
|
"build/.NETFramework/v4.8/System.Activities.xml",
|
||||||
|
"build/.NETFramework/v4.8/System.AddIn.Contract.dll",
|
||||||
|
"build/.NETFramework/v4.8/System.AddIn.Contract.xml",
|
||||||
|
"build/.NETFramework/v4.8/System.AddIn.dll",
|
||||||
|
"build/.NETFramework/v4.8/System.AddIn.xml",
|
||||||
|
"build/.NETFramework/v4.8/System.ComponentModel.Composition.Registration.dll",
|
||||||
|
"build/.NETFramework/v4.8/System.ComponentModel.Composition.Registration.xml",
|
||||||
|
"build/.NETFramework/v4.8/System.ComponentModel.Composition.dll",
|
||||||
|
"build/.NETFramework/v4.8/System.ComponentModel.Composition.xml",
|
||||||
|
"build/.NETFramework/v4.8/System.ComponentModel.DataAnnotations.dll",
|
||||||
|
"build/.NETFramework/v4.8/System.ComponentModel.DataAnnotations.xml",
|
||||||
|
"build/.NETFramework/v4.8/System.Configuration.Install.dll",
|
||||||
|
"build/.NETFramework/v4.8/System.Configuration.Install.xml",
|
||||||
|
"build/.NETFramework/v4.8/System.Configuration.dll",
|
||||||
|
"build/.NETFramework/v4.8/System.Configuration.xml",
|
||||||
|
"build/.NETFramework/v4.8/System.Core.dll",
|
||||||
|
"build/.NETFramework/v4.8/System.Core.xml",
|
||||||
|
"build/.NETFramework/v4.8/System.Data.DataSetExtensions.dll",
|
||||||
|
"build/.NETFramework/v4.8/System.Data.DataSetExtensions.xml",
|
||||||
|
"build/.NETFramework/v4.8/System.Data.Entity.Design.dll",
|
||||||
|
"build/.NETFramework/v4.8/System.Data.Entity.Design.xml",
|
||||||
|
"build/.NETFramework/v4.8/System.Data.Entity.dll",
|
||||||
|
"build/.NETFramework/v4.8/System.Data.Entity.xml",
|
||||||
|
"build/.NETFramework/v4.8/System.Data.Linq.dll",
|
||||||
|
"build/.NETFramework/v4.8/System.Data.Linq.xml",
|
||||||
|
"build/.NETFramework/v4.8/System.Data.OracleClient.dll",
|
||||||
|
"build/.NETFramework/v4.8/System.Data.OracleClient.xml",
|
||||||
|
"build/.NETFramework/v4.8/System.Data.Services.Client.dll",
|
||||||
|
"build/.NETFramework/v4.8/System.Data.Services.Client.xml",
|
||||||
|
"build/.NETFramework/v4.8/System.Data.Services.Design.dll",
|
||||||
|
"build/.NETFramework/v4.8/System.Data.Services.Design.xml",
|
||||||
|
"build/.NETFramework/v4.8/System.Data.Services.dll",
|
||||||
|
"build/.NETFramework/v4.8/System.Data.Services.xml",
|
||||||
|
"build/.NETFramework/v4.8/System.Data.SqlXml.dll",
|
||||||
|
"build/.NETFramework/v4.8/System.Data.SqlXml.xml",
|
||||||
|
"build/.NETFramework/v4.8/System.Data.dll",
|
||||||
|
"build/.NETFramework/v4.8/System.Data.xml",
|
||||||
|
"build/.NETFramework/v4.8/System.Deployment.dll",
|
||||||
|
"build/.NETFramework/v4.8/System.Deployment.xml",
|
||||||
|
"build/.NETFramework/v4.8/System.Design.dll",
|
||||||
|
"build/.NETFramework/v4.8/System.Design.xml",
|
||||||
|
"build/.NETFramework/v4.8/System.Device.dll",
|
||||||
|
"build/.NETFramework/v4.8/System.Device.xml",
|
||||||
|
"build/.NETFramework/v4.8/System.Diagnostics.Tracing.dll",
|
||||||
|
"build/.NETFramework/v4.8/System.Diagnostics.Tracing.xml",
|
||||||
|
"build/.NETFramework/v4.8/System.DirectoryServices.AccountManagement.dll",
|
||||||
|
"build/.NETFramework/v4.8/System.DirectoryServices.AccountManagement.xml",
|
||||||
|
"build/.NETFramework/v4.8/System.DirectoryServices.Protocols.dll",
|
||||||
|
"build/.NETFramework/v4.8/System.DirectoryServices.Protocols.xml",
|
||||||
|
"build/.NETFramework/v4.8/System.DirectoryServices.dll",
|
||||||
|
"build/.NETFramework/v4.8/System.DirectoryServices.xml",
|
||||||
|
"build/.NETFramework/v4.8/System.Drawing.Design.dll",
|
||||||
|
"build/.NETFramework/v4.8/System.Drawing.Design.xml",
|
||||||
|
"build/.NETFramework/v4.8/System.Drawing.dll",
|
||||||
|
"build/.NETFramework/v4.8/System.Drawing.xml",
|
||||||
|
"build/.NETFramework/v4.8/System.Dynamic.dll",
|
||||||
|
"build/.NETFramework/v4.8/System.EnterpriseServices.Thunk.dll",
|
||||||
|
"build/.NETFramework/v4.8/System.EnterpriseServices.Wrapper.dll",
|
||||||
|
"build/.NETFramework/v4.8/System.EnterpriseServices.dll",
|
||||||
|
"build/.NETFramework/v4.8/System.EnterpriseServices.xml",
|
||||||
|
"build/.NETFramework/v4.8/System.IO.Compression.FileSystem.dll",
|
||||||
|
"build/.NETFramework/v4.8/System.IO.Compression.FileSystem.xml",
|
||||||
|
"build/.NETFramework/v4.8/System.IO.Compression.dll",
|
||||||
|
"build/.NETFramework/v4.8/System.IO.Compression.xml",
|
||||||
|
"build/.NETFramework/v4.8/System.IO.Log.dll",
|
||||||
|
"build/.NETFramework/v4.8/System.IO.Log.xml",
|
||||||
|
"build/.NETFramework/v4.8/System.IdentityModel.Selectors.dll",
|
||||||
|
"build/.NETFramework/v4.8/System.IdentityModel.Selectors.xml",
|
||||||
|
"build/.NETFramework/v4.8/System.IdentityModel.Services.dll",
|
||||||
|
"build/.NETFramework/v4.8/System.IdentityModel.Services.xml",
|
||||||
|
"build/.NETFramework/v4.8/System.IdentityModel.dll",
|
||||||
|
"build/.NETFramework/v4.8/System.IdentityModel.xml",
|
||||||
|
"build/.NETFramework/v4.8/System.Linq.xml",
|
||||||
|
"build/.NETFramework/v4.8/System.Management.Instrumentation.dll",
|
||||||
|
"build/.NETFramework/v4.8/System.Management.Instrumentation.xml",
|
||||||
|
"build/.NETFramework/v4.8/System.Management.dll",
|
||||||
|
"build/.NETFramework/v4.8/System.Management.xml",
|
||||||
|
"build/.NETFramework/v4.8/System.Messaging.dll",
|
||||||
|
"build/.NETFramework/v4.8/System.Messaging.xml",
|
||||||
|
"build/.NETFramework/v4.8/System.Net.Http.WebRequest.dll",
|
||||||
|
"build/.NETFramework/v4.8/System.Net.Http.WebRequest.xml",
|
||||||
|
"build/.NETFramework/v4.8/System.Net.Http.dll",
|
||||||
|
"build/.NETFramework/v4.8/System.Net.Http.xml",
|
||||||
|
"build/.NETFramework/v4.8/System.Net.dll",
|
||||||
|
"build/.NETFramework/v4.8/System.Net.xml",
|
||||||
|
"build/.NETFramework/v4.8/System.Numerics.dll",
|
||||||
|
"build/.NETFramework/v4.8/System.Numerics.xml",
|
||||||
|
"build/.NETFramework/v4.8/System.Printing.dll",
|
||||||
|
"build/.NETFramework/v4.8/System.Printing.xml",
|
||||||
|
"build/.NETFramework/v4.8/System.Reflection.Context.dll",
|
||||||
|
"build/.NETFramework/v4.8/System.Reflection.Context.xml",
|
||||||
|
"build/.NETFramework/v4.8/System.Runtime.Caching.dll",
|
||||||
|
"build/.NETFramework/v4.8/System.Runtime.Caching.xml",
|
||||||
|
"build/.NETFramework/v4.8/System.Runtime.DurableInstancing.dll",
|
||||||
|
"build/.NETFramework/v4.8/System.Runtime.DurableInstancing.xml",
|
||||||
|
"build/.NETFramework/v4.8/System.Runtime.Remoting.dll",
|
||||||
|
"build/.NETFramework/v4.8/System.Runtime.Remoting.xml",
|
||||||
|
"build/.NETFramework/v4.8/System.Runtime.Serialization.Formatters.Soap.dll",
|
||||||
|
"build/.NETFramework/v4.8/System.Runtime.Serialization.Formatters.Soap.xml",
|
||||||
|
"build/.NETFramework/v4.8/System.Runtime.Serialization.dll",
|
||||||
|
"build/.NETFramework/v4.8/System.Runtime.Serialization.xml",
|
||||||
|
"build/.NETFramework/v4.8/System.Security.dll",
|
||||||
|
"build/.NETFramework/v4.8/System.Security.xml",
|
||||||
|
"build/.NETFramework/v4.8/System.ServiceModel.Activation.dll",
|
||||||
|
"build/.NETFramework/v4.8/System.ServiceModel.Activation.xml",
|
||||||
|
"build/.NETFramework/v4.8/System.ServiceModel.Activities.dll",
|
||||||
|
"build/.NETFramework/v4.8/System.ServiceModel.Activities.xml",
|
||||||
|
"build/.NETFramework/v4.8/System.ServiceModel.Channels.dll",
|
||||||
|
"build/.NETFramework/v4.8/System.ServiceModel.Channels.xml",
|
||||||
|
"build/.NETFramework/v4.8/System.ServiceModel.Discovery.dll",
|
||||||
|
"build/.NETFramework/v4.8/System.ServiceModel.Discovery.xml",
|
||||||
|
"build/.NETFramework/v4.8/System.ServiceModel.Routing.dll",
|
||||||
|
"build/.NETFramework/v4.8/System.ServiceModel.Routing.xml",
|
||||||
|
"build/.NETFramework/v4.8/System.ServiceModel.Web.dll",
|
||||||
|
"build/.NETFramework/v4.8/System.ServiceModel.Web.xml",
|
||||||
|
"build/.NETFramework/v4.8/System.ServiceModel.dll",
|
||||||
|
"build/.NETFramework/v4.8/System.ServiceModel.xml",
|
||||||
|
"build/.NETFramework/v4.8/System.ServiceProcess.dll",
|
||||||
|
"build/.NETFramework/v4.8/System.ServiceProcess.xml",
|
||||||
|
"build/.NETFramework/v4.8/System.Speech.dll",
|
||||||
|
"build/.NETFramework/v4.8/System.Speech.xml",
|
||||||
|
"build/.NETFramework/v4.8/System.Threading.Tasks.Dataflow.xml",
|
||||||
|
"build/.NETFramework/v4.8/System.Transactions.dll",
|
||||||
|
"build/.NETFramework/v4.8/System.Transactions.xml",
|
||||||
|
"build/.NETFramework/v4.8/System.Web.Abstractions.dll",
|
||||||
|
"build/.NETFramework/v4.8/System.Web.ApplicationServices.dll",
|
||||||
|
"build/.NETFramework/v4.8/System.Web.ApplicationServices.xml",
|
||||||
|
"build/.NETFramework/v4.8/System.Web.DataVisualization.Design.dll",
|
||||||
|
"build/.NETFramework/v4.8/System.Web.DataVisualization.dll",
|
||||||
|
"build/.NETFramework/v4.8/System.Web.DataVisualization.xml",
|
||||||
|
"build/.NETFramework/v4.8/System.Web.DynamicData.Design.dll",
|
||||||
|
"build/.NETFramework/v4.8/System.Web.DynamicData.Design.xml",
|
||||||
|
"build/.NETFramework/v4.8/System.Web.DynamicData.dll",
|
||||||
|
"build/.NETFramework/v4.8/System.Web.DynamicData.xml",
|
||||||
|
"build/.NETFramework/v4.8/System.Web.Entity.Design.dll",
|
||||||
|
"build/.NETFramework/v4.8/System.Web.Entity.Design.xml",
|
||||||
|
"build/.NETFramework/v4.8/System.Web.Entity.dll",
|
||||||
|
"build/.NETFramework/v4.8/System.Web.Entity.xml",
|
||||||
|
"build/.NETFramework/v4.8/System.Web.Extensions.Design.dll",
|
||||||
|
"build/.NETFramework/v4.8/System.Web.Extensions.Design.xml",
|
||||||
|
"build/.NETFramework/v4.8/System.Web.Extensions.dll",
|
||||||
|
"build/.NETFramework/v4.8/System.Web.Extensions.xml",
|
||||||
|
"build/.NETFramework/v4.8/System.Web.Mobile.dll",
|
||||||
|
"build/.NETFramework/v4.8/System.Web.Mobile.xml",
|
||||||
|
"build/.NETFramework/v4.8/System.Web.RegularExpressions.dll",
|
||||||
|
"build/.NETFramework/v4.8/System.Web.RegularExpressions.xml",
|
||||||
|
"build/.NETFramework/v4.8/System.Web.Routing.dll",
|
||||||
|
"build/.NETFramework/v4.8/System.Web.Services.dll",
|
||||||
|
"build/.NETFramework/v4.8/System.Web.Services.xml",
|
||||||
|
"build/.NETFramework/v4.8/System.Web.dll",
|
||||||
|
"build/.NETFramework/v4.8/System.Web.xml",
|
||||||
|
"build/.NETFramework/v4.8/System.Windows.Controls.Ribbon.dll",
|
||||||
|
"build/.NETFramework/v4.8/System.Windows.Controls.Ribbon.xml",
|
||||||
|
"build/.NETFramework/v4.8/System.Windows.Forms.DataVisualization.Design.dll",
|
||||||
|
"build/.NETFramework/v4.8/System.Windows.Forms.DataVisualization.dll",
|
||||||
|
"build/.NETFramework/v4.8/System.Windows.Forms.DataVisualization.xml",
|
||||||
|
"build/.NETFramework/v4.8/System.Windows.Forms.dll",
|
||||||
|
"build/.NETFramework/v4.8/System.Windows.Forms.xml",
|
||||||
|
"build/.NETFramework/v4.8/System.Windows.Input.Manipulations.dll",
|
||||||
|
"build/.NETFramework/v4.8/System.Windows.Input.Manipulations.xml",
|
||||||
|
"build/.NETFramework/v4.8/System.Windows.Presentation.dll",
|
||||||
|
"build/.NETFramework/v4.8/System.Windows.Presentation.xml",
|
||||||
|
"build/.NETFramework/v4.8/System.Windows.dll",
|
||||||
|
"build/.NETFramework/v4.8/System.Workflow.Activities.dll",
|
||||||
|
"build/.NETFramework/v4.8/System.Workflow.Activities.xml",
|
||||||
|
"build/.NETFramework/v4.8/System.Workflow.ComponentModel.dll",
|
||||||
|
"build/.NETFramework/v4.8/System.Workflow.ComponentModel.xml",
|
||||||
|
"build/.NETFramework/v4.8/System.Workflow.Runtime.dll",
|
||||||
|
"build/.NETFramework/v4.8/System.Workflow.Runtime.xml",
|
||||||
|
"build/.NETFramework/v4.8/System.WorkflowServices.dll",
|
||||||
|
"build/.NETFramework/v4.8/System.WorkflowServices.xml",
|
||||||
|
"build/.NETFramework/v4.8/System.Xaml.dll",
|
||||||
|
"build/.NETFramework/v4.8/System.Xaml.xml",
|
||||||
|
"build/.NETFramework/v4.8/System.Xml.Linq.dll",
|
||||||
|
"build/.NETFramework/v4.8/System.Xml.Linq.xml",
|
||||||
|
"build/.NETFramework/v4.8/System.Xml.Serialization.dll",
|
||||||
|
"build/.NETFramework/v4.8/System.Xml.dll",
|
||||||
|
"build/.NETFramework/v4.8/System.Xml.xml",
|
||||||
|
"build/.NETFramework/v4.8/System.dll",
|
||||||
|
"build/.NETFramework/v4.8/System.xml",
|
||||||
|
"build/.NETFramework/v4.8/UIAutomationClient.dll",
|
||||||
|
"build/.NETFramework/v4.8/UIAutomationClient.xml",
|
||||||
|
"build/.NETFramework/v4.8/UIAutomationClientsideProviders.dll",
|
||||||
|
"build/.NETFramework/v4.8/UIAutomationClientsideProviders.xml",
|
||||||
|
"build/.NETFramework/v4.8/UIAutomationProvider.dll",
|
||||||
|
"build/.NETFramework/v4.8/UIAutomationProvider.xml",
|
||||||
|
"build/.NETFramework/v4.8/UIAutomationTypes.dll",
|
||||||
|
"build/.NETFramework/v4.8/UIAutomationTypes.xml",
|
||||||
|
"build/.NETFramework/v4.8/WindowsBase.dll",
|
||||||
|
"build/.NETFramework/v4.8/WindowsBase.xml",
|
||||||
|
"build/.NETFramework/v4.8/WindowsFormsIntegration.dll",
|
||||||
|
"build/.NETFramework/v4.8/WindowsFormsIntegration.xml",
|
||||||
|
"build/.NETFramework/v4.8/XamlBuildTask.dll",
|
||||||
|
"build/.NETFramework/v4.8/XamlBuildTask.xml",
|
||||||
|
"build/.NETFramework/v4.8/mscorlib.dll",
|
||||||
|
"build/.NETFramework/v4.8/mscorlib.xml",
|
||||||
|
"build/.NETFramework/v4.8/namespaces.xml",
|
||||||
|
"build/.NETFramework/v4.8/sysglobl.dll",
|
||||||
|
"build/.NETFramework/v4.8/sysglobl.xml",
|
||||||
|
"build/Microsoft.NETFramework.ReferenceAssemblies.net48.targets",
|
||||||
|
"microsoft.netframework.referenceassemblies.net48.1.0.3.nupkg.sha512",
|
||||||
|
"microsoft.netframework.referenceassemblies.net48.nuspec"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"projectFileDependencyGroups": {
|
||||||
|
".NETFramework,Version=v4.8": [
|
||||||
|
"Microsoft.NETFramework.ReferenceAssemblies >= 1.0.3"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"packageFolders": {
|
||||||
|
"C:\\Users\\Viper\\.nuget\\packages\\": {}
|
||||||
|
},
|
||||||
|
"project": {
|
||||||
|
"version": "1.0.4",
|
||||||
|
"restore": {
|
||||||
|
"projectUniqueName": "C:\\Users\\Viper\\Desktop\\Programme\\DeskCore-Source\\Setup\\DeskCoreSetup.csproj",
|
||||||
|
"projectName": "DeskCore-Setup",
|
||||||
|
"projectPath": "C:\\Users\\Viper\\Desktop\\Programme\\DeskCore-Source\\Setup\\DeskCoreSetup.csproj",
|
||||||
|
"packagesPath": "C:\\Users\\Viper\\.nuget\\packages\\",
|
||||||
|
"outputPath": "C:\\Users\\Viper\\Desktop\\Programme\\DeskCore-Source\\Setup\\obj\\",
|
||||||
|
"projectStyle": "PackageReference",
|
||||||
|
"configFilePaths": [
|
||||||
|
"C:\\Users\\Viper\\AppData\\Roaming\\NuGet\\NuGet.Config"
|
||||||
|
],
|
||||||
|
"originalTargetFrameworks": [
|
||||||
|
"net48"
|
||||||
|
],
|
||||||
|
"sources": {
|
||||||
|
"https://api.nuget.org/v3/index.json": {}
|
||||||
|
},
|
||||||
|
"frameworks": {
|
||||||
|
"net48": {
|
||||||
|
"targetAlias": "net48",
|
||||||
|
"projectReferences": {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"warningProperties": {
|
||||||
|
"warnAsError": [
|
||||||
|
"NU1605"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"restoreAuditProperties": {
|
||||||
|
"enableAudit": "true",
|
||||||
|
"auditLevel": "low",
|
||||||
|
"auditMode": "direct"
|
||||||
|
},
|
||||||
|
"SdkAnalysisLevel": "10.0.100"
|
||||||
|
},
|
||||||
|
"frameworks": {
|
||||||
|
"net48": {
|
||||||
|
"targetAlias": "net48",
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.NETFramework.ReferenceAssemblies": {
|
||||||
|
"suppressParent": "All",
|
||||||
|
"target": "Package",
|
||||||
|
"version": "[1.0.3, )",
|
||||||
|
"autoReferenced": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\10.0.112\\RuntimeIdentifierGraph.json"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
"version": 2,
|
||||||
|
"dgSpecHash": "1d5+c4eGnFw=",
|
||||||
|
"success": true,
|
||||||
|
"projectFilePath": "C:\\Users\\Viper\\Desktop\\Programme\\DeskCore-Source\\Setup\\DeskCoreSetup.csproj",
|
||||||
|
"expectedPackageFiles": [
|
||||||
|
"C:\\Users\\Viper\\.nuget\\packages\\microsoft.netframework.referenceassemblies\\1.0.3\\microsoft.netframework.referenceassemblies.1.0.3.nupkg.sha512",
|
||||||
|
"C:\\Users\\Viper\\.nuget\\packages\\microsoft.netframework.referenceassemblies.net48\\1.0.3\\microsoft.netframework.referenceassemblies.net48.1.0.3.nupkg.sha512"
|
||||||
|
],
|
||||||
|
"logs": []
|
||||||
|
}
|
||||||
@@ -7,7 +7,7 @@
|
|||||||
"targets": {
|
"targets": {
|
||||||
".NETCoreApp,Version=v9.0": {},
|
".NETCoreApp,Version=v9.0": {},
|
||||||
".NETCoreApp,Version=v9.0/win-x64": {
|
".NETCoreApp,Version=v9.0/win-x64": {
|
||||||
"DeskCore/1.0.2": {
|
"DeskCore/1.0.4": {
|
||||||
"runtime": {
|
"runtime": {
|
||||||
"DeskCore.dll": {}
|
"DeskCore.dll": {}
|
||||||
}
|
}
|
||||||
@@ -15,7 +15,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"libraries": {
|
"libraries": {
|
||||||
"DeskCore/1.0.2": {
|
"DeskCore/1.0.4": {
|
||||||
"type": "project",
|
"type": "project",
|
||||||
"serviceable": false,
|
"serviceable": false,
|
||||||
"sha512": ""
|
"sha512": ""
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
@@ -1 +1 @@
|
|||||||
4646ec2c3128e24bd804c9b6613a33d9861c314cc70353840d6e8baa99cac6a1
|
ceac0ba481d934c5e5ba3b309ea630ab4600f4e240c6500a6733eb2896d028a0
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ TRACE;RELEASE;NET;NET9_0;NETCOREAPP;WINDOWS;WINDOWS7_0;NET5_0_OR_GREATER;NET6_0_
|
|||||||
C:\Users\Viper\Desktop\Programme\DeskCore-Source\App.xaml
|
C:\Users\Viper\Desktop\Programme\DeskCore-Source\App.xaml
|
||||||
5-736700008
|
5-736700008
|
||||||
|
|
||||||
30-272641797
|
35799546953
|
||||||
210-1563322103
|
210-1563322103
|
||||||
FenceWindow.xaml;MainWindow.xaml;Themes\Colors.Dark.xaml;Themes\Colors.Light.xaml;Themes\Controls.xaml;
|
FenceWindow.xaml;MainWindow.xaml;Themes\Colors.Dark.xaml;Themes\Colors.Light.xaml;Themes\Controls.xaml;
|
||||||
|
|
||||||
|
|||||||
Binary file not shown.
@@ -1,4 +1,4 @@
|
|||||||
#pragma checksum "..\..\..\..\FenceWindow.xaml" "{ff1816ec-aa5e-4d10-87f7-6f4963833460}" "0AD23B4AEE9336B299C37B05CB51A972E9704879"
|
#pragma checksum "..\..\..\..\FenceWindow.xaml" "{ff1816ec-aa5e-4d10-87f7-6f4963833460}" "9A6369B2C4E0DC49858C3B1BB4A30F2ACC93D65B"
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
// <auto-generated>
|
// <auto-generated>
|
||||||
// This code was generated by a tool.
|
// This code was generated by a tool.
|
||||||
@@ -160,6 +160,14 @@ namespace DeskCore {
|
|||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
|
|
||||||
|
|
||||||
|
#line 90 "..\..\..\..\FenceWindow.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal System.Windows.Shapes.Rectangle DropMarker;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
private bool _contentLoaded;
|
private bool _contentLoaded;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -255,6 +263,12 @@ namespace DeskCore {
|
|||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
|
|
||||||
|
#line 56 "..\..\..\..\FenceWindow.xaml"
|
||||||
|
this.Items.DragLeave += new System.Windows.DragEventHandler(this.Items_DragLeave);
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
#line 56 "..\..\..\..\FenceWindow.xaml"
|
#line 56 "..\..\..\..\FenceWindow.xaml"
|
||||||
this.Items.Drop += new System.Windows.DragEventHandler(this.Items_Drop);
|
this.Items.Drop += new System.Windows.DragEventHandler(this.Items_Drop);
|
||||||
|
|
||||||
@@ -297,6 +311,9 @@ namespace DeskCore {
|
|||||||
case 16:
|
case 16:
|
||||||
this.EmptyText = ((System.Windows.Controls.TextBlock)(target));
|
this.EmptyText = ((System.Windows.Controls.TextBlock)(target));
|
||||||
return;
|
return;
|
||||||
|
case 17:
|
||||||
|
this.DropMarker = ((System.Windows.Shapes.Rectangle)(target));
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
this._contentLoaded = true;
|
this._contentLoaded = true;
|
||||||
}
|
}
|
||||||
|
|||||||
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Binary file not shown.
Reference in New Issue
Block a user