diff --git a/osu.Desktop/OsuGameDesktop.cs b/osu.Desktop/OsuGameDesktop.cs
index a6d9ff1653..2e1b34fb38 100644
--- a/osu.Desktop/OsuGameDesktop.cs
+++ b/osu.Desktop/OsuGameDesktop.cs
@@ -138,7 +138,7 @@ namespace osu.Desktop
LoadComponentAsync(new GameplayWinKeyBlocker(), Add);
if (OperatingSystem.IsWindows() && IsDeployedBuild)
- LoadComponentAsync(new WindowsAssociationManager(Path.ChangeExtension(typeof(OsuGameDesktop).Assembly.Location, ".exe"), "osu"), Add);
+ LoadComponentAsync(new WindowsAssociationManager(), Add);
LoadComponentAsync(new ElevatedPrivilegesChecker(), Add);
diff --git a/osu.Desktop/Windows/WindowsAssociationManager.cs b/osu.Desktop/Windows/WindowsAssociationManager.cs
index a5f977d15d..7131067224 100644
--- a/osu.Desktop/Windows/WindowsAssociationManager.cs
+++ b/osu.Desktop/Windows/WindowsAssociationManager.cs
@@ -2,6 +2,7 @@
// See the LICENCE file in the repository root for full licence text.
using System;
+using System.IO;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
using Microsoft.Win32;
@@ -31,6 +32,14 @@ namespace osu.Desktop.Windows
///
public const string SHELL_OPEN_COMMAND = @"Shell\Open\Command";
+ public static readonly string EXE_PATH = Path.ChangeExtension(typeof(WindowsAssociationManager).Assembly.Location, ".exe");
+
+ ///
+ /// Program ID prefix used for file associations. Should be relatively short since the full program ID has a 39 character limit,
+ /// see https://learn.microsoft.com/en-us/windows/win32/com/-progid--key.
+ ///
+ public const string PROGRAM_ID_PREFIX = "osu";
+
private static readonly FileAssociation[] file_associations =
{
new FileAssociation(@".osz", WindowsAssociationManagerStrings.OsuBeatmap, Icons.Lazer),
@@ -50,20 +59,6 @@ namespace osu.Desktop.Windows
private IBindable localisationParameters = null!;
- private readonly string exePath;
- private readonly string programIdPrefix;
-
- /// Path to the executable to register.
- ///
- /// Program ID prefix used for file associations. Should be relatively short since the full program ID has a 39 character limit,
- /// see https://learn.microsoft.com/en-us/windows/win32/com/-progid--key.
- ///
- public WindowsAssociationManager(string exePath, string programIdPrefix)
- {
- this.exePath = exePath;
- this.programIdPrefix = programIdPrefix;
- }
-
[BackgroundDependencyLoader]
private void load()
{
@@ -87,10 +82,10 @@ namespace osu.Desktop.Windows
return;
foreach (var association in file_associations)
- association.Install(classes, exePath, programIdPrefix);
+ association.Install(classes, EXE_PATH, PROGRAM_ID_PREFIX);
foreach (var association in uri_associations)
- association.Install(classes, exePath);
+ association.Install(classes, EXE_PATH);
}
updateDescriptions();
@@ -112,7 +107,7 @@ namespace osu.Desktop.Windows
foreach (var association in file_associations)
{
var b = localisation.GetLocalisedBindableString(association.Description);
- association.UpdateDescription(classes, programIdPrefix, b.Value);
+ association.UpdateDescription(classes, PROGRAM_ID_PREFIX, b.Value);
b.UnbindAll();
}
@@ -131,7 +126,7 @@ namespace osu.Desktop.Windows
}
}
- public void UninstallAssociations() => UninstallAssociations(programIdPrefix);
+ public void UninstallAssociations() => UninstallAssociations(PROGRAM_ID_PREFIX);
public static void UninstallAssociations(string programIdPrefix)
{