Azure Pipeline - exe 安装挂起

问题描述 投票:0回答:1

遇到一个不寻常的问题,作为我的 Azure Pipeline 中的一个步骤的一部分,我正在通过 cmd/脚本安装应用程序 (.exe)。

自托管代理正在我的 PC 上运行。当管道触发 exe 安装步骤(完全/无头模式)时,安装程序会挂起。 如果我从命令提示符运行相同的命令,它安装得很好。

使用notepad++进行测试,看看这是否是我自己的应用程序的问题并且存在相同的问题。

从 Azure 管道安装 exe 时是否需要指定任何其他权限

azure-devops azure-pipelines exe
1个回答
0
投票

我刚刚解决了类似的问题。我遇到的问题是通过管道中的 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 的来源:

  1. https://www.reddit.com/r/azuredevops/comments/10w8fkv/the_mystery_of_failing_msi_installation/
  2. https://answers.microsoft.com/en-us/windows/forum/all/error-code-1601-windows-installer-could-not-be/cdc7c1cb-db7c-e011-9b4b-68b599b31bf5
  3. DigiCert - Azure DevOps YAML 任务 SSMClientToolsSetup@1 失败并出现“无法访问 Windows Installer 服务”错误
  4. 从服务运行时,Windows Installer 始终失败并出现错误 1601 或 1603

调试过程中的另一件事我上面没有提到,但可能与Python安装程序更相关。我必须找到 Python 安装程序将日志写入的路径 (C:\Users\AppData\Local\Temp),然后当我查看这些日志文件时,我发现了另一个错误代码 - 0x80070005 - 导致我收到的故障排除反馈大多相同,但只是将其包括在内,以防将来对其他人有帮助。

0x80070005 的来源:

  1. https://github.com/dotnet/core/issues/8053
  2. https://answers.microsoft.com/en-us/windows/forum/all/0x80070641-the-windows-installer-service-could-not/826884c5-b73a-44c5-9119-d0197d8c54ae
  3. https://www.elevenforum.com/t/error-0x80070005-when-trying-to-install-apps-from-microsoft-store.24503/

无论如何,他们说什么,如有疑问,请重新启动。

© www.soinside.com 2019 - 2024. All rights reserved.