从.ebextensions向Windows PATH添加可执行文件,然后在后续命令中调用可执行文件

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

我有一个Windows Elastic Beanstalk实例。我在我的项目的commands.config中有以下.ebextensions

commands:
  00-install-choco:
    command: |
        powershell -NoProfile -ExecutionPolicy Bypass -Command "iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1'))"
  01-set-choco-path:
    command: |
        SET PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin

这两个命令正在运行。但是,我也有一个container-commands.config文件需要调用choco,但由于'choco' is not recognized as an internal or external command它一直失败

container_commands:
  01-install nssm:
    command: |
        choco install nssm -y

如何获取后续命令来获取更新的PATH?是否有更合适的方法来安装二进制文件并在创建ESB实例期间将它们设置为Window的PATH

我试图跟随https://aws.amazon.com/blogs/developer/using-nuget-and-chocolatey-package-managers-in-aws-cloudformation-and-aws-elastic-beanstalk/

files:
  c:/tools/ewmp.cmd:
    content: |
      @ECHO OFF
      FOR /F "tokens=3,*" %%a IN ('REG QUERY "HKLMSystemCurrentControlSetControlSession ManagerEnvironment" /v PATH') DO PATH %%a%%b
      %*
commands:
  01-install-choco:
    command: powershell -NoProfile -ExecutionPolicy unrestricted -Command "Invoke-Expression ((New-Object Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))"
    waitAfterCompletion: 0
  02-install-nssm:
    command: c:/tools/ewmp choco install nssm -y
    waitAfterCompletion: 0

但即便如此,也会给我类似的错误。

-----------------------Command Output-----------------------
ERROR: Invalid key name.
Type "REG QUERY /?" for usage.
'choco' is not recognized as an internal or external command,
operable program or batch file.
------------------------------------------------------------
windows amazon-elastic-beanstalk chocolatey ebextensions
1个回答
1
投票

我不是Elastic Beanstalk的用户,所以我不能说这是否有效,但根据documentation,有必要提供一个额外的命令来更新使用的PATH变量:

Chocolatey安装程序及其安装的软件包可能会修改计算机的PATH环境变量。这增加了复杂性,因为这些安装之后的后续命令在同一会话中执行,该会话没有更新的PATH。为了解决这个问题,我们利用命令文件在执行命令之前将会话的PATH设置为机器的PATH。

files:
  c:/tools/ewmp.cmd:
    content: |
      @ECHO OFF
      FOR /F "tokens=3,*" %%a IN ('REG QUERY "HKLMSystemCurrentControlSetControlSession ManagerEnvironment" /v PATH') DO PATH %%a%%b
      %*
commands:
  00-install-choco:
    command: powershell -NoProfile -ExecutionPolicy unrestricted -Command "Invoke-Expression ((New-Object Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))"
container_commands:
  01-install nssm:
    command: |
      c:toolsewmp choco install nssm -y

注意:基于文档,我不清楚的一件事是在命令部分使用c:toolsewmp而不是c:/tools/ewmp。我不知道这是否是在文档中向浏览器呈现的代码中的转义问题,或者这是否是故意的。您可能需要使用它来查看哪些有效。

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