installation - Visual Studio 2017 - 通过网络共享和 Ansible Playbook 创建离线安装
问题描述
我正在尝试使用网络共享和 Ansible 创建脱机 Visual Studio 2017 安装。
我很难弄清楚到底发生了什么,因为安装循环(?)没有太多日志记录,日志通常含糊不清,而且经常告诉我引导程序正在从 Microsoft 下载文件。
我想知道是否有更简单的方法可以使用 Ansible 做到这一点。
我使用了 Microsoft 的以下指南来尝试理解事物:
- https://docs.microsoft.com/en-us/visualstudio/install/create-a-network-installation-of-visual-studio?view=vs-2017
- https://docs.microsoft.com/en-us/visualstudio/install/automated-installation-with-response-file?view=vs-2017
可能有问题的问题:https ://github.com/MicrosoftDocs/visualstudio-docs/issues/1531
设置:
我创建了一个可用的网络共享:\\Share\VisualStudio2017\
共享(当前)在测试时没有限制,这意味着“每个人”都可以阅读其内容。
共享由以下布局命令填充
vs_enterprise.exe --layout \\<server>\Share\Development\VisualStudio2017 --lang en-US --add Microsoft.VisualStudio.Workload.ManagedDesktop --add Microsoft.VisualStudio.Workload.NativeDesktop --add Microsoft.VisualStudio.Workload.Universal --add Microsoft.VisualStudio.Workload.NetWeb Microsoft.VisualStudio.Workload.Node --add Microsoft.VisualStudio.Workload.NetCrossPlat --add Microsoft.VisualStudio.Workload.NetCoreTools --includeRecommended
将 Response.json(在共享中)更新为
{
"installChannelUri": "\\<server>\\Share\\Development\\VisualStudio2017\\ChannelManifest.json",
"channelUri": "\\<server>\\Share\\Development\\VisualStudio2017\\ChannelManifest.json",
"installCatalogUri": "\\<server>\\Share\\Development\\VisualStudio2017\\Catalog.json",
"channelId": "VisualStudio.15.Release",
"productId": "Microsoft.VisualStudio.Product.Enterprise",
"add": [
"Microsoft.VisualStudio.Workload.ManagedDesktop;includeRecommended",
"Microsoft.VisualStudio.Workload.NativeDesktop;includeRecommended",
"Microsoft.VisualStudio.Workload.NetCoreTools;includeRecommended",
"Microsoft.VisualStudio.Workload.NetCrossPlat;includeRecommended",
"Microsoft.VisualStudio.Workload.NetWeb;includeRecommended",
"Microsoft.VisualStudio.Workload.Node;includeRecommended",
"Microsoft.VisualStudio.Workload.Universal;includeRecommended"
],
"addProductLang": [
"en-US"
]
}
份额与角色相结合:
- name: Install Visual Studio 2017
win_package:
path: '\\<server>\share\Development\VisualStudio2017\vs_enterprise.exe'
state: present
product_id: Microsoft.VisualStudio.Product.Enterprise
channel_id: VisualStudio.15.Release
user_name: <DOMAIN>\<USERNAME>
user_password: <PASSWORD>
arguments:
# - --quiet
- --wait
- --norestart
# - --add Microsoft.VisualStudio.Workload.ManagedDesktop
# - --add Microsoft.VisualStudio.Workload.NativeDesktop
# - --add Microsoft.VisualStudio.Workload.Universal
# - --add Microsoft.VisualStudio.Workload.NetWeb Microsoft.VisualStudio.Workload.Node
# - --add Microsoft.VisualStudio.Workload.NetCrossPlat
# - --add Microsoft.VisualStudio.Workload.NetCoreTools
# - --includeRecommended
我正在使用带有详细设置的命令运行剧本
ansible-playbook -i hosts utvClients.yaml -vvvv
输出
TASK [VisualStudio2017 : Install Visual Studio 2017] ******************************************************************************************************************************************************
task path: /mnt/d/dev/Ansible/roles/VisualStudio2017/tasks/main.yaml:2
Using module file /usr/lib/python2.7/dist-packages/ansible/modules/windows/win_package.ps1
<192.168.56.101> ESTABLISH WINRM CONNECTION FOR USER: Ansible on PORT 5986 TO 192.168.56.101
checking if winrm_host 192.168.56.101 is an IPv6 address
EXEC (via pipeline wrapper)
路径 C:\users\\AppData\Local\Temp\dd_bootstrapper_.log 中主机上的引导程序日志显示:
Beginning of the log. Start Time: 3/6/2019 9:43:56 AM
VisualStudio Bootstrapper:3/6/2019 9:43:57 AM: Commandline arguments = --wait,--norestart,--path cache="\\<server>\share\Development\VisualStudio2017\",--env,_SFX_CAB_EXE_PACKAGE:C:\Users\Ansible\tyzrpvdy.v4j _SFX_CAB_EXE_ORIGINALWORKINGDIR:C:\Users\Ansible
VisualStudio Bootstrapper:3/6/2019 9:43:57 AM: Parent process name = tyzrpvdy
VisualStudio Bootstrapper:3/6/2019 9:43:57 AM: Parent process product version = 15.9.28307.423
VisualStudio Bootstrapper:3/6/2019 9:43:57 AM: CampaignId =
VisualStudio Bootstrapper:3/6/2019 9:43:57 AM: ResponseId not available in 'vs_setup_bootstrapper.config'. Trying to parse filename.
VisualStudio Bootstrapper:3/6/2019 9:43:57 AM: loading config settings: -update --update --layout -offline --offline --locale --layout --originalworkingdir --installLayoutPath --env
VisualStudio Bootstrapper:3/6/2019 9:43:57 AM: DownloadURL = https://aka.ms/vs/15/release/installer
VisualStudio Bootstrapper:3/6/2019 9:43:57 AM: InstallLocation = C:\Program Files (x86)\Microsoft Visual Studio\Installer
VisualStudio Bootstrapper:3/6/2019 9:43:57 AM: OfflineFilePath =
VisualStudio Bootstrapper:3/6/2019 9:43:57 AM: LayoutLocation =
VisualStudio Bootstrapper:3/6/2019 9:43:57 AM: ExecutableArguments = /finalizeInstall install --in "C:\ProgramData\Microsoft\VisualStudio\Packages\_bootstrapper\vs_setup_bootstrapper_201903060943571796.json" --norestart "--path cache="\\<server>\share\Development\VisualStudio2017\"" --locale en-US --activityId "d3c1a7c6-22ba-42af-9ce9-7ede1608e7be"
VisualStudio Bootstrapper:3/6/2019 9:43:57 AM: OSVersion = Microsoft Windows NT 10.0.17763.0
VisualStudio Bootstrapper:3/6/2019 9:43:57 AM: Starting to detect the existing VS and .Net...
VisualStudio Bootstrapper:3/6/2019 9:43:57 AM: Finished detecting the existing VS and .Net
首先:DownloadUrl 仍然设置为 aka.ms?我没有正确覆盖它吗?还有更多需要考虑的事情吗?
解决方案
你有没有让这个工作。我能够让 VS2019 工作,在我构建离线安装程序时必须包含 --noweb。
推荐阅读
- google-cloud-platform - 我们如何在 GCP 实例中生成自我管理证书?
- angular - 使用 Webpack 5 模块联合服务样式和资产
- javascript - 在反应项目中为玩笑设置绝对路径
- python - openpyxl.load_workbook 在 Django 中需要很长时间
- javascript - 我无法通过按钮跨度获得这张地图,但它适用于另一张地图,问题出在哪里
- unit-testing - 如何用玩笑模拟异步动作创建者
- python - IndexError:Tensorflow 聊天机器人中的列表索引超出范围
- android-studio - 我必须如何在 Android Studio 上保存我的 App 项目的副本
- linux - 为什么从 FIFO 读取时会收到错误消息?
- angular - angular 7 如何减少生产构建尺寸