Common Windows issues
Cannot access variables from the app
Description
You can’t access the variable directly by using $VAR_NAME.
Solution
You can reference the variable in subsequent parts of your workflow by using $env:VAR_NAME.
However, when using a variable to set another variable in the vars: section, use the following syntax:
environment:
vars:
VAR_1: ---\$VAR_2\---Using Command Prompt
Description
The default shell on the Windows machines is PowerShell, but you need to run scripts using Command Prompt.
Solution
Invoke the Command Prompt app directly and pass your script as an argument:
scripts:
- name: Run a command in Command Prompt
script: |
cmd.exe \c YOUR_COMMAND_HEREScript with spaces and quotes not behaving as expected
Description
When PowerShell sees a command starting with a string, it just evaluates the string. Typically, this means echoing it to the screen:
PS> "C:\Program Files\Unity Hub\Unity Hub.exe"
Hello WorldSolution
If you want PowerShell to interpret the string as a command name, use the call operator (&):
& 'C:\Program Files\Unity Hub\Unity Hub.exe' ...If you want to use PowerShell to run an .exe file with parameters that contain spaces or quotes, use the Start-Process method:
Start-Process -NoNewWindow -FilePath "path-to-your-exe-file" -ArgumentList 'your-arguments-are-here' -WaitWrong value in base64 encoded environment variables
Description
Scripts fail when using base64 encoded variables or use incorrect values.
Solution
Encoded variables need to be decoded back into their original form before they can be used. For example, to decode a variable $VAR1 and save the result as variable PATH, use the following script:
[Text.Encoding]::UTF8.GetString([Convert]::FromBase64String("$env:VAR1")) | Out-File -FilePath $env:PATHCannot access the build machine using SSH or VNC/RDP
Description
Linux and macOS machines can be accessed using SSH or VNC. However, the access does not work when using a Windows build machine.
Solution
SSH and VNC access is not available on Windows build machines. You can access them using an RDP client instead.
Learn more: Remote access to the build machine.