Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
41 changes: 25 additions & 16 deletions Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -195,31 +195,40 @@ private static void StartProcess(string relativePath, bool run32Bit = false, boo
});
}

private static FileInfo CheckAndRetrieveDotNetHost(Architecture architecture, bool runDesktop)
private static FileInfo CheckAndRetrieveDotNetHost(Architecture machineArchitecture, bool runDesktop)
{
if (architecture is not Architecture.X86 && automaticX86Fallback
&& ((runDesktop && !IsDotNetDesktopInstalled(architecture)) || !IsDotNetCoreInstalled(architecture)))
// Architectures to be searched for
List<Architecture> architectures = new() { machineArchitecture };
if (automaticX86Fallback && machineArchitecture != Architecture.X86)
architectures.Add(Architecture.X86);

// Search for installed dotnet architectures
Architecture? availableArchitecture = null;
foreach (Architecture architecture in architectures)
{
architecture = Architecture.X86;
if (IsDotNetCoreInstalled(architecture)
&& (!runDesktop || IsDotNetDesktopInstalled(architecture)))
{
availableArchitecture = architecture;
break;
}
}

if (runDesktop && !IsDotNetDesktopInstalled(architecture))
// Prompt the download link and terminate the program if no architectures are available
if (availableArchitecture is null)
{
string missingComponent = $"'.NET Desktop Runtime' version {DotNetMajorVersion} for platform {architecture}";

ShowMissingComponentForm(missingComponent, DotNetDownloadLinks[(architecture, true)]);
string missingComponent = runDesktop
? $"'.NET Desktop Runtime' version {DotNetMajorVersion} for platform {machineArchitecture}"
: $"'.NET Runtime' version {DotNetMajorVersion} for platform {machineArchitecture}";
ShowMissingComponentForm(missingComponent, DotNetDownloadLinks[(machineArchitecture, runDesktop)]);
return null;
}

FileInfo? dotnetHost = GetDotNetHost(architecture);

if (!(dotnetHost?.Exists ?? false))
else
{
string missingComponent = $"'.NET Runtime' version {DotNetMajorVersion} for platform {architecture}";

ShowMissingComponentForm(missingComponent, DotNetDownloadLinks[(architecture, false)]);
FileInfo? dotnetHost = GetDotNetHost(availableArchitecture.GetValueOrDefault());
return dotnetHost!;
}

return dotnetHost!;
}

private static void ShowMissingComponentForm(string missingComponent, Uri downloadLink)
Expand Down