遇到一个不寻常的问题,作为我的 Azure Pipeline 中的一个步骤的一部分,我正在通过 cmd/脚本安装应用程序 (.exe)。
自托管代理正在我的 PC 上运行。当管道触发 exe 安装步骤(完全/无头模式)时,安装程序会挂起。 如果我从命令提示符运行相同的命令,它安装得很好。
使用notepad++进行测试,看看这是否是我自己的应用程序的问题并且存在相同的问题。
从 Azure 管道安装 exe 时是否需要指定任何其他权限
我刚刚解决了类似的问题。我遇到的问题是通过管道中的 powershell 脚本在构建代理上安装 Python。如果我在构建代理服务器上运行脚本没有问题,但是当它通过管道运行时,它会默默地失败。
我必须解决的第一件事是获取输出。我使用的是
Start-Process
,它不会向控制台回显任何内容。我在 SO 上找到了这个答案,它描述了如何做到这一点(https://stackoverflow.com/a/8762068/2446435)。
这是我的代码的片段:
Invoke-WebRequest -Uri $Installer_Link -OutFile $Installer_File_Path
Write-Output "Installing Python $Version $Target_Architecture into $Install_Directory"
$arguments = "/passive /quiet InstallAllUsers=0 Include_launcher=0 Shortcuts=0 TargetDir=$Install_Directory"
$processInfo = New-Object System.Diagnostics.ProcessStartInfo($Installer_File_Path, $arguments)
$processInfo.RedirectStandardError = $true
$processInfo.RedirectStandardOutput = $true
$processInfo.UseShellExecute = $false
$processInfo.CreateNoWindow = $false
$process = New-Object System.Diagnostics.Process
$process.StartInfo = $processInfo
$process.Start() | Out-Null
$process.WaitForExit()
$stdout = $process.StandardOutput.ReadToEnd()
$stderr = $process.StandardError.ReadToEnd()
Write-Host "stdout: $stdout"
Write-Host "stderr: $stderr"
Write-Host "exit code: " + $process.ExitCode
所以我发现实际上没有 stdout 或 stderr,但经过一番谷歌搜索并尝试了一些操作(例如
MSIEXEC /UNREGISTER
和 MSIEXEC /REGSERVER
、停止/启动 Windows Installer 服务,并制作)后,我发现退出代码为 1601确保 Azure DevOps Agent Service 帐户实际上是管理员。我认为这是最后一个真正为我做到这一点的,但在将我的 svc 帐户设置为服务器上本地管理员组的一部分后,它并没有立即开始工作,而是我必须重新启动,然后一切都开始工作.
1601 的来源:
调试过程中的另一件事我上面没有提到,但可能与Python安装程序更相关。我必须找到 Python 安装程序将日志写入的路径 (C:\Users
0x80070005 的来源:
无论如何,他们说什么,如有疑问,请重新启动。