如何使用Chef在Windows上安装Xamarin
我使用Chef配置TeamCity构建代理(Windows Server 2012虚拟机),并且我需要为Visual Studio/Android构建安装Xamarin。对于其他安装程序,我通常使用如何使用Chef在Windows上安装Xamarin,windows,visual-studio,xamarin,chef-infra,windows2012,Windows,Visual Studio,Xamarin,Chef Infra,Windows2012,我使用Chef配置TeamCity构建代理(Windows Server 2012虚拟机),并且我需要为Visual Studio/Android构建安装Xamarin。对于其他安装程序,我通常使用/h、/help、/?、-?、-h和--help调用它,直到我得到一个使用对话框,告诉我命令行参数。但是,我无法确定xamarininstall.exe的命令行参数,当我像这样启动它时: XamarinInstaller.exe /quiet /norestart 由于这些都是常见的惯例,它似乎只是
/h
、/help
、/?
、-?
、-h
和--help
调用它,直到我得到一个使用对话框,告诉我命令行参数。但是,我无法确定xamarininstall.exe
的命令行参数,当我像这样启动它时:
XamarinInstaller.exe /quiet /norestart
由于这些都是常见的惯例,它似乎只是坐在那里,什么都不做。它应该是下载的东西(当我用GUI启动它时就是这么做的),但是当我在任务管理器中查看以太网的使用情况时,没有发生什么事情。我不知道它在哪里写日志,也不知道如何知道它是否失败。当它失败时,它似乎不会放弃
这是我的厨师代码:
xamarinTargets='C:\\ProgramFiles(x86)\\MSBuild\\Xamarin\\Android\\Xamarin.Android.CSharp.targets'
xamarinInstaller='C:\\Repo\\Xamarin\\xamarinInstaller.exe'
执行“Xamarin”do
命令“#{xamarineinstaller}/quiet/norestart”
如果{::File.exist?(xamarinTargets)}
结束
如何无头调用Xamarin安装程序?如何使用Chef安装它?以下是我必须要做的,其中一些是不可靠的
chocolate
食谱的chocolate\u软件包资源,通过chocolate安装android sdk
和xamarin visualstudio
$HOME\AppData\Local\android
中,以便在android sdk中安装所需的所有内容*xamarinTargets='C:\\ProgramFiles(x86)\\MSBuild\\Xamarin\\Android\\Xamarin.Android.CSharp.targets'
巧克力套装“android sdk”
巧克力套装“xamarin visualstudio”
ruby_块“验证Xamarin MSBuild目标是否存在”do
布洛克道
如果不是::File.exist?(xamarin目标)
raise“未找到应由Xamarin安装创建的#{xamarinTargets}”
结束
结束
结束
homeDir=“C:\\Users\\\{ENV['User']}”
androidDir=“#{homeDir}\\AppData\\Local\\Android”
AndroidDK=“#{androidDir}\\android sdk”
androidSdkZip=“C:\\Repo\\Android\\Android sdk.zip”
adbExe=“#{androidSdk}\\platform tools\\adb.exe”
七个zip_存档“Android SDK API 15级”吗
路径androidDir
源AndroidDKZip
覆盖真
如果{::File.exist?(adbExe)}则不可用
结束
ruby_块“验证Android adb.exe是否存在”do
布洛克道
如果没有::File.exist?(adbExe)
raise“没有找到#{adbExe},它应该是由安卓SDK安装创建的”
结束
结束
结束
注册表项“HKEY用户\\S-1-5-18\\Software\\Novell\\Mono\for\Android”do
价值观[{
:name=>“AndroidSDK目录”,
:type=>:字符串,
:data=>androidSdk
}]
递归真
行动:创建
结束
*在我的一生中,当通过Chef调用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
目录,并将其压缩,以生成上面提到的“prebedadAndroid sdk.zip
”