111 lines
4.0 KiB
PowerShell
111 lines
4.0 KiB
PowerShell
|
# Run in ACTIVATE_LICENSE_PATH directory
|
||
|
Write-Output "Changing to $ACTIVATE_LICENSE_PATH directory."
|
||
|
Push-Location "$ACTIVATE_LICENSE_PATH"
|
||
|
|
||
|
if ( ($null -ne ${env:UNITY_LICENSE}) -or ($null -ne ${env:UNITY_LICENSE_FILE}) )
|
||
|
{
|
||
|
#
|
||
|
# PERSONAL LICENSE MODE
|
||
|
#
|
||
|
# This will activate Unity, using a license file
|
||
|
#
|
||
|
# Note that this is the ONLY WAY for PERSONAL LICENSES in 2020.
|
||
|
# * See for more details: https://gitlab.com/gableroux/unity3d-gitlab-ci-example/issues/5#note_72815478
|
||
|
#
|
||
|
# The license file can be acquired using `game-ci/request-manual-activation-file` action.
|
||
|
Write-Output "Requesting activation (personal license)"
|
||
|
|
||
|
# Set the license file path
|
||
|
$FILE_PATH = "$ACTIVATE_LICENSE_PATH\UnityLicenseFile.ulf"
|
||
|
|
||
|
if ($null -ne ${env:UNITY_LICENSE})
|
||
|
{
|
||
|
# Copy license file from Github variables
|
||
|
Add-Content -Path $FILE_PATH -Value ${env:UNITY_LICENSE}
|
||
|
}
|
||
|
elseif ($null -ne ${env:UNITY_LICENSE_FILE})
|
||
|
{
|
||
|
# Copy license file from file system
|
||
|
Add-Content -Path $FILE_PATH -Value ${env:UNITY_LICENSE_FILE}
|
||
|
}
|
||
|
$convert = (Get-Content -Raw $FILE_PATH) -replace "`r`n","`n"
|
||
|
[io.file]::WriteAllText($FILE_PATH, $convert)
|
||
|
Get-ChildItem -Path $FILE_PATH
|
||
|
|
||
|
# Activate license
|
||
|
$ACTIVATION_OUTPUT = Start-Process -NoNewWindow -Wait -PassThru "C:\Program Files\Unity\Hub\Editor\${env:UNITY_VERSION}\editor\Unity.exe" -ArgumentList "-batchmode -nographics -logFile $ACTIVATE_LICENSE_PATH\activate.log -quit -manualLicenseFile $FILE_PATH"
|
||
|
|
||
|
# Store the exit code from the verify command
|
||
|
$UNITY_EXIT_CODE = $ACTIVATION_OUTPUT.ExitCode
|
||
|
|
||
|
# The exit code for personal activation is always 1;
|
||
|
# Determine whether activation was successful.
|
||
|
#
|
||
|
# Successful output should include the following:
|
||
|
#
|
||
|
# "LICENSE SYSTEM [2020120 18:51:20] Next license update check is after 2019-11-25T18:23:38"
|
||
|
#
|
||
|
$ACTIVATION_SUCCESSFUL = (Get-Content $ACTIVATE_LICENSE_PATH\activate.log | Select-String 'Next license update check is after' | Measure-Object -line | Select-Object -Expand Lines)
|
||
|
|
||
|
# Set exit code to 0 if activation was successful
|
||
|
if ($ACTIVATION_SUCCESSFUL -eq 1)
|
||
|
{
|
||
|
$UNITY_EXIT_CODE = 0
|
||
|
}
|
||
|
|
||
|
# Remove license file
|
||
|
Remove-Item -Force $FILE_PATH
|
||
|
}
|
||
|
elseif ( ($null -ne ${env:UNITY_SERIAL}) -and ($null -ne ${env:UNITY_EMAIL}) -and ($null -ne ${env:UNITY_PASSWORD}) )
|
||
|
{
|
||
|
#
|
||
|
# PROFESSIONAL (SERIAL) LICENSE MODE
|
||
|
#
|
||
|
# This will activate unity, using the activating process.
|
||
|
#
|
||
|
# Note: This is the preferred way for PROFESSIONAL LICENSES.
|
||
|
#
|
||
|
Write-Output "Requesting activation (professional license)"
|
||
|
|
||
|
# Activate license
|
||
|
$ACTIVATION_OUTPUT = Start-Process -NoNewWindow -Wait -PassThru "C:\Program Files\Unity\Hub\Editor\${env:UNITY_VERSION}\editor\Unity.exe" -ArgumentList "-batchmode -nographics -logFile $ACTIVATE_LICENSE_PATH\activate.log -quit -serial ${env:UNITY_SERIAL} -username ${env:UNITY_EMAIL} -password ${env:UNITY_PASSWORD}"
|
||
|
|
||
|
# Store the exit code from the verify command
|
||
|
$UNITY_EXIT_CODE = $ACTIVATION_OUTPUT.ExitCode
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
#
|
||
|
# NO LICENSE ACTIVATION STRATEGY MATCHED
|
||
|
#
|
||
|
# This will exit since no activation strategies could be matched.
|
||
|
#
|
||
|
Write-Output "License activation strategy could not be determined."
|
||
|
Write-Output ""
|
||
|
Write-Output "Visit https://game.ci/docs/github/getting-started for more"
|
||
|
Write-Output "details on how to set up one of the possible activation strategies."
|
||
|
|
||
|
# Immediately exit as no UNITY_EXIT_CODE can be derived.
|
||
|
exit 1;
|
||
|
}
|
||
|
|
||
|
#
|
||
|
# Display information about the result
|
||
|
#
|
||
|
Get-Content $ACTIVATE_LICENSE_PATH\activate.log
|
||
|
if ($UNITY_EXIT_CODE -eq 0)
|
||
|
{
|
||
|
# Activation was a success
|
||
|
Write-Output "Activation complete."
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
# Activation failed so exit with the code from the license verification step
|
||
|
Write-Output "Unclassified error occured while trying to activate license."
|
||
|
Write-Output "Exit code was: $UNITY_EXIT_CODE"
|
||
|
exit $UNITY_EXIT_CODE
|
||
|
}
|
||
|
|
||
|
# Return to previous working directory
|
||
|
Pop-Location
|