Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Chef在Windows上安装Xamarin_Windows_Visual Studio_Xamarin_Chef Infra_Windows2012 - Fatal编程技术网

如何使用Chef在Windows上安装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 由于这些都是常见的惯例,它似乎只是

我使用Chef配置TeamCity构建代理(Windows Server 2012虚拟机),并且我需要为Visual Studio/Android构建安装Xamarin。对于其他安装程序,我通常使用
/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
  • 验证Xamarin安装是否按预期工作
  • 将预制的android sdk.zip解压到
    $HOME\AppData\Local\android
    中,以便在android sdk中安装所需的所有内容*
  • 验证Android SDK安装是否按预期工作
  • 创建一个注册表项,将Xamarin的Visual Studio集成指向相应的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
    目录,并将其压缩,以生成上面提到的“prebedad
    Android sdk.zip