[英]How to install Xamarin on Windows using Chef
我使用Chef配置我的TeamCity构建代理(Windows Server 2012 VM),并且需要为Visual Studio / Android构建安装Xamarin。 对于其他安装程序,我通常会使用/h
, /help
, /?
调用它/?
, -?
, -h
和--help
直到出现一个用法对话框,告诉我命令行参数。 但是,我无法找出XamarinInstaller.exe
的命令行参数,并且在启动时像这样:
XamarinInstaller.exe /quiet /norestart
由于这些是通用约定,因此它似乎只是坐在那里而不做任何事情。 应该下载它(当我使用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
如何无头调用Xamarin安装程序? 如何与Chef一起安装?
这是我必须要做的,其中有些有点不知所措。
android-sdk
和xamarin-visualstudio
使用通过的巧克力chocolatey_package
从资源chocolatey
食谱。 android-sdk.zip
解压缩到$HOME\\AppData\\Local\\Android
中,以便将所需的一切安装在Android SDK中* 它在Chef代码中:
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
*我无法终生获得通过Chef调用的android update sdk
的工作。 除非Android SDK Manager可以检测到它正在由用户运行,否则它似乎甚至不会在非图形上运行。 不确定,但最终无奈,我手动运行了命令以安装必要的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
”。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.