繁体   English   中英

如何使用Chef在Windows上安装Xamarin

[英]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一起安装?

这是我必须要做的,其中有些有点不知所措。

  1. 安装android-sdkxamarin-visualstudio使用通过的巧克力chocolatey_package从资源chocolatey食谱。
  2. 验证Xamarin安装是否按预期进行。
  3. 将预制的android-sdk.zip解压缩到$HOME\\AppData\\Local\\Android中,以便将所需的一切安装在Android SDK中*
  4. 验证Android SDK安装是否按预期进行。
  5. 创建一个注册表项,以将Xamarin的Visual Studio集成指向相应的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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM