1

内部チームで使用する Chocolatey パッケージを作成しています。(この場合、パッケージは Microsoft の Windows デバッガー用です。)

Windows Debuggers には 2 つのフォルダーが含まれています。1 つは 32 ビット x86 実行可能ファイル用で、もう 1 つは 64 ビット実行可能ファイル用の x64 フォルダーです。

実行可能ファイル名は同じです。

x86\adplus.exe
x64\adplus.exe

インストール後、Chocolatey によって作成された shim が実際に adplus インスタンスの 1 つを正常に開始しているように見えます。しかし、32 ビット バージョンが必要な場合もあれば、64 ビット バージョンが必要な場合もあります。

ここで質問です: 異なるディレクトリに同じ名前の実行可能ファイルが 2 つある場合、Chocolately に各ディレクトリの実行可能ファイルに対して異なるシムを作成するように指示するにはどうすればよいですか?

4

1 に答える 1

2

簡単に言うと、Chocolatey shim フォルダーに同じ名前の 2 つの shim を含めることはできません ( $env:ChocolateyInstall\bin)。

ディレクトリに対する Windows の制限は、各ファイル/フォルダが一意の名前でなければならないことです。これはあなたが遭遇しているものです。$env:ChocolateyInstall\binシムはフォルダーにドロップされ、PATH$env:ChocolateyInstall\bin上にあるため、自動的に PATH に配置されます (PATH 環境変数をオーバーロードすることなく、あらゆる種類のものをインストールできます)。

shim を適用したくないファイルの隣に、末尾が .file.ignoreの空のファイルを作成できます。x86\adplus.exe.ignoreこれはwikiに記載されています。OS アーキテクチャなどに基づいて、インストール中にプログラムで実行することもできます。

同じマシンで、それらのいずれかが必要な場合と、別の場合に必要な場合があるようです。.ignore両方のファイルのファイルを提案しGet-BinRoot、ファイルをツールフォルダーにプッシュするために使用する可能性があります (これの場所を定義する必要があります)。次に、必要なプロセスの PATH を一時的に設定できますが、実際のパスには保持されません。パスに一方を設定し、もう一方が必要なときにオーバーライドすることもできます。

自動化スクリプトは単なる PowerShell であるため、ここにはあらゆる種類のオプションがあります。

于 2016-02-29T23:47:41.890 に答える