1

我正在为内部团队使用创建一个 Chocolatey 包。(在这种情况下,该软件包适用于 Microsoft 的 Windows 调试器。)

Windows Debuggers 包含两个文件夹,一个用于 32 位 x86 可执行文件,一个用于 64 位可执行文件的 x64 文件夹。

可执行文件名称相同。

x86\adplus.exe
x64\adplus.exe

安装后,看起来 Chocolatey 创建的 shim 确实成功启动了其中一个 adplus 实例。但有时我需要 32 位版本,有时我需要 64 位版本。

所以这里有一个问题:当不同目录中有两个同名的可执行文件时,我如何告诉 Chocolately 为每个目录中的可执行文件创建不同的垫片?

4

1 回答 1

2

$env:ChocolateyInstall\bin简短的回答是,Chocolatey shim 文件夹 ( )中不能有两个同名的 shim 。

Windows 对目录的限制是每个文件/文件夹必须是唯一的名称。这就是你遇到的。垫片被放入$env:ChocolateyInstall\bin文件夹中,这会自动将它们放在 PATH 上,因为$env:ChocolateyInstall\bin它位于 PATH 上(它允许人们安装各种东西而不会重载 PATH 环境变量)。

您可以在您不想被填充的文件旁边创建一个以.ignore(例如)文件结尾的空文件。x86\adplus.exe.ignore这记录在wiki上。您甚至可以在安装过程中基于操作系统架构之类的东西以编程方式进行操作。

听起来您有时在同一台机器上需要其中一个,而其他时候需要另一个。我会建议.ignore这两个文件的文件,并可能Get-BinRoot用于将文件推送到工具文件夹(您可以定义它的位置)。然后,您可以为您需要的任何一个临时设置进程 PATH 并且它不会持续到实际路径。您甚至可以在路径上设置一个,然后在需要另一个时覆盖它。

由于自动化脚本只是 PowerShell,因此您可以在此处使用各种选项。

于 2016-02-29T23:47:41.890 回答