From f6e58e7e5f2fef3a98697628176e1dd4b4bd365f Mon Sep 17 00:00:00 2001 From: Charles Milette Date: Mon, 19 Mar 2018 13:44:57 -0400 Subject: [PATCH] Build final artifacts even on a pull request FFmpeg only gets downloaded on tagged builds makeappx's standard output is also redirected to console --- AppVeyor/after_build.ps1 | 34 ++++++++++++++++++---------- ShareX.Setup/Program.cs | 48 ++++++++++++++++++++++++++++++++-------- 2 files changed, 61 insertions(+), 21 deletions(-) diff --git a/AppVeyor/after_build.ps1 b/AppVeyor/after_build.ps1 index bfdd79f8b..3a4005d8f 100644 --- a/AppVeyor/after_build.ps1 +++ b/AppVeyor/after_build.ps1 @@ -1,18 +1,28 @@ -if ($env:APPVEYOR_PULL_REQUEST_NUMBER -eq $null) +if ($env:APPVEYOR_REPO_TAG -eq $true) { - if ($env:CONFIGURATION -eq "Release") + if ($env:CONFIGURATION -eq "Steam") { - & "ShareX.Setup\bin\Release\ShareX.Setup.exe" -AppVeyorRelease + & "ShareX.Setup\bin\Steam\ShareX.Setup.exe" -AppVeyorSteamRelease } - elseif ($env:APPVEYOR_REPO_TAG -eq $true) + elseif ($env:CONFIGURATION -eq "WindowsStore") { - if ($env:CONFIGURATION -eq "Steam") - { - & "ShareX.Setup\bin\Steam\ShareX.Setup.exe" -AppVeyorSteam - } - elseif ($env:CONFIGURATION -eq "WindowsStore") - { - & "ShareX.Setup\bin\WindowsStore\ShareX.Setup.exe" -AppVeyorWindowsStore - } + & "ShareX.Setup\bin\WindowsStore\ShareX.Setup.exe" -AppVeyorWindowsStoreRelease } +} +elseif ($env:CONFIGURATION -eq "Release") +{ + & "ShareX.Setup\bin\Release\ShareX.Setup.exe" -AppVeyorRelease +} +elseif ($env:CONFIGURATION -eq "Steam") +{ + & "ShareX.Setup\bin\Steam\ShareX.Setup.exe" -AppVeyorSteam +} +elseif ($env:CONFIGURATION -eq "WindowsStore") +{ + & "ShareX.Setup\bin\WindowsStore\ShareX.Setup.exe" -AppVeyorWindowsStore +} + +if ($env:APPVEYOR_PULL_REQUEST_NUMBER -ne $null) +{ + Remove-Item -Recurse -Force "Output" } \ No newline at end of file diff --git a/ShareX.Setup/Program.cs b/ShareX.Setup/Program.cs index 244afd728..07575ced7 100644 --- a/ShareX.Setup/Program.cs +++ b/ShareX.Setup/Program.cs @@ -47,6 +47,7 @@ private enum SetupJobs CreateWindowsStoreFolder = 1 << 6, CreateWindowsStoreDebugFolder = 1 << 7, CompileAppx = 1 << 8, + DownloadFFmpeg = 1 << 9, Stable = CreateSetup | CreatePortable | OpenOutputDirectory, Setup = CreateSetup | OpenOutputDirectory, @@ -58,7 +59,9 @@ private enum SetupJobs Beta = CreateSetup | UploadOutputFile, AppVeyorRelease = CreateSetup | CreatePortable, AppVeyorSteam = CreateSteamFolder, - AppVeyorWindowsStore = CreateWindowsStoreFolder | CompileAppx + AppVeyorWindowsStore = CreateWindowsStoreFolder | CompileAppx, + AppVeyorSteamRelease = AppVeyorSteam | DownloadFFmpeg, + AppVeyorWindowsStoreRelease = AppVeyorWindowsStore | DownloadFFmpeg } private static SetupJobs Job = SetupJobs.Stable; @@ -113,6 +116,16 @@ private static void Main(string[] args) AppVeyor = true; Job = SetupJobs.AppVeyorWindowsStore; } + else if (SetupHelpers.CheckArguments(args, "-AppVeyorSteamRelease")) + { + AppVeyor = true; + Job = SetupJobs.AppVeyorSteamRelease; + } + else if (SetupHelpers.CheckArguments(args, "-AppVeyorWindowsStoreRelease")) + { + AppVeyor = true; + Job = SetupJobs.AppVeyorWindowsStoreRelease; + } Console.WriteLine("Setup job: " + Job); @@ -136,11 +149,21 @@ private static void Main(string[] args) if (Job.HasFlag(SetupJobs.CreateSteamFolder)) { CreateSteamFolder(); + + if (Job.HasFlag(SetupJobs.DownloadFFmpeg)) + { + CopyFFmpeg(SteamUpdatesDir, true, true); + } } if (Job.HasFlag(SetupJobs.CreateWindowsStoreFolder)) { CreateFolder(WindowsStoreDir, WindowsStoreOutputDir, SetupJobs.CreateWindowsStoreFolder); + + if (Job.HasFlag(SetupJobs.DownloadFFmpeg)) + { + CopyFFmpeg(WindowsStoreOutputDir, false, true); + } } if (Job.HasFlag(SetupJobs.CreateWindowsStoreDebugFolder)) @@ -150,8 +173,20 @@ private static void Main(string[] args) if (Job.HasFlag(SetupJobs.CompileAppx)) { - Process.Start(@"C:\Program Files (x86)\Windows Kits\10\bin\x64\makeappx.exe", - $"pack /d \"{WindowsStoreOutputDir}\" /p \"{WindowsStoreAppxPath}\" /l /o").WaitForExit(); + Process p = new Process + { + StartInfo = new ProcessStartInfo + { + FileName = @"C:\Program Files (x86)\Windows Kits\10\bin\x64\makeappx.exe", + Arguments = $"pack /d \"{WindowsStoreOutputDir}\" /p \"{WindowsStoreAppxPath}\" /l /o", + UseShellExecute = false, + RedirectStandardOutput = true + } + }; + p.OutputDataReceived += (s, e) => Console.WriteLine(e.Data); + p.Start(); + p.BeginOutputReadLine(); + p.WaitForExit(); Directory.Delete(WindowsStoreOutputDir, true); } @@ -267,11 +302,7 @@ private static void CreateFolder(string source, string destination, SetupJobs jo Helpers.CopyAll(Path.Combine(ParentDir, @"ShareX.ScreenCaptureLib\Stickers"), Path.Combine(destination, "Stickers")); - if (job == SetupJobs.CreateSteamFolder) - { - CopyFFmpeg(destination, true, true); - } - else if (job == SetupJobs.CreatePortableAppsFolder) + if (job == SetupJobs.CreatePortableAppsFolder) { Helpers.CreateEmptyFile(Path.Combine(destination, "PortableApps")); } @@ -279,7 +310,6 @@ private static void CreateFolder(string source, string destination, SetupJobs jo { SetupHelpers.CopyFile(Path.Combine(DesktopBridgeHelperDir, "ShareX_DesktopBridgeHelper.exe"), destination); Helpers.CopyAll(WindowsStorePackageFilesDir, destination); - CopyFFmpeg(destination, false, true); } else if (job == SetupJobs.CreatePortable) {