2016-06-14 13 views
1

Chefを使用してTeamCityビルドエージェント(Windows Server 2012 VM)を構成し、Visual Studio/Androidビルド用にXamarinをインストールする必要があります。私は通常、コマンドラインパラメータを知らせる使用方法のダイアログが表示されるまで、/h/help/?-?-h--helpという名前で起動しています。しかし私は、XamarinInstaller.exeするためのコマンドラインパラメータを把握することができていない、と私はこのようにそれを起動したとき:シェフを使用してXamarinをWindowsにインストールする方法

XamarinInstaller.exe /quiet /norestart 

ものは一般的な慣習であるため、それだけとのdoesnそこに座っているようです何もしない。それは(それはGUIでそれを起動したときに何をするのですか)ものをダウンロードする必要がありますが、私はタスクマネージャでイーサネットの使用法を見ると、何も起こっていません。私はそれがログを記録する場所や失敗したかどうかを知る方法を知らない。それは失敗したときに終了しないようです。ここで

は私のシェフコードです:

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 

私はheadlessly Xamarinのインストーラを起動するにはどうすればよいですか?シェフと一緒にどのようにインストールしますか?

答えて

2

ここで私は何をしなければならなかったのですか、それのいくつかはうんざりしています。

  1. chocolatey料理からchocolatey_packageリソースを使用してChocolatey経由android-sdkxamarin-visualstudioをインストールします。
  2. Xamarinのインストールが正常に機能することを確認します。
  3. 解凍私は、Android SDKにインストールに必要なすべてを得るためにprefabbed $HOME\AppData\Local\Androidandroid-sdk.zip *
  4. は期待通りのAndroid 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を動作させることができませんでした*。それは、それがユーザーによって実行されていることを検出できない限り、Android SDKマネージャは非グラフィカルにも実行されないようですね!確かに、しかし、最終的には絶望で、私は(私はAPIレベル15が必要)必要なSDKをインストールして、ツールを構築するために、手動でコマンドを実行していない:

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

私はその結果の$HOME\AppData\Local\Android\android-skディレクトリを取って、 "を生成するために、それをzip形式先に述べた「android-sdk.zip」と呼ばれる。

関連する問題