From d32cb280b6fb5d5fd8845c8375e3167c756133ea Mon Sep 17 00:00:00 2001 From: Steve Streeting Date: Mon, 5 Oct 2020 16:18:30 +0100 Subject: [PATCH] Close the UE editor automatically --- inc/ueeditor.ps1 | 26 ++++++++++++++++++++++++++ ue4-package.ps1 | 6 ++++++ 2 files changed, 32 insertions(+) create mode 100644 inc/ueeditor.ps1 diff --git a/inc/ueeditor.ps1 b/inc/ueeditor.ps1 new file mode 100644 index 0000000..69605e8 --- /dev/null +++ b/inc/ueeditor.ps1 @@ -0,0 +1,26 @@ + +function Close-UE-Editor { + param ( + [string]$uprojectname, + [bool]$dryrun + ) + + # Filter by project name in main window title, it's always called "Project - Unreal Editor" + $ue4proc = Get-Process UE4Editor -ErrorAction SilentlyContinue | Where-Object {$_.MainWindowTitle -like "$uprojectname*" } + if ($ue4proc) { + if ($dryrun) { + Write-Output "UE4 project is currently open in editor, would have closed" + } else { + Write-Output "UE4 project is currently open in editor, closing..." + $ue4proc.CloseMainWindow() > $null + Start-Sleep 5 + if (!$ue4proc.HasExited) { + throw "Couldn't close UE4 gracefully, aborting!" + } + } + } else { + Write-Verbose "UE4 project is not open in editor" + } + Remove-Variable ue4proc + +} diff --git a/ue4-package.ps1 b/ue4-package.ps1 index de4c4a6..5f3a52e 100644 --- a/ue4-package.ps1 +++ b/ue4-package.ps1 @@ -23,6 +23,7 @@ param ( . $PSScriptRoot\inc\projectversion.ps1 . $PSScriptRoot\inc\uproject.ps1 . $PSScriptRoot\inc\ueinstall.ps1 +. $PSScriptRoot\inc\ueeditor.ps1 function Write-Usage { @@ -176,6 +177,11 @@ try { if ($src -ne ".") { Pop-Location } } + + $editorprojname = [System.IO.Path]::GetFileNameWithoutExtension($projfile) + Close-UE-Editor $editorprojname $dryrun + + $ueEditorCmd = Join-Path $ueinstall "Engine/Binaries/Win64/UE4Editor-Cmd$exeSuffix" $runUAT = Join-Path $ueinstall "Engine/Build/BatchFiles/RunUAT$batchSuffix"