저는 패키지의 적절한 "설치"의 일부로 환경 변수를 설정해야하는 여러 Chocolatey 패키지를 작성했습니다. 예를 들어, Java 생태계에서 ANT_HOME
, MW_HOME
및 JAVA_HOME
은 각각 ant, weblogic 및 java의 설치 디렉토리를 가리켜 야합니다.Chocolatey 패키지에서 Machine 환경 변수를 설정하는 방법은 무엇입니까?
그리고 Chocolatey는 컴퓨터 전체 패키지 관리자이기 때문에이 컴퓨터 전체 (MSDN)를 설정하는 것이 좋습니다. 난 그냥 그 실행하면
[System.Environment]::SetEnvironmentVariable("JAVA_HOME", "path/to/jre/install", "Machine")
, 나는 "3"인수 (들)과 예외 호출 "SetEnvironmentVariable는"
예상되는 허가 예외를 얻을 : ". 요청한 레지스트리에 액세스 할 수 없습니다에게"
나는 높은 프롬프트에서 같은 명령을 수동으로 실행하면 모든 것이 잘 동작합니다. 그래서, 나는 높은 프롬프트에서 그것을 호출해야합니다. Chocolatey, 당신이 사용하는 거 야 : [Start-ChocolateyProcessAsAdmin][2]
을 너무
Start-ChocolateyProcessAsAdmin @"
[System.Environment]::SetEnvironmentVariable("JAVA_HOME", "path/to/jre/install", "Machine")
"@
그것은 고도를 입력하라는 메시지 (실제로 작동하고 있는지 확인하기 위해 개발할 때 항상 정상적인 프롬프트에서 실행)처럼,하지만 난에 의해 빨간색 오류 플래시를 참조 없이 경고/오류
높이기 권한 및 실행 C와이 메시지 : SYSTEM32 \의 WindowsPowerShell \ v1.0을 \ \ WINDOWS \ powershell.exe를 -noprofile -ExecutionPolicy 제한 -Command "& 수입 모듈 -name 'C : \ Chocolatey \ chocolateyinstall \ helpers \ chocolateyInstaller.psm1 '; {{System.Environment} :: SetEnvironmentVariable ("JAVA_HOME", "path/to/jre/install", "Mach ine "); 시작 - 잠 6;} 잡기 { '사점 실패했다'쓰기 오류, 시작 수면 8; 던져;} "이것은 진술에 따라 좀 걸릴 수 있습니다
을
제공 무엇..?를UPDATE :.
는 신비 ... 라인 종결 자 (심지어 단일 문에) 추가하고 작은 따옴표로 모든 인수를 포장 작동하게 다음 중 어떤 조합
Start-ChocolateyProcessAsAdmin @"
[System.Environment]::SetEnvironmentVariable('JAVA_HOME', 'path/to/jre/install', 'Machine');
"@
나는 여전히 무차별 대항 답변을 원합니다. PowerShell의 악몽 문자열 인용/해석 규칙 + Chocolatey의 호출 조합이라고 확신합니다.
UPDATE :
나는 또한 내가 그들을 분리하고있어, 비록 여러 문에 문제가있어!
Start-ChocolateyProcessAsAdmin @"
[System.Environment]::SetEnvironmentVariable('MW_HOME', 'path/to/wl/install', 'Machine');
[System.Environment]::SetEnvironmentVariable('WL_HOME', 'path/to/wl/install/wlserver', 'Machine');
"@
라인 - 터미네이터 중 하나가 제거 된 것을 보여주는 Chocolatey 로그 문을 보았지만 캡처하지 못했습니다!
생각했다 내 말은
, 난 그냥 이렇게하지 대신 쉬운 "사용자"환경 변수를 작성해야? 그것은 정확하지 않다! 망할 것들은 컴퓨터 전체에 설치되어 있습니다 ... 나는 아직 포기하고 싶지 않습니다.
아, 내 업데이 트가 너무 flakey 것 같습니다! 정기적 인 세션에서 수동으로 실행하면 작동합니다. Chocoly가 실행하게하면, 그것은 임의적으로 보인다. –