我使用ChefconfigurationTeamCity构build代理(Windows Server 2012 VM),并且我需要为Visual Studio / Android构build安装Xamarin。 对于其他安装程序,我通常使用/h
, /help
, /?
调用它/?
-?
, -h
和--help
直到我得到一个使用对话框,告诉我命令行参数。 我一直无法找出XamarinInstaller.exe
的命令行参数,但是,当我启动它像这样:
XamarinInstaller.exe /quiet /norestart
因为这些都是常见的惯例,似乎它只是坐在那里,什么都不做。 它应该是下载的东西(这就是当我用GUI启动时),但是当我在任务pipe理器中查看以太网使用情况时,没有什么事情发生。 我不知道它在哪里写日志或如何知道它是否失败。 它失败后似乎不会退出。
这是我的厨师代码:
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
我如何无头调用Xamarin安装程序? 如何与厨师安装?
这是我必须做的,而且有些是不吉利的。
chocolatey
食谱中的chocolatey_package
资源安装android-sdk
和xamarin-visualstudio
。 android-sdk.zip
解压到$HOME\AppData\Local\Android
中,以获得我需要的所有安装在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管理器不会运行,甚至是非图形的,除非它能检测到它正在被用户运行?! 不知道,但最后在绝望中,我手动运行命令安装必要的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
目录,并将其压缩以产生上述的“预制的android-sdk.zip
”。