mirror of
https://github.com/jellyfin/jellyfin.git
synced 2024-09-06 11:34:57 +02:00
install 4.6 framework
This commit is contained in:
parent
c079d4b7c2
commit
ecc47fa560
1 changed files with 90 additions and 0 deletions
|
@ -256,6 +256,9 @@ namespace MediaBrowser.ServerApplication
|
|||
task = InstallVcredistIfNeeded(_appHost, _logger);
|
||||
Task.WaitAll(task);
|
||||
|
||||
task = InstallFrameworkV46IfNeeded(_logger);
|
||||
Task.WaitAll(task);
|
||||
|
||||
SystemEvents.SessionEnding += SystemEvents_SessionEnding;
|
||||
SystemEvents.SessionSwitch += SystemEvents_SessionSwitch;
|
||||
|
||||
|
@ -573,6 +576,93 @@ namespace MediaBrowser.ServerApplication
|
|||
}
|
||||
}
|
||||
|
||||
private static async Task InstallFrameworkV46IfNeeded(ILogger logger)
|
||||
{
|
||||
bool installFrameworkV46 = false;
|
||||
|
||||
try
|
||||
{
|
||||
using (RegistryKey ndpKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32)
|
||||
.OpenSubKey("SOFTWARE\\Microsoft\\NET Framework Setup\\NDP\\v4\\Full\\"))
|
||||
{
|
||||
if (ndpKey != null && ndpKey.GetValue("Release") != null)
|
||||
{
|
||||
if ((int)ndpKey.GetValue("Release") <= 393295)
|
||||
{
|
||||
//Found framework V4, but not yet V4.6
|
||||
installFrameworkV46 = true;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
//Nothing found in the registry for V4
|
||||
installFrameworkV46 = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
logger.ErrorException("Error getting .NET Framework version", ex);
|
||||
}
|
||||
|
||||
_logger.Info(".NET Framework 4.6 found: {0}", !installFrameworkV46);
|
||||
|
||||
if (installFrameworkV46)
|
||||
{
|
||||
try
|
||||
{
|
||||
await InstallFrameworkV46().ConfigureAwait(false);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
logger.ErrorException("Error installing .NET Framework version 4.6", ex);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static async Task InstallFrameworkV46()
|
||||
{
|
||||
var httpClient = _appHost.HttpClient;
|
||||
|
||||
var tmp = await httpClient.GetTempFile(new HttpRequestOptions
|
||||
{
|
||||
Url = "https://github.com/MediaBrowser/Emby.Resources/raw/master/netframeworkV46/NDP46-KB3045560-Web.exe",
|
||||
Progress = new Progress<double>()
|
||||
|
||||
}).ConfigureAwait(false);
|
||||
|
||||
var exePath = Path.ChangeExtension(tmp, ".exe");
|
||||
File.Copy(tmp, exePath);
|
||||
|
||||
var startInfo = new ProcessStartInfo
|
||||
{
|
||||
FileName = exePath,
|
||||
|
||||
CreateNoWindow = true,
|
||||
WindowStyle = ProcessWindowStyle.Hidden,
|
||||
Verb = "runas",
|
||||
ErrorDialog = false,
|
||||
Arguments = "/q /norestart"
|
||||
};
|
||||
|
||||
|
||||
_logger.Info("Running {0}", startInfo.FileName);
|
||||
|
||||
using (var process = Process.Start(startInfo))
|
||||
{
|
||||
process.WaitForExit();
|
||||
//process.ExitCode
|
||||
/*
|
||||
0 --> Installation completed successfully.
|
||||
1602 --> The user canceled installation.
|
||||
1603 --> A fatal error occurred during installation.
|
||||
1641 --> A restart is required to complete the installation. This message indicates success.
|
||||
3010 --> A restart is required to complete the installation. This message indicates success.
|
||||
5100 --> The user's computer does not meet system requirements.
|
||||
*/
|
||||
}
|
||||
}
|
||||
|
||||
private static async Task InstallVcredistIfNeeded(ApplicationHost appHost, ILogger logger)
|
||||
{
|
||||
try
|
||||
|
|
Loading…
Reference in a new issue