如何在不同目录中填充具有相同名称的可执行文件?
How do I shim executables with the same names in different directories?
我正在为内部团队使用创建一个 Chocolatey 包。 (在这种情况下,该软件包适用于 Microsoft 的 windows 调试器。)
Windows调试器包含两个文件夹,一个用于 32 位 x86 可执行文件,一个 x64 文件夹用于 64 位可执行文件。
可执行文件名称相同。
x86\adplus.exe
x64\adplus.exe
安装后,Chocolatey 创建的 shim 似乎确实成功启动了一个 adplus 实例。但有时我需要32位版本,有时我需要64位版本。
那么问题来了:当不同目录下有两个同名的可执行文件时,如何让Chocolately为每个目录下的可执行文件创建不同的shim?
简短的回答是您不能在 Chocolatey shim 文件夹 ($env:ChocolateyInstall\bin
) 中有两个同名的 shim。
目录 Windows 的限制是每个 file/folder 必须是唯一的名称。这就是您 运行 的目标。 Shims 被放入 $env:ChocolateyInstall\bin
文件夹,这会自动将它们放在 PATH 上,因为 $env:ChocolateyInstall\bin
在 PATH 上(它允许人们安装各种东西而无需重载 PATH 环境变量)。
您可以在您不想填充的文件旁边创建一个以 .ignore
(例如 x86\adplus.exe.ignore
)结尾的空文件。这记录在 wiki 上。您甚至可以在安装过程中基于 OS 架构以编程方式执行此操作。
听起来您在同一台机器上有时需要其中一个,有时需要另一个。我会为这两个文件建议 .ignore
文件,并且可能使用 Get-BinRoot
将文件推送到工具文件夹(您可以定义它的位置)。然后您可以为您需要的任何一个临时设置进程 PATH,它不会持续到实际路径。您甚至可以在路径上设置一个,然后在需要另一个时覆盖它。
由于自动化脚本只是 PowerShell,因此您可以在此处进行各种选择。
我正在为内部团队使用创建一个 Chocolatey 包。 (在这种情况下,该软件包适用于 Microsoft 的 windows 调试器。)
Windows调试器包含两个文件夹,一个用于 32 位 x86 可执行文件,一个 x64 文件夹用于 64 位可执行文件。
可执行文件名称相同。
x86\adplus.exe
x64\adplus.exe
安装后,Chocolatey 创建的 shim 似乎确实成功启动了一个 adplus 实例。但有时我需要32位版本,有时我需要64位版本。
那么问题来了:当不同目录下有两个同名的可执行文件时,如何让Chocolately为每个目录下的可执行文件创建不同的shim?
简短的回答是您不能在 Chocolatey shim 文件夹 ($env:ChocolateyInstall\bin
) 中有两个同名的 shim。
目录 Windows 的限制是每个 file/folder 必须是唯一的名称。这就是您 运行 的目标。 Shims 被放入 $env:ChocolateyInstall\bin
文件夹,这会自动将它们放在 PATH 上,因为 $env:ChocolateyInstall\bin
在 PATH 上(它允许人们安装各种东西而无需重载 PATH 环境变量)。
您可以在您不想填充的文件旁边创建一个以 .ignore
(例如 x86\adplus.exe.ignore
)结尾的空文件。这记录在 wiki 上。您甚至可以在安装过程中基于 OS 架构以编程方式执行此操作。
听起来您在同一台机器上有时需要其中一个,有时需要另一个。我会为这两个文件建议 .ignore
文件,并且可能使用 Get-BinRoot
将文件推送到工具文件夹(您可以定义它的位置)。然后您可以为您需要的任何一个临时设置进程 PATH,它不会持续到实际路径。您甚至可以在路径上设置一个,然后在需要另一个时覆盖它。
由于自动化脚本只是 PowerShell,因此您可以在此处进行各种选择。