diff --git a/.github/workflows/Publish.yml b/.github/workflows/Publish.yml index f706132..b2e2806 100644 --- a/.github/workflows/Publish.yml +++ b/.github/workflows/Publish.yml @@ -7,7 +7,7 @@ on: jobs: publish: - runs-on: windows-latest + runs-on: ubuntu-latest steps: - name: Checkout Repository diff --git a/src/Snap.Hutao.Deployment.Runtime/Snap.Hutao.Deployment.Runtime.nuspec b/src/Snap.Hutao.Deployment.Runtime/Snap.Hutao.Deployment.Runtime.nuspec index 2dd864a..97f91a7 100644 --- a/src/Snap.Hutao.Deployment.Runtime/Snap.Hutao.Deployment.Runtime.nuspec +++ b/src/Snap.Hutao.Deployment.Runtime/Snap.Hutao.Deployment.Runtime.nuspec @@ -2,7 +2,7 @@ Snap.Hutao.Deployment.Runtime - 1.14.0 + 1.15.0 DGP Studio true false diff --git a/src/Snap.Hutao.Deployment.Runtime/Snap.Hutao.Deployment.exe b/src/Snap.Hutao.Deployment.Runtime/Snap.Hutao.Deployment.exe index 1d103d3..16bc90e 100644 Binary files a/src/Snap.Hutao.Deployment.Runtime/Snap.Hutao.Deployment.exe and b/src/Snap.Hutao.Deployment.Runtime/Snap.Hutao.Deployment.exe differ diff --git a/src/Snap.Hutao.Deployment/WindowsAppSDKDependency.cs b/src/Snap.Hutao.Deployment/WindowsAppSDKDependency.cs index 7ccd615..6ad5e91 100644 --- a/src/Snap.Hutao.Deployment/WindowsAppSDKDependency.cs +++ b/src/Snap.Hutao.Deployment/WindowsAppSDKDependency.cs @@ -20,30 +20,50 @@ internal static partial class WindowsAppSDKDependency public static async Task EnsureAsync(string packagePath) { using FileStream packageStream = File.OpenRead(packagePath); - using ZipArchive package = new(packageStream, ZipArchiveMode.Read); - - (string packageName, string msixVersion) = await ExtractRuntimePackageNameAndMsixMinVersionFromAppManifestAsync(package).ConfigureAwait(false); - if (string.IsNullOrEmpty(packageName) || string.IsNullOrEmpty(msixVersion)) + ZipArchive package = default!; + try { - Console.WriteLine("No Windows App Runtime version found in Msix/AppxManifest.xml"); - return; + package = new(packageStream, ZipArchiveMode.Read); + } + catch (InvalidDataException) + { + Console.WriteLine("Msix Package corrupted, please re-launch Deployment and try again"); + try + { + File.Delete(packagePath); + } + catch + { + } + + throw; } - if (await CheckRuntimeInstalledAndVerifyAsync(packageName, msixVersion).ConfigureAwait(false)) + using (package) { - return; - } + (string packageName, string msixVersion) = await ExtractRuntimePackageNameAndMsixMinVersionFromAppManifestAsync(package).ConfigureAwait(false); + if (string.IsNullOrEmpty(packageName) || string.IsNullOrEmpty(msixVersion)) + { + Console.WriteLine("No Windows App Runtime version found in Msix/AppxManifest.xml"); + return; + } - string sdkVersion = await ExtractSDKVersionFromDepsJsonAsync(package).ConfigureAwait(false); + if (await CheckRuntimeInstalledAndVerifyAsync(packageName, msixVersion).ConfigureAwait(false)) + { + return; + } - if (string.IsNullOrEmpty(sdkVersion)) - { - Console.WriteLine("No Windows App SDK version found in Msix/Snap.Hutao.deps.json"); - return; - } + string sdkVersion = await ExtractSDKVersionFromDepsJsonAsync(package).ConfigureAwait(false); - Console.WriteLine("Start downloading SDK installer..."); - await DownloadWindowsAppRuntimeInstallAndInstallAsync(sdkVersion).ConfigureAwait(false); + if (string.IsNullOrEmpty(sdkVersion)) + { + Console.WriteLine("No Windows App SDK version found in Msix/Snap.Hutao.deps.json"); + return; + } + + Console.WriteLine("Start downloading SDK installer..."); + await DownloadWindowsAppRuntimeInstallAndInstallAsync(sdkVersion).ConfigureAwait(false); + }; } private static async Task ExtractSDKVersionFromDepsJsonAsync(ZipArchive package)