ホテルのネットワークでソフトウェアのインストールにChocolateyを使い始めました。 Win 2008でドメインを設定していますが、すべてのユーザーが管理者ではありません。
したがって、ドメインの管理者ではない(マシン上にもない)ユーザーJOEと、両方の管理者であるユーザーPETERがあり、JOEとしてログインしているとしましょう。プロンプト(またはPowerShell)を管理者として開くと、Windows UACは管理者のユーザー名/パスワードを要求します。だから私はそれをピーターの資格で満たします。次にChocolatey(C:\ProgramData\Chocolatey
内)をインストールし、C:\ProgramData\Chocolatey\libs
にパッケージをインストールします。そして、それは結構です。
アプリがすべてのユーザー向けのインストール(Sublime Text 3など、C:\Program Users
フォルダーにインストールされている)の場合、すべてが正常に実行されます。しかし、「シングルユーザー」インストール(C:\Users\USERNAME\AppData\...
にインストールされているWunderlistなど)を実行すると、JOEのAppData
ではなくPETERのAppData
にインストールされます。
インストーラーを手動で実行すると、PETERの資格情報を要求されますが、アプリはJOEのユーザーパスにインストールされます。
Chocolateyでも同じ動作が得られますか?私は何か間違ったことをしていますか、これを何らかの方法で回避できますか?
管理ユーザーと非管理ユーザーの両方でそれを行う方法を発見しました。ドキュメントの Chocolatey non-administrative セクションでは、Chocolateyを非管理者としてインストールするには、最初にChocolateyが必要な場所を指すChocolateyInstall
環境変数を定義する必要がありますインストールされ、すべてのユーザーがアクセスできます(私はC:\Users\Public\Chocolatey
フォルダを使用しました)。この変数は、マシンレベルまたはユーザーレベルで設定できます。マシンレベルで定義する場合、同じChocolateyインストールを管理パッケージと非管理パッケージの両方のインストールに使用できます。変数を設定した後、Chocolateyのインストールに進む必要があります。これは、管理者ユーザーまたは非管理者ユーザーのいずれかとして実行できます。
次に、パッケージをインストールするには、2つの方法があります。管理者アクセスが必要な場合は、管理者PowerShell(またはコマンドプロンプト)を開き、choco install <package>
を呼び出します。次に、アプリは管理者ユーザーとしてインストールされます(私の質問ではPETER)。管理者アクセスを必要としない場合は、管理者以外のPowerShell(またはコマンドプロンプト)を開いて、choco install <package>
を呼び出すことができます。アプリは現在のユーザー(私の質問ではJOE)にインストールされます。
私はそれをテストしていませんが、別のオプションは、ある場所を指すマシンレベルのChocolateyInstall
変数と別の場所を指すユーザーレベルのChocolateyInstall
変数を設定することです。次に、Chocolateyを管理者としてインストールすると、「マスター」のChocolateyインストールが作成されます。これは、パッケージの大部分をインストールするために使用できます(ドキュメントに従って、管理者アクセスが必要です)。共通ユーザーとして再度インストールすると、「ユーザー」のChocolateyインストールが取得されます。これは、特定のパッケージ(Wunderlistなど)のインストールに使用できます。これにより、「admin」のChocolateyインストールを妨げることなく、そのパッケージを任意の数のユーザーにインストールできます。
欠点は、2つのChocolateyインストールがある場合、パッケージは管理者レベルとユーザーレベルの両方で管理する必要があるため、アップグレードは「マスター」レベルと「ユーザー」レベルの両方で行う必要があることです。
私の場合、マシンごとにユーザーが1人しかいないため、ユーザーがアプリをインストールしないため、最初のオプションを選択しました。
それがこれを探している誰かに役立つことを願っています。
Loenardo Pugliaの回答ありがとうございます。今日は本当に役に立ちました。私の例は$USERPROFILE%/AppData
のSlackインストールでしたので、この問題が発生しました。私も、Chocolateyの管理者および非管理者による使用が必要です。
(私がしたように)すでにチョコレートとしてチョコレートをインストールしている場合、Active Directoryの下でも、移動して非管理者にすることができます。その後、すべてのライブラリを保持できます。少なくとも私は2017年2月23日にしました。これはChocolateyのオープンソースバージョンでした。
デフォルトでChocolateyはC:\ProgramData\Chocolatey
にインストールされます
そして、システム環境変数ChocolateyInstall
= C:\ProgramData\Chocolatey
を設定します。 (これを設定するとbeforeCocolateyをインストールすると、そのディレクトリにインストールされます。遅すぎます。すでにインストールしています。)
そして、PATH
にC:\ProgramData\Chocolatey\bin
を追加します。
管理者アカウントから、そのChocolateyフォルダーを保護されていない領域に移動できます。私はC:\Chocolatey
を選択しましたが、管理者以外のユーザーがアクセスできるようにできるパスはすべて機能するはずです。
次に、フォルダC:\Chocolatey
の権限をFull control
を持つUsers
に設定します。
次に、2つの環境変数[ 参照 ]を再設定します。
setx ChocolateyInstall "C:\Chocolatey" /m
/m
は、ユーザーではなくシステム全体の環境変数にします。
パスについては、このマイナーなインプレース編集の場合、コマンドラインで二重引用符を操作するよりも、レジストリを編集する方を好みます。
regedit.exe
HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
に移動しました
path
を変更し、必要に応じてChocolateyエントリを編集して、OK
を押します。
場合によっては、env varsの新しい値を確認するために再ログインする必要があります。 [ 質問に対するコメントでの議論 ]