2016-02-29 180 views
1

我正在为内部团队使用创建一个巧克力包。 (在这种情况下,该软件包用于Microsoft的Windows调试器。)如何用不同目录中的相同名称填充可执行文件?

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

可执行文件名称相同。

x86\adplus.exe 
x64\adplus.exe 

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

所以问题是这样的:当在不同目录中有两个相同名称的可执行文件时,我该如何告诉巧克力为每个目录中的可执行文件创建不同的垫片?

回答

1

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

Windows对于目录的限制是每个文件/文件夹必须是唯一的名称。这就是你所遇到的。 Shims被放入$env:ChocolateyInstall\bin文件夹中,由于$env:ChocolateyInstall\bin位于PATH上(它允许人们在不重载PATH环境变量的情况下安装所有类型的东西),所以它们会自动将它们放在PATH上。

您可以创建一个以.ignore(例如x86\adplus.exe.ignore)文件结尾的空文件,该文件紧挨着您不希望被刷新的文件。这记录在wiki上。你甚至可以在安装过程中以基于OS架构的方式编程。

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

由于自动化脚本只是PowerShell,因此您在这里有各种选项。

+0

那么你绝对是这些事情的官方。 :) 感谢你的回答。 –

相关问题