您的位置:首页 > Web前端

命令行部署SharePoint2016离线前提条件和添加服务器的Feature

2017-03-14 13:57 393 查看

前言

Sp2016的软件环境要求如下:

服务器场中的数据库服务器的最低要求:

以下各项之一:

Microsoft SQL Server 2014 Service Pack 1 (SP1) 的 64 位版本

Microsoft SQL Server 2016 RTM

Windows Server 2012 R2 Standard 或 Datacenter 的 64 位版本

注意:

不支持 SQL Server Express

Sql server 2014不包含Powerview 和 PowerPivot 外接程序,如果需要这2个BI要求,请务必安装Sql Server2016 RTM

浏览器



安装注意事项

命令行PS脚本和SP2016前置离线包放在C盘根目录下。如下图



注:

SP2016前置条件的安装powershell(sp2016InstallPrerequisiteFiles.ps1)脚本需要修改如下路径:



注意:

1、路径根据自己的实际情况来修改,以上离线包为中文环境的离线包,其他的语言包请自行下载各自的离线包,同时注意离线包的命名跟命令行写的一致性。附带下载地址:

Microsoft SQL Server 2014 Service Pack 1 (SP1)

Microsoft .NET Framework 4.6 版

Microsoft WCF Data Services 5.6

Microsoft Information Protection and Control 客户端 (MSIPC)

Microsoft SQL Server 2012 Service Pack 1 (SP1) Native Client(与 Microsoft SQL Server 2012 功能包一起安装)

Microsoft ODBC Driver 11 for SQL Server

Microsoft Sync Framework Runtime v1.0 SP1 (x64)

Windows Server AppFabric 1.1

AppFabric 1.1 for Windows Server 累积更新包 7

适用于 Visual Studio 2012 的 Visual C++ 可再发行组件包

适用于 Visual Studio 2015 的 Visual C++ 可再发行组件包

附带下载这些离线包的PS1脚本(Download-SP2016-Prereqs.ps1):

2、我这个测试安装环境是windows server 2016+sql server 2016

如果是windows server 2012 R2,还需要按照如下顺序安装如下KB补丁包,顺序如下:

首先安装:Windows8.1-KB2919442-x64.msu

其次安装:Windows8.1-KB2919355-x64.msu(这个安装过程比较常,因为包有600多M,请耐心等待安装完成)

最后安装:Windows8.1-KB2999226-x64.msu

如果数据库是sql server 2014还需要打上补丁SP1包:SQLServer2014SP1-KB3058865-x64-CHS.exe

命令行添加服务角色和功能

打开powershell运行命令,以管理员身份运行如下图(windows server2016为例)



运行添加服务器的角色和功能脚本:sp2016EnableWindowsFeatures.ps1,如下图



如果出现如下表示添加角色和功能成功,如下图



命令行安装SP2016的离线包

如何上找到PS1脚本所在的位置,进行安装就可以,注意前置条件所在的文件夹以及前置命令行所在的盘符,比如:虚拟光驱



脚本为:sp2016InstallPrerequisiteFiles.ps1

重启继续安装离线包命令行

脚本为:sp2016InstallPrerequisiteFilesContinue.ps1,注意前置命令行所在的位置如下图:



附带命令行:sp2016EnableWindowsFeatures.ps1

# ===================================================================================
# 编制人:忘忧草
# 编制时间:2016-11-07
# 编制作用:添加windows server 2012或2016服务器角色和功能
# 备注:为安装sharepoint2016做前置准备条件
# ===================================================================================
#设置windows server 2012的服务器角色和功能
function getServer2012Features {
$windows2012R2Features = @(
"Application-Server",
"AS-NET-Framework",
"AS-TCP-Port-Sharing",
"AS-Web-Support",
"AS-WAS-Support",
"AS-HTTP-Activation",
"AS-Named-Pipes",
"AS-TCP-Activation",
"FileAndStorage-Services",
"Storage-Services",
"Web-Server",
"Web-WebServer",
"Web-Common-Http",
"Web-Default-Doc",
"Web-Dir-Browsing",
"Web-Http-Errors",
"Web-Static-Content",
"Web-Http-Redirect",
"Web-Health",
"Web-Http-Logging",
"Web-Log-Libraries",
"Web-Request-Monitor",
"Web-Http-Tracing",
"Web-Performance",
"Web-Stat-Compression",
"Web-Dyn-Compression",
"Web-Security",
"Web-Filtering",
"Web-Basic-Auth",
"Web-Client-Auth",
"Web-Digest-Auth",
"Web-Cert-Auth",
"Web-IP-Security",
"Web-Url-Auth",
"Web-Windows-Auth",
"Web-App-Dev",
"Web-Net-Ext",
"Web-Net-Ext45",
"Web-Asp-Net",
"Web-Asp-Net45",
"Web-ISAPI-Ext",
"Web-ISAPI-Filter",
"Web-Mgmt-Tools",
"Web-Mgmt-Console",
"Web-Mgmt-Compat",
"Web-Metabase",
"Web-Lgcy-Mgmt-Console",
"Web-Lgcy-Scripting",
"Web-WMI",
"Web-Scripting-Tools",
"NET-Framework-Features",
"NET-Framework-Core",
"NET-HTTP-Activation",
"NET-Non-HTTP-Activ",
"NET-Framework-45-Features",
"NET-Framework-45-Core",
"NET-Framework-45-ASPNET",
"NET-WCF-Services45",
"NET-WCF-HTTP-Activation45",
"NET-WCF-Pipe-Activation45",
"NET-WCF-TCP-Activation45",
"NET-WCF-TCP-PortSharing45",
"Server-Media-Foundation",
"FS-SMB1",
"User-Interfaces-Infra",
"Server-Gui-Mgmt-Infra",
"Server-Gui-Shell",
"Windows-Identity-Foundation",
"PowerShellRoot",
"PowerShell",
"PowerShell-V2",
"PowerShell-ISE",
"WAS",
"WAS-Process-Model",
"WAS-NET-Environment",
"WAS-Config-APIs",
"WoW64-Support",
"XPS-Viewer"
)
return $windows2012R2Features
}

#设置windows server 2016的服务器角色和功能
function getServer2016Features {
$windows2016Features = @(
"FileAndStorage-Services",
"File-Services",
"FS-FileServer",
"Storage-Services",
"Web-Server",
"Web-WebServer",
"Web-Common-Http",
"Web-Default-Doc",
"Web-Dir-Browsing",
"Web-Http-Errors",
"Web-Static-Content",
"Web-Health",
"Web-Http-Logging",
"Web-Log-Libraries",
"Web-Request-Monitor",
"Web-Http-Tracing",
"Web-Performance",
"Web-Stat-Compression",
"Web-Dyn-Compression",
"Web-Security",
"Web-Filtering",
"Web-Basic-Auth",
"Web-Digest-Auth",
"Web-Windows-Auth",
"Web-App-Dev",
"Web-Net-Ext",
"Web-Net-Ext45",
"Web-Asp-Net",
"Web-Asp-Net45",
"Web-ISAPI-Ext",
"Web-ISAPI-Filter",
"Web-Mgmt-Tools",
"Web-Mgmt-Console",
"Web-Mgmt-Compat",
"Web-Metabase",
"Web-Lgcy-Scripting",
"Web-WMI",
"NET-Framework-Features",
"NET-Framework-Core",
"NET-HTTP-Activation",
"NET-Non-HTTP-Activ",
"NET-Framework-45-Features",
"NET-Framework-45-Core",
"NET-Framework-45-ASPNET",
"NET-WCF-Services45",
"NET-WCF-HTTP-Activation45",
"NET-WCF-Pipe-Activation45",
"NET-WCF-TCP-PortSharing45",
"FS-SMB1",
"Windows-Defender-Features",
"Windows-Defender",
"Windows-Defender-Gui",
"Windows-Identity-Foundation",
"PowerShellRoot",
"PowerShell",
"PowerShell-V2",
"PowerShell-ISE",
"WAS",
"WAS-Process-Model",
"WAS-NET-Environment",
"WAS-Config-APIs",
"WoW64-Support",
"XPS-Viewer"
)
return $windows2016Features
}
#设置服务器环境
function setEnvironment {
#判断操作系统版本
$serverOS = ([environment]::OSVersion.Version)
# Server 2016
if (($serverOS.Major -eq "10") -and ($serverOS.Build -eq "14393")) {
$windowsFeatures = @()
$windowsFeatures = getServer2016Features
$OS = (Get-WmiObject -ComputerName $env:COMPUTERNAME -Class Win32_OperatingSystem).Caption
Write-Host("Adding features for $OS...")
}

# Server 2012R2
if (($serverOS.Major -eq "6")) {
$windowsFeatures = @()
$windowsFeatures = getServer2012Features
$OS = (Get-WmiObject -ComputerName $env:COMPUTERNAME -Class Win32_OperatingSystem).Caption
Write-Host("Adding features for $OS...")
}
#如果安装.NET3.5需要制定 –Source <your source path>  example: “D:\sources\sxs”.
$restart = Add-WindowsFeature (foreach{$windowsFeatures})
#如果成功
if ($restart.Success -eq "True") {
#提示信息成功
Write-Host("Added feature $OS is OK...") -ForegroundColor Green
#列表出成功的Feature信息
Get-WindowsFeature $windowsFeatures
}
#如果错误
if ($restart.Success -eq "False") {
#提示信息成功
Write-Host("Added feature $OS is Error...") -ForegroundColor Red
#列表出成功的Feature信息
Get-WindowsFeature $windowsFeatures
}
#判断是否重启
if ($restart.RestartNeeded -ne "No") {
restartComputer
}
}
#重启计算机
function restartComputer {
for ($i = 10; $i -gt 0; $i--) {
Write-Host("$env:COMPUTERNAME will reboot in $i seconds")
Start-Sleep -Seconds 1
}
Restart-Computer -Force
}
#导入服务管理
Import-Module ServerManager
#执行
setEnvironment


命令行:sp2016InstallPrerequisiteFiles.ps1

# ===================================================================================
# 编制人:忘忧草
# 编制时间:2016-11-07
# 编制作用:安装sharepoint2016的离线安装包
# 备注:为安装sharepoint2016做前置准备条件
# ===================================================================================
Import-Module Servermanager
#sharepoint2016的先决条件prerequisiteinstaller.exe所在的盘符(虚拟机一般是指虚拟光驱)
$sp2016Location = "D:\"  # Change to folder location of SharePoint prerequisiteinstaller.exe file
#sharepoint先决条件的离线包所在的文件夹位置
$sp2016preReqPath = "C:\SharePoint2016Prerequisite"

#对路径进行处理
$sp2016preReqPath = $sp2016preReqPath.TrimEnd('\')
$sp2016Location = $sp2016Location.TrimEnd('\')
#命令行所在位置
$preLoc = $sp2016Location + "\prerequisiteinstaller.exe"

#endregion

function installSP2016Files($prepath,$path) {

$arguments = @(
"/DotNetFx:`"$path\NDP46-KB3045557-x86-x64-AllOS-ENU.exe`"",#安装 Microsoft .NET Framework 4.6
#"/MSIPCClient:`"$path\setup_msipc_x64.exe`"",#安装 Microsoft Information Protection and Control 客户端
"/WCFDataServices56:`"$path\WcfDataServices56.exe`"" ,#安装 Microsoft WCF Data Services 5.6
"/SQLNCli:`"$path\sqlncli.msi`"",#安装 Microsoft SQL Server 2012 SP1 Native Client
"/ODBC:`"$path\msodbcsql.msi`"",#安装 Microsoft ODBC Driver 11 for SQL Server
"/Sync:`"$path\Synchronization.msi`"",#安装 Microsoft Sync Framework Runtime SP1 v1.0 (x64)。
"/AppFabric:`"$path\WindowsServerAppFabricSetup_x64.exe`"" ,#安装 Windows Server AppFabric(AppFabric 必须用 /i CacheClient,CachingService,CacheAdmin /gac 选项来安装)
"/IDFX11:`"$path\microsoftidentityextensions-64.msi`"",# 安装 Windows Identity Foundation v1.1
"/KB3092423:`"$path\AppFabric-KB3092423-x64-CHS.exe`"",#安装 Microsoft AppFabric 1.1 for Windows Server 累积更新包 7 (KB3092423)
"/MSVCRT11:`"$path\vcredist_x64.exe`"",#安装适用于 Visual Studio 2012 的 Visual C++ 可再发行组件包
"/MSVCRT14:`"$path\vc_redist.x64.exe`""#安装适用于 Visual Studio 2015 的 Visual C++ 可再发行组件包
)
#命令行所在位置
$setupFile = $prepath + "\prerequisiteinstaller.exe "
#开始安装
Start-Process $setupFile -ArgumentList $arguments -Verbose -Wait
#重启计算机倒数
for ($i = 10; $i -gt 0; $i--) {
Write-Host("$env:COMPUTERNAME will reboot in $i seconds")
#Start-Sleep -Seconds 1
}
#重启计算机
#Restart-Computer -Force
}
#检查路径是否存在
function checkPath($path) {
# Check if destination path exists
If (!(Get-ChildItem -Path $path -ErrorAction -0).Exists) {
Write-Host("$path does not exist. Please validate the location and try agian.")
exit
}
}

#region Functions
#检查sharepoint先决条件的离线包是否存在
checkPath -path $sp2016preReqPath
#检查命令行是否存在
checkPath -path $preLoc
#开始执行安装
installSP2016Files -prepath $sp2016Location -path $sp2016preReqPath
#endregion


命令行:Download-SP2016-Prereqs.ps1

# Download SharePoint 2016 Prerequisites
# 1.0
# 16 March 2016
#
# (c) Intellem, Inc. - DO NOT DISTRIBUTE WITHOUT PERMISSION.
# FOR DEMONSTRATION PURPOSES ONLY. USE AT YOUR OWN RISK.
# Please provide feedback to Dan Holme
# dan.holme@intelliem.com
#
# Follow this script at https://github.com/DanHolme/SP2016-Prereq-Downloader #
# This script downloads SharePoint 2016 prerequisites that can be
# later installed by the SharePoint 2016 Prerequisite installer and
# by addiitonal prerequisite installation scripts.
#
# TESTED ON: Windows Server 2012 R2
# Should work on Windows Server 2016
#
# VERSION HISTORY
# 1.0      ORIGINAL VERSION
# 1.1      21 March 2016 - Added definition of $Prereqs3Folder
#
# Based on a script by Craig Lussier (http://craiglussier.com) on TechNet
# http://gallery.technet.microsoft.com/office/DownloadInstall-SharePoint-e6df9eb8 # Updated for SharePoint Server 2016
#
# Run PowerShell as Administrator
#

# -------------------
# CONFIGURATION BLOCK

# Configure the folders to which updates and prerequisites are saved.
# These folders must already exist - the script does not create them.

# The top-level folder in the installation folder tree
$RootFolder = "C:\SharePointInstall"

# The folder for prerequisites installed before the Prerequisite Installer
# There are a number of updates to Windows Server 2012 R2 that must be installed
# before SharePoint Server 2016's Prerequisite Installer can be run
$Prereqs1Folder = "$RootFolder\SharePoint_Prerequisites\Windows_Server_2012_R2_Updates"

# The folder for prerequisites used by the Prerequisite Installer
$Prereqs2Folder = "$RootFolder\SharePoint_Prerequisites\PrerequisiteInstaller"

# The folder for updates that are required only in certain scenarios
$Prereqs3Folder = "$RootFolder\SharePoint_Prerequisites\Additional_Updates"

# END CONFIGURATION BLOCK
# -----------------------

# ----------------------------------------------------------------
# Download details
# Do not change unless Microsoft changes the downloads themselves
# ----------------------------------------------------------------

# Specify download url's for SharePoint 2016 prerequisites
$Downloads = @{
# Microsoft SQL Server 2012 Native Client 64-bit edition – ENU\x64\sqlncli.MSI - http://go.microsoft.com/fwlink/p/?LinkId=239568 "https://download.microsoft.com/download/F/E/D/FEDB200F-DE2A-46D8-B661-D019DFE9D470/ENU/x64/sqlncli.msi" = "$Prereqs2Folder\sqlncli-2012.msi";
# Microsoft ODBC Driver 11 for SQL Server http://go.microsoft.com/fwlink/?LinkId=618410 "https://download.microsoft.com/download/5/7/2/57249A3A-19D6-4901-ACCE-80924ABEB267/1033/amd64/msodbcsql.msi" = "$Prereqs2Folder\msodbcsql.msi";
# Microsoft Sync Framework Runtime v1.0 SP1 (x64) http://go.microsoft.com/fwlink/?LinkId=618411 "https://download.microsoft.com/download/E/0/0/E0060D8F-2354-4871-9596-DC78538799CC/Synchronization.msi" = "$Prereqs2Folder\Synchronization.msi";
# Windows Server App Fabric http://go.microsoft.com/fwlink/?LinkId=618412 "https://download.microsoft.com/download/A/6/7/A678AB47-496B-4907-B3D4-0A2D280A13C0/WindowsServerAppFabricSetup_x64.exe" = "$Prereqs2Folder\WindowsServerAppFabricSetup_x64.exe";
# Windows Identity Foundation (KB974405)
"http://download.microsoft.com/download/D/7/2/D72FD747-69B6-40B7-875B-C2B40A6B2BDD/Windows6.1-KB974405-x64.msu" = "$Prereqs2Folder\Windows6.1-KB974405-x64.msu";
# Microsoft Identity Extensions
# http://go.microsoft.com/fwlink/?LinkID=252368 "http://download.microsoft.com/download/0/1/D/01D06854-CA0C-46F1-ADBA-EBF86010DCC6/rtm/MicrosoftIdentityExtensions-64.msi" = "$Prereqs2Folder\MicrosoftIdentityExtensions-64.msi";
# Microsoft Information Protection and Control Client http://go.microsoft.com/fwlink/?LinkID=544913 # MSI version (does not satisfy Prerequisite Installer):
#     http://go.microsoft.com/fwlink/?LinkId=320724 #     https://download.microsoft.com/download/9/1/D/91DA8796-BE1D-46AF-8489-663AB7811517/setup_msipc_x64.msi "http://download.microsoft.com/download/3/C/F/3CF781F5-7D29-4035-9265-C34FF2369FA2/setup_msipc_x64.exe" = "$Prereqs2Folder\setup_msipc_x64.exe";
# Microsoft WCF Data Services 5.6 required for SharePoint 2013 SP1 http://go.microsoft.com/fwlink/?LinkId=320724 "https://download.microsoft.com/download/1/C/A/1CAA41C7-88B9-42D6-9E11-3C655656DAB1/WcfDataServices.exe" = "$Prereqs2Folder\WcfDataServices56.exe";
# .NET Framework 4.6 Offline Installer http://go.microsoft.com/fwlink/?LinkId=618401 "https://download.microsoft.com/download/C/3/A/C3A5200B-D33C-47E9-9D70-2F7C65DAAD94/NDP46-KB3045557-x86-x64-AllOS-ENU.exe" = "$Prereqs2Folder\NDP46-KB3045557-x86-x64-AllOS-ENU.exe";
# Cumulative Update Package 7 for AppFabric 1.1 for Windows Server https://support.microsoft.com/en-us/kb/3092423 "https://download.microsoft.com/download/F/1/0/F1093AF6-E797-4CA8-A9F6-FC50024B385C/AppFabric-KB3092423-x64-ENU.exe" = "$Prereqs2Folder\AppFabric-KB3092423-x64-ENU.exe";
# Visual C++ Redistributable for Visual Studio 2012 Update 4 http://go.microsoft.com/fwlink/?LinkId=327788 "https://download.microsoft.com/download/1/6/B/16B06F60-3B20-4FF2-B699-5E9B7962F9AE/VSU_4/vcredist_x64.exe" = "$Prereqs2Folder\vcredist_x64.exe";
# Visual C++ Redistributable for Visual Studio 2015 http://go.microsoft.com/fwlink/?LinkId=623013 "http://download.microsoft.com/download/9/3/F/93FCF1E7-E6A4-478B-96E7-D4B285925B00/vc_redist.x64.exe" = "$Prereqs2Folder\vc_redist.x64.exe"
# Silverlight http://go.microsoft.com/fwlink/p/?LinkId=166506 "http://silverlight.dlservice.microsoft.com/download/F/8/C/F8C0EACB-92D0-4722-9B18-965DD2A681E9/30514.00/Silverlight_x64.exe" = "$Prereqs3Folder\Silverlight_x64.exe";
# Exchange Web Services Managed API, version 1.2 http://go.microsoft.com/fwlink/p/?linkid=238668 "https://download.microsoft.com/download/7/6/1/7614E07E-BDB8-45DD-B598-952979E4DA29/EwsManagedApi.msi" = "$Prereqs3Folder\EwsManagedApi.msi";
# Update for Windows 8.1 for x64-based Systems (KB2919442) https://www.microsoft.com/en-us/download/details.aspx?id=42162 # a prerequisite for the Windows Server 2012 R2 Update
"https://download.microsoft.com/download/C/F/8/CF821C31-38C7-4C5C-89BB-B283059269AF/Windows8.1-KB2919442-x64.msu" = "$Prereqs1Folder\Windows8.1-KB2919442-x64.msu";
# Windows Server 2012 R2 Update (KB2919355) https://support.microsoft.com/en-us/kb/2919355 # Windows Server 2012 R2 clearcompressionflag.exe
"https://download.microsoft.com/download/2/5/6/256CCCFB-5341-4A8D-A277-8A81B21A1E35/clearcompressionflag.exe" = "$Prereqs1Folder\clearcompressionflag.exe";
# Windows Server 2012 R2 Windows8.1-KB2919355-x64.msu
"https://download.microsoft.com/download/2/5/6/256CCCFB-5341-4A8D-A277-8A81B21A1E35/Windows8.1-KB2919355-x64.msu" = "$Prereqs1Folder\Windows8.1-KB2919355-x64.msu";
# Windows Server 2012 R2 Windows8.1-KB2932046-x64.msu
"https://download.microsoft.com/download/2/5/6/256CCCFB-5341-4A8D-A277-8A81B21A1E35/Windows8.1-KB2932046-x64.msu" = "$Prereqs1Folder\Windows8.1-KB2932046-x64.msu";
# Windows Server 2012 R2 Windows8.1-KB2934018-x64.msu
"https://download.microsoft.com/download/2/5/6/256CCCFB-5341-4A8D-A277-8A81B21A1E35/Windows8.1-KB2934018-x64.msu" = "$Prereqs1Folder\Windows8.1-KB2934018-x64.msu";
# Windows Server 2012 R2 Windows8.1-KB2937592-x64.msu
"https://download.microsoft.com/download/2/5/6/256CCCFB-5341-4A8D-A277-8A81B21A1E35/Windows8.1-KB2937592-x64.msu" = "$Prereqs1Folder\Windows8.1-KB2937592-x64.msu";
# Windows Server 2012 R2 Windows8.1-KB2938439-x64.msu
"https://download.microsoft.com/download/2/5/6/256CCCFB-5341-4A8D-A277-8A81B21A1E35/Windows8.1-KB2938439-x64.msu" = "$Prereqs1Folder\Windows8.1-KB2938439-x64.msu";
# Windows Server 2012 R2 Windows8.1-KB2959977-x64.msu
"https://download.microsoft.com/download/2/5/6/256CCCFB-5341-4A8D-A277-8A81B21A1E35/Windows8.1-KB2959977-x64.msu" = "$Prereqs1Folder\Windows8.1-KB2959977-x64.msu";
}

# Import Required Modules: BITS is used for file transfer
Import-Module BitsTransfer

function DownloadFiles()
{

Write-Host ""
Write-Host "====================================================================="
Write-Host "             Downloading SharePoint 2016 Prerequisites"
Write-Host "====================================================================="

$ReturnCode = 0

$Downloads.GetEnumerator() | ForEach {
$DownloadURL = $_.get_key()
$Filespec = $_.get_value()
# Get the file name based on the portion of the file path after the last slash
$FilePath = Split-Path $Filespec
$FileName = Split-Path $Filespec -Leaf
Write-Host "DOWNLOADING: $FileName"
Write-Host "       FROM: $DownloadURL"
Write-Host "         TO: $FilePath"

Try
{
# Check if file already exists
If (!(Test-Path "$Filespec"))
{
# Begin download
Start-BitsTransfer -Source $DownloadURL -Destination "$Filespec" -DisplayName "Downloading `'$FileName`' to $FilePath" -Priority High -Description "From $DownloadURL..." -ErrorVariable err
If ($err) {Throw ""}
Write-Host "     STATUS: Downloaded"
Write-Host
}
Else
{
Write-Host "     STATUS: Already exists. Skipping."
Write-Host
}
}
Catch
{
$ReturnCode = -1
Write-Warning " AN ERROR OCCURRED DOWNLOADING `'$FileName`'"
Write-Error   $_
Break
}

}
return $ReturnCode
}

$rc = DownloadFiles

if($rc -ne -1)
{
Write-Host ""
Write-Host "DOWNLOADS ARE COMPLETE."
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐