2014-01-27 7 views
2

저는 패키지의 적절한 "설치"의 일부로 환경 변수를 설정해야하는 여러 Chocolatey 패키지를 작성했습니다. 예를 들어, Java 생태계에서 ANT_HOME, MW_HOMEJAVA_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 로그 문을 보았지만 캡처하지 못했습니다!


생각했다 내 말은

, 난 그냥 이렇게하지 대신 쉬운 "사용자"환경 변수를 작성해야? 그것은 정확하지 않다! 망할 것들은 컴퓨터 전체에 설치되어 있습니다 ... 나는 아직 포기하고 싶지 않습니다.

+0

아, 내 업데이 트가 너무 flakey 것 같습니다! 정기적 인 세션에서 수동으로 실행하면 작동합니다. Chocoly가 실행하게하면, 그것은 임의적으로 보인다. –

답변

5

여기에 built in helper을 사용하지 않는 이유는 Install-ChocolateyEnvironmentVariable입니다. 사용법은 간단합니다 ...

Install-ChocolateyEnvironmentVariable 'JAVA_HOME' 'path\to\jre' 'Machine' 
+0

나는 현재 도우미들에게 최신이 아니기 때문에 나는 존재하지 않았다. –