我正在为内部团队使用创建一个Chocolatey包。 (在这种情况下,该软件包适用于Microsoft的Windows调试程序。)
Windows调试器包含两个文件夹,一个用于32位x86可执行文件,另一个用于64位可执行文件的x64文件夹。
可执行文件名称相同。
x86\adplus.exe
x64\adplus.exe
安装后看起来像Chocolatey创建的垫片确实成功启动了一个adplus实例。但有时我需要32位版本,有时我需要64位版本。
所以这就是问题:当在不同目录中有两个同名的可执行文件时,如何告诉Chocolately为每个目录中的可执行文件创建不同的填充程序?
答案 0 :(得分:1)
简短的回答是,在Chocolatey垫片文件夹($env:ChocolateyInstall\bin
)中不能有两个同名的垫片。
Windows对目录的限制是每个文件/文件夹必须是唯一的名称。这就是你遇到的。 Shims被放入$env:ChocolateyInstall\bin
文件夹,这会自动将它们放在PATH上,因为$env:ChocolateyInstall\bin
在PATH上(它允许人们安装所有类型的东西而不会重载PATH环境变量)。
您可以创建一个以.ignore
(例如x86\adplus.exe.ignore
)文件结尾的空文件,旁边是您不希望填充的文件。这在wiki上有记录。您甚至可以在安装期间以OS架构等方式以编程方式执行此操作。
听起来你有时需要其中一个,而另一个需要在SAME机器上。我会为这两个文件建议.ignore
个文件,并且可能使用Get-BinRoot
将文件推送到工具文件夹(您可以定义它的位置)。然后,您可以为您需要的任何一个临时设置进程PATH,它不会持久保存到实际路径。您甚至可以在路径上设置一个,然后在需要另一个时覆盖它。
由于自动化脚本只是PowerShell,因此您可以在此处获得各种选项。