[C#] Webview2 runtime 설치 여부 및 설치 (tistory.com)
기존엔 WebClient를 이용했지만 ms에서 HttpClient 사용 권장
public static async Task InstallWebview2RuntimeAsync()
{
// 윈도우가 아니면 리턴, 그렇지만 다운로드 파일이 os 가리지 않는다면 제거해도 무방.
if (!System.Runtime.InteropServices.RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
return;
string firstPath = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);
string appName = Path.Combine(firstPath, "MicrosoftEdgeWebview2Setup.exe");
try
{
using (HttpClient httpClient = new HttpClient())
{
var result = await httpClient.GetAsync("https://go.microsoft.com/fwlink/p/?LinkId=2124703");
result.EnsureSuccessStatusCode();
using (var stream = await result.Content.ReadAsStreamAsync())
{
using (var fs = new FileStream(appName, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite))
{
await stream.CopyToAsync(fs);
}
}
Console.WriteLine("Webview2Runtime 다운로드 완료");
if (File.Exists(appName))
{
Console.WriteLine("Webview2Runtime 설치 시작");
await Process.Start(appName, " /silent /install").WaitForExitAsync();
Console.WriteLine("Webview2Runtime 설치 완료");
if (File.Exists(appName))
{
File.Delete(appName);
StaticLogManager.WriteInfoLogToEventViewer("MicrosoftEdgeWebview2Setup.exe 삭제 완료");
}
}
}
}
catch (HttpRequestException hre)
{
Console.WriteLine($"{nameof(HttpRequestException)} - {hre.Message}");
}
catch (Exception e)
{
Console.WriteLine($"InstallWebview2RuntimeAsync Error : {e.Message}{Environment.NewLine} Data : {e.Data}{Environment.NewLine} StackTrace : {e.StackTrace}");
}
}
'C#' 카테고리의 다른 글
[C#] System.Text.Json.JsonSerializer.Serialize 할 때 한글이 유니코드 형식으로 출력 될 때 (0) | 2022.02.11 |
---|---|
[C#] .NET 6 - NativeMemory 사용 (0) | 2022.01.12 |
[C#] .NET 6 HttpClient - The SSL connection could not be established, see inner exception (0) | 2021.12.14 |
[C#] WPF Resource에서 이미지 파일(BitmapImage) 코드로 가져오기 (0) | 2021.12.07 |
[C#] OpenCV Cam ChromaKey - 캠 크로마키 (0) | 2021.12.02 |