2016-06-14 5 views
1

Chef를 사용하여 TeamCity 빌드 에이전트 (Windows Server 2012 VM)를 구성하고 Visual Studio/Android 용 Xamarin을 설치할 필요가 있습니다. 다른 설치 프로그램의 경우 일반적으로 명령 줄 매개 변수를 알려주는 사용 대화 상자가 나타날 때까지 /h, /help, /?, -?, -h--help과 같이 실행합니다. 나는 그러나, XamarinInstaller.exe에 대한 명령 줄 매개 변수를 알아낼 수 없었다, 나는 이런 식으로 그것을 실행할 때 :요리사를 사용하여 Windows에 Xamarin을 설치하는 방법

XamarinInstaller.exe /quiet /norestart 

사람들은 일반적인 규칙이기 때문에, '그냥하고 아무튼 거기에 앉아 것으로 보인다 아무것도하지 마라. 그것은 물건을 다운로드해야합니다. (GUI로 시작할 때 그 일을합니다.)하지만 작업 관리자에서 이더넷 사용량을 볼 때 아무 일도 일어나지 않습니다. 로그를 기록하는 위치 또는 실패한 경우를 알 수있는 방법을 알지 못합니다. 그것은 실패했을 때 종료되지 않는 것 같습니다. 내가 headlessly 자 마린 설치 프로그램을 호출하려면 어떻게

xamarinTargets = 'C:\\Program Files (x86)\\MSBuild\\Xamarin\\Android\\Xamarin.Android.CSharp.targets' 

xamarinInstaller = 'C:\\Repo\\Xamarin\\XamarinInstaller.exe' 

execute "Xamarin" do 
    command "#{xamarinInstaller} /quiet /norestart" 
    not_if { ::File.exist?(xamarinTargets) } 
end 

: 여기

내 요리사 코드? 요리사와 함께 설치하려면 어떻게해야합니까?

답변

2

내가해야 할 일이 있으며, 그 중 일부는 불안해합니다.

  1. chocolatey 요리 책에서 chocolatey_package 자원을 사용 Chocolatey 통해 android-sdkxamarin-visualstudio 설치.
  2. Xamarin 설치가 예상대로 작동하는지 확인하십시오. 예상대로
  3. 압축을 풀고 난 안드로이드 SDK 설치 필요한 모든 것을 얻기 위하여 $HOME\AppData\Local\Android로 prefabbed android-sdk.zip은 *
  4. 는 안드로이드 SDK는 일 설치를 확인합니다.
  5. Xamarin의 Visual Studio 통합이 해당 Android SDK를 가리 키도록 레지스트리 키를 만듭니다.

는 여기 요리사 코드입니다 : 요리사를 통해 호출 할 때 나는 내 인생이 가져올 수 없습니다에 대한 *

xamarinTargets = 'C:\\Program Files (x86)\\MSBuild\\Xamarin\\Android\\Xamarin.Android.CSharp.targets' 

chocolatey_package 'android-sdk' 
chocolatey_package 'xamarin-visualstudio' 

ruby_block "Verify Xamarin MSBuild targets exist" do 
    block do 
     if not ::File.exist?(xamarinTargets) 
      raise "Did not find #{xamarinTargets} which was supposed to have been created by the Xamarin install" 
     end 
    end 
end 

homeDir = "C:\\Users\\#{ENV['User']}" 
androidDir = "#{homeDir}\\AppData\\Local\\Android" 
androidSdk = "#{androidDir}\\android-sdk" 
androidSdkZip = "C:\\Repo\\Android\\android-sdk.zip" 
adbExe = "#{androidSdk}\\platform-tools\\adb.exe" 

seven_zip_archive "Android SDK API level 15" do 
    path androidDir 
    source androidSdkZip 
    overwrite true 
    not_if { ::File.exist?(adbExe) } 
end 

ruby_block "Verify Android adb.exe exists" do 
    block do 
     if not ::File.exist?(adbExe) 
      raise "Did not find #{adbExe} which was supposed to have been created by the Android SDK install" 
     end 
    end 
end 

registry_key 'HKEY_USERS\\S-1-5-18\\Software\\Novell\\Mono\ for\ Android' do 
    values [{ 
    :name => "AndroidSdkDirectory", 
    :type => :string, 
    :data => androidSdk 
    }] 
    recursive true 
    action :create 
end 

android update sdk 일. 그것은 안드로이드 SDK 관리자가 심지어는 사용자가 실행중인 것을 감지 할 수 없다면 비 시각적으로도 실행되지 않는 것 같습니다! 확실하지,하지만 결국 절망에, 나는 수동으로 필요한 SDK (나는 ​​API 레벨 15 필요) 설치 및 도구를 구축하기 위해 명령을 실행 :

android update sdk --no-ui --all --filter "tools,platform-tools,build-tools-23.0.3,android-15" 

그때 결과 $HOME\AppData\Local\Android\android-sk 디렉토리를 갔다와 "가 생산하는 압축 prefabbed android-sdk.zip "라고합니다.

관련 문제