Die heruntergeladene Datei ist ein Setup: Sprache, Ordner (nur ohne Admin-Rechte beschreibbar), Verknuepfungen, Fortschritt, Fertig-Seite; Ordner steht in der Registry. Deinstallieren loescht im gewaehlten Ordner nur die eigenen Dateien. Beim Start fragt der Launcher nach neuen Updates (Launcher und Mod). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
45 lines
1.7 KiB
C#
45 lines
1.7 KiB
C#
namespace BSO.Launcher;
|
|
|
|
static class Program
|
|
{
|
|
[STAThread]
|
|
static int Main(string[] args)
|
|
{
|
|
ApplicationConfiguration.Initialize();
|
|
Lang.Set(Settings.Load().Language);
|
|
|
|
// Deinstallieren (aus "Apps & Features")
|
|
if (args.Contains("--uninstall"))
|
|
{
|
|
Installer.Uninstall(args.Contains("--quiet"));
|
|
return 0;
|
|
}
|
|
|
|
// Die heruntergeladene .exe ist das Setup (Assistent: Ordner, Verknuepfungen, Installieren) und startet danach die
|
|
// installierte Kopie. Ist schon dieselbe oder eine neuere Version da, bietet es Starten an. --portable = ohne Installation.
|
|
if (!Installer.RunningInstalled && !args.Contains("--portable"))
|
|
{
|
|
Application.Run(new SetupForm());
|
|
return 0;
|
|
}
|
|
|
|
// Nur ein Launcher gleichzeitig
|
|
using var single = new Mutex(true, "BSO-Launcher-Single", out bool first);
|
|
// Nach einem Selbst-Update: die alte Version beendet sich gerade - bis zu 20 s auf sie warten
|
|
if (!first && args.Contains(SelfUpdate.AfterUpdateArg))
|
|
{
|
|
try { first = single.WaitOne(TimeSpan.FromSeconds(20)); }
|
|
catch (AbandonedMutexException) { first = true; } // alte Version wurde hart beendet - Sperre gehoert jetzt uns
|
|
}
|
|
if (!first)
|
|
{
|
|
MessageBox.Show(Lang.T("Der BSO Launcher laeuft schon."), Installer.AppName, MessageBoxButtons.OK, MessageBoxIcon.Information);
|
|
return 0;
|
|
}
|
|
SelfUpdate.CleanupOldVersion();
|
|
if (Installer.RunningInstalled) Installer.Register(); // Version in "Apps & Features" nach einem Selbst-Update
|
|
Application.Run(new MainForm());
|
|
return 0;
|
|
}
|
|
}
|