C++ Windows Server 2016用CMD命令行安装IIS角色和功能组件
来源:互联网 发布:中国儿童编程网 编辑:程序博客网 时间:2024/05/22 15:00
Windows Server 2016数据中心纯净版上安装IIS1.0版本的组件,Windows Server 2016和Windows Server 2012版本,他们的组件是没有多大区别的,但是安装的方式有所差异,也就是安装的顺序比较怪异。由于在08和12版本上面安装都没有问题,理所当然我就以12版本的IIS安装方式去安装16版本的,既然是安装IIS,那么最重要的当然是安装【服务器角色】-->【Web服务器(IIS)】下的部分组件。
但是问题来了,因为16版本的IIS10.0的组件,如果安装常规先安装:
【功能】-->【.NET Framework 3.5功能】
【服务器角色】-->【Web服务器(IIS)】-->【Web服务器】-->【应用程序开发】-->[.Net Extensibility 3.5]/[ASP.NET 3.5]
那么[.Net Extensibility 3.5]/[ASP.NET 3.5]是无法安装的,为什么?我也不知道!o_X ,但是后来经过我一个上午的安装卸载安装卸载(当然这一切都是在cmd命令行下进行的)最后发现了问题,那就是[.Net Extensibility 3.5]/[ASP.NET 3.5]和[.Net Extensibility 4.6]/[ASP.NET 4.6]的安装都需要依赖【功能】-->【.NET Framework 4.6功能】-->[ASP.NET 4.6]组件。假设这四个都已经安装了,如果卸载掉【功能】-->【.NET Framework 4.6功能】-->[ASP.NET 4.6]组件,那么这四个组件也将被卸载掉,由此可知他们是依赖[ASP.NET 4.6]组件的。
所以,我整理的安装顺序是这样的:
(1)【功能】-->【.NET Framework 3.5功能】
【.NET Framework 3.5功能】-->[.NET Frameword 3.5];
(2)【功能】-->【.NET Framework 4.5功能】
【.NET Framework 3.5功能】-->[.NET Frameword 4.6]
【.NET Framework 3.5功能】-->[ASP.NET 4.6];
(3)【服务器角色】-->【Web服务器(IIS)】-->【Web服务器】-->【应用程序开发】-->[.Net Extensibility 3.5]/[ASP.NET 3.5];
但是问题来了,因为16版本的IIS10.0的组件,如果安装常规先安装:
【功能】-->【.NET Framework 3.5功能】
【服务器角色】-->【Web服务器(IIS)】-->【Web服务器】-->【应用程序开发】-->[.Net Extensibility 3.5]/[ASP.NET 3.5]
那么[.Net Extensibility 3.5]/[ASP.NET 3.5]是无法安装的,为什么?我也不知道!o_X ,但是后来经过我一个上午的安装卸载安装卸载(当然这一切都是在cmd命令行下进行的)最后发现了问题,那就是[.Net Extensibility 3.5]/[ASP.NET 3.5]和[.Net Extensibility 4.6]/[ASP.NET 4.6]的安装都需要依赖【功能】-->【.NET Framework 4.6功能】-->[ASP.NET 4.6]组件。假设这四个都已经安装了,如果卸载掉【功能】-->【.NET Framework 4.6功能】-->[ASP.NET 4.6]组件,那么这四个组件也将被卸载掉,由此可知他们是依赖[ASP.NET 4.6]组件的。
所以,我整理的安装顺序是这样的:
(1)【功能】-->【.NET Framework 3.5功能】
【.NET Framework 3.5功能】-->[.NET Frameword 3.5];
(2)【功能】-->【.NET Framework 4.5功能】
【.NET Framework 3.5功能】-->[.NET Frameword 4.6]
【.NET Framework 3.5功能】-->[ASP.NET 4.6];
(3)【服务器角色】-->【Web服务器(IIS)】-->【Web服务器】-->【应用程序开发】-->[.Net Extensibility 3.5]/[ASP.NET 3.5];
(4)【服务器角色】-->【Web服务器(IIS)】-->【Web服务器】-->【应用程序开发】-->[.Net Extensibility 4.6]/[ASP.NET 4.6];
.NET重要组件图:
代码如下:
#include "stdafx.h" #include <windows.h> #include <tchar.h> #include <string> #include <iostream> #include <Shlwapi.h> #include "process.h" #pragma comment(lib, "Shlwapi.lib") using namespace std; bool RunSysCmd(const wstring& strcmd); wstring getSystemDirectory(); BOOL IsWow64(); bool WinServ2016_IISInstall(); int _tmain(int argc, _TCHAR* argv[]) { bool bRet = false; bRet = WinServ2016_IISInstall(); system("pause"); return 0; } bool RunSysCmd(const wstring& strcmd) { bool suc; wstring stdDirectory = getSystemDirectory() + _T("Windows\\System32\\"); if (IsWow64()) { PVOID OldValue = NULL; Wow64DisableWow64FsRedirection(&OldValue); SHELLEXECUTEINFO ShExecInfo = { 0 }; ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFO); ShExecInfo.fMask = SEE_MASK_NOCLOSEPROCESS; ShExecInfo.hwnd = NULL; ShExecInfo.lpVerb = _T("runas"); ShExecInfo.lpFile = _T("cmd.exe"); ShExecInfo.lpParameters = strcmd.c_str(); ShExecInfo.lpDirectory = stdDirectory.c_str(); ShExecInfo.nShow = SW_HIDE; ShExecInfo.hInstApp = NULL; suc = ShellExecuteEx(&ShExecInfo); WaitForSingleObject(ShExecInfo.hProcess, INFINITE); Wow64RevertWow64FsRedirection(OldValue); } else { SHELLEXECUTEINFO ShExecInfo = { 0 }; ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFO); ShExecInfo.fMask = SEE_MASK_NOCLOSEPROCESS; ShExecInfo.hwnd = NULL; ShExecInfo.lpVerb = _T("open"); ShExecInfo.lpFile = _T("cmd.exe"); ShExecInfo.lpParameters = strcmd.c_str(); ShExecInfo.lpDirectory = stdDirectory.c_str(); ShExecInfo.nShow = SW_HIDE; ShExecInfo.hInstApp = NULL; suc = ShellExecuteEx(&ShExecInfo); WaitForSingleObject(ShExecInfo.hProcess, INFINITE); } return suc; } wstring getSystemDirectory() { wstring wstr = _T(""); int size = ::GetSystemDirectory(NULL, 0); wchar_t *path = new wchar_t[size]; if (::GetSystemDirectory(path, size) != 0) { wstr = path; } delete[] path; return wstr; } BOOL IsWow64() { typedef BOOL(WINAPI *LPFN_ISWOW64PROCESS) (HANDLE, PBOOL); LPFN_ISWOW64PROCESS fnIsWow64Process; BOOL bIsWow64 = FALSE; fnIsWow64Process = (LPFN_ISWOW64PROCESS)GetProcAddress(GetModuleHandle(_T("kernel32")), "IsWow64Process"); if (NULL != fnIsWow64Process){ fnIsWow64Process(GetCurrentProcess(), &bIsWow64); } return bIsWow64; } bool WinServ2016_IISInstall(){std::cout << "start install IIS comm";bool bRet = false;std::wstring strRunCmd = _T("/c start /w pkgmgr /iu:IIS-WebServerRole;");bRet = RunSysCmd(strRunCmd);strRunCmd = _T("/c start /w pkgmgr /iu:IIS-WebServer;");bRet = RunSysCmd(strRunCmd);//常见HTTP功能strRunCmd = _T("/c start /w pkgmgr /iu:IIS-CommonHttpFeatures;");bRet = RunSysCmd(strRunCmd);strRunCmd = _T("/c start /w pkgmgr /iu:IIS-StaticContent;");bRet = RunSysCmd(strRunCmd);strRunCmd = _T("/c start /w pkgmgr /iu:IIS-DefaultDocument;");bRet = RunSysCmd(strRunCmd);strRunCmd = _T("/c start /w pkgmgr /iu:IIS-DirectoryBrowsing;");bRet = RunSysCmd(strRunCmd);strRunCmd = _T("/c start /w pkgmgr /iu:IIS-HttpErrors;");bRet = RunSysCmd(strRunCmd);strRunCmd = _T("/c start /w pkgmgr /iu:IIS-HttpRedirect;");bRet = RunSysCmd(strRunCmd);//应用程序开发strRunCmd = _T("/c start /w pkgmgr /iu:IIS-ApplicationDevelopment;");bRet = RunSysCmd(strRunCmd);strRunCmd = _T("/c start /w pkgmgr /iu:NetFx3ServerFeatures;");//这个安装特别慢!!!最好冲杯咖啡核一下等待bRet = RunSysCmd(strRunCmd);strRunCmd = _T("/c start /w pkgmgr /iu:NetFx3;");//注意:只有父功能开启了,子功能才能安装,否则,无法安装bRet = RunSysCmd(strRunCmd);strRunCmd = _T("/c start /w pkgmgr /iu:NetFx4ServerFeatures;");bRet = RunSysCmd(strRunCmd);strRunCmd = _T("/c start /w pkgmgr /iu:NetFx4;");//注意:只有父功能开启了,子功能才能安装,否则,无法安装bRet = RunSysCmd(strRunCmd);strRunCmd = _T("/c start /w pkgmgr /iu:NetFx4Extended-ASPNET45;");//注意:必须先安装此组件,下面的3、4组件才能安装bRet = RunSysCmd(strRunCmd);strRunCmd = _T("/c start /w pkgmgr /iu:IIS-NetFxExtensibility;");bRet = RunSysCmd(strRunCmd);strRunCmd = _T("/c start /w pkgmgr /iu:IIS-ASPNET;");bRet = RunSysCmd(strRunCmd);strRunCmd = _T("/c start /w pkgmgr /iu:IIS-NetFxExtensibility45;");bRet = RunSysCmd(strRunCmd);strRunCmd = _T("/c start /w pkgmgr /iu:IIS-ASPNET45;");bRet = RunSysCmd(strRunCmd);strRunCmd = _T("/c start /w pkgmgr /iu:IIS-CGI;");bRet = RunSysCmd(strRunCmd);strRunCmd = _T("/c start /w pkgmgr /iu:IIS-ASP;IIS-ISAPIExtensions;");bRet = RunSysCmd(strRunCmd);strRunCmd = _T("/c start /w pkgmgr /iu:IIS-ISAPIFilter;");bRet = RunSysCmd(strRunCmd);strRunCmd = _T("/c start /w pkgmgr /iu:IIS-ServerSideIncludes;");bRet = RunSysCmd(strRunCmd);strRunCmd = _T("/c start /w pkgmgr /iu:IIS-WebSockets;");bRet = RunSysCmd(strRunCmd);strRunCmd = _T("/c start /w pkgmgr /iu:IIS-ApplicationInit;");bRet = RunSysCmd(strRunCmd);strRunCmd = _T("/c start /w pkgmgr /iu:IIS-ASPNET;");//再次安装,保障一点bRet = RunSysCmd(strRunCmd);strRunCmd = _T("/c start /w pkgmgr /iu:IIS-ASPNET45;");//再次安装,保障一点bRet = RunSysCmd(strRunCmd);//运行状态(健康)和诊断strRunCmd = _T("/c start /w pkgmgr /iu:IIS-HealthAndDiagnostics;");bRet = RunSysCmd(strRunCmd);strRunCmd = _T("/c start /w pkgmgr /iu:IIS-HttpLogging;");bRet = RunSysCmd(strRunCmd);strRunCmd = _T("/c start /w pkgmgr /iu:IIS-LoggingLibraries;");bRet = RunSysCmd(strRunCmd);strRunCmd = _T("/c start /w pkgmgr /iu:IIS-RequestMonitor;");bRet = RunSysCmd(strRunCmd);strRunCmd = _T("/c start /w pkgmgr /iu:IIS-HttpTracing;");bRet = RunSysCmd(strRunCmd);strRunCmd = _T("/c start /w pkgmgr /iu:IIS-CustomLogging;");bRet = RunSysCmd(strRunCmd);strRunCmd = _T("/c start /w pkgmgr /iu:IIS-ODBCLogging;");bRet = RunSysCmd(strRunCmd);//安全性strRunCmd = _T("/c start /w pkgmgr /iu:IIS-Security;");bRet = RunSysCmd(strRunCmd);strRunCmd = _T("/c start /w pkgmgr /iu:IIS-BasicAuthentication;");bRet = RunSysCmd(strRunCmd);strRunCmd = _T("/c start /w pkgmgr /iu:IIS-CertProvider;");bRet = RunSysCmd(strRunCmd);strRunCmd = _T("/c start /w pkgmgr /iu:IIS-WindowsAuthentication;");bRet = RunSysCmd(strRunCmd);strRunCmd = _T("/c start /w pkgmgr /iu:IIS-DigestAuthentication;");bRet = RunSysCmd(strRunCmd);strRunCmd = _T("/c start /w pkgmgr /iu:IIS-ClientCertificateMappingAuthentication;");bRet = RunSysCmd(strRunCmd);strRunCmd = _T("/c start /w pkgmgr /iu:IIS-IISCertificateMappingAuthentication;");bRet = RunSysCmd(strRunCmd);strRunCmd = _T("/c start /w pkgmgr /iu:IIS-URLAuthorization;");bRet = RunSysCmd(strRunCmd);strRunCmd = _T("/c start /w pkgmgr /iu:IIS-RequestFiltering;");bRet = RunSysCmd(strRunCmd);strRunCmd = _T("/c start /w pkgmgr /iu:IIS-IPSecurity;");bRet = RunSysCmd(strRunCmd);//性能strRunCmd = _T("/c start /w pkgmgr /iu:IIS-Performance;");bRet = RunSysCmd(strRunCmd);strRunCmd = _T("/c start /w pkgmgr /iu:IIS-HttpCompressionStatic;");bRet = RunSysCmd(strRunCmd);strRunCmd = _T("/c start /w pkgmgr /iu:IIS-HttpCompressionDynamic;");bRet = RunSysCmd(strRunCmd);//管理工具strRunCmd = _T("/c start /w pkgmgr /iu:IIS-WebServerManagementTools;");bRet = RunSysCmd(strRunCmd);strRunCmd = _T("/c start /w pkgmgr /iu:IIS-ManagementConsole;");bRet = RunSysCmd(strRunCmd);strRunCmd = _T("/c start /w pkgmgr /iu:IIS-ManagementScriptingTools;");bRet = RunSysCmd(strRunCmd);strRunCmd = _T("/c start /w pkgmgr /iu:IIS-ManagementService;");bRet = RunSysCmd(strRunCmd);//FTP服务器strRunCmd = _T("/c start /w pkgmgr /iu:IIS-FTPServer;");bRet = RunSysCmd(strRunCmd);strRunCmd = _T("/c start /w pkgmgr /iu:IIS-FTPSvc;");bRet = RunSysCmd(strRunCmd);strRunCmd = _T("/c start /w pkgmgr /iu:IIS-FTPExtensibility;");bRet = RunSysCmd(strRunCmd);//Windows process Activation ServicestrRunCmd = _T("/c start /w pkgmgr /iu:WAS-WindowsActivationService;");bRet = RunSysCmd(strRunCmd);strRunCmd = _T("/c start /w pkgmgr /iu:WAS-ProcessModel;");bRet = RunSysCmd(strRunCmd);strRunCmd = _T("/c start /w pkgmgr /iu:WAS-NetFxEnvironment;");bRet = RunSysCmd(strRunCmd);strRunCmd = _T("/c start /w pkgmgr /iu:WAS-ConfigurationAPI;");bRet = RunSysCmd(strRunCmd);return bRet;}
//IIS的组件结构代码: WebServerRole web服务角色 IIS-WebServer web服务器 IIS-CommonHttpFeatures 常见HTTP功能 IIS-StaticContent 静态内容 IIS-DefaultDocument 默认文档 IIS-DirectoryBrowsing 目录浏览 IIS-HttpErrors HTTP错误 IIS-HttpRedirect HTTP重定向 IIS-ApplicationDevelopment 应用程序 IIS-ASP ASP IIS-CGI CGI IIS-ASPNET ASP.NET3.5 IIS-NetFxExtensibility .NET Extensibility3.5 IIS-ASPNET45 ASP.NET4.5 IIS-NetFxExtensibility45 .NET Extensibility4.5 NetFx4Extended-ASPNET45 IIS-ISAPIFilter ISAPI筛选器 IIS-ISAPIExtensions ISAPI扩展 IIS-HealthAndDiagnostics 运行状态和诊断 IIS-HttpLogging HTTP日志记录 IIS-LoggingLibraries 日志记录工具 IIS-RequestMonitor 请求监控器 IIS-HttpTracing 跟踪 IIS-CustomLogging 自定义日志 IIS-ODBCLogging ODBC日志记录 IIS-Security 安全性 IIS-BasicAuthentication 基本身份验证 IIS-WindowsAuthentication Windows身份验证 IIS-DigestAuthentication 摘要式身份验证 IIS-ClientCertificateMappingAuthentication 客户端证书映射身份验证 IIS-IISCertificateMappingAuthentication IIS证书映射身份验证 IIS-URLAuthorization URL授权 IIS-RequestFiltering 请求筛选 IIS-IPSecurity IP和域限制 IIS-Performance 性能 IIS-HttpCompressionStatic 静态内容压缩 IIS-HttpCompressionDynamic 动态内容压缩 IIS-WebServerManagementTools 管理工具 IIS-ManagementConsole IIS管理控制台 IIS-ManagementScriptingTools IIS 管理脚本和工具 IIS-ManagementService 管理服务 IIS-FTPServer FTP服务器 IIS-FTPSvc FTP服务 IIS-FTPExtensibility FTP扩展 NetFx3ServerFeatures .NET Framework 3.5功能 NetFx3 .NET Frameword 3.5 NetFx4ServerFeatures .NET Frameword 4.6功能 NetFx4 .NET Frameword 4.6 NetFx4Extended-ASPNET45 ASP.NET 4.6 WAS-WindowsActivationService Windows Process Activation Service WAS-ProcessMode 进程模型 WAS-NetFxEnvironment .NET Environment 3.5 WAS-ConfigurationAPI 配置 API
使用的是 pkgmgr的安装方式,其实用dism也行。在此提供一个方法获取这些角色和功能的命令代码, 在cmd.exe下或者Windows PowerShell.exe下,查看组件是否安装及组件角色和功能代码:
(1)进入 Windows PowerShell.exe 输入:Import-Module ServerManager 回车执行;Get-WindowsFeature 回车执行;
(2)进入 Windows PowerShell.exe 输入:dism /Online /Get-Features 回车执行;
(3)进入 cmd.exe 输入:dism /Online /Get-Features 回车执行。
这些安装都是在cmd下进行的,完整的安装就如代码上的,有图的部分知识要求注意的安装顺序,请注意最终以代码为主。好了Windows Server 2016的IIS10.0组件安装就是这些了(我个人需要就这个么多 o_X)。我有个疑问就是总觉得有点不合理,在此供大家学习,不足之处还望大家提出。
阅读全文
0 0
- C++ Windows Server 2016用CMD命令行安装IIS角色和功能组件
- Windows Server 2003上安装IIS组件
- 安装 Windows 功能角色
- Windows Server 2008 R2 中 Web 服务器 (IIS) 角色的新增功能
- windows上命令行cmd下安装caffe
- Windows Server 2008 IIS安装
- 安装iis打开“打开和关闭windows功能”一片空白解决方法
- Windows Server 2003 安装IIS和ASP.NET的方法
- Windows Server 2008 中 Web 服务器 (IIS) 角色更改
- windows server 2008下安装SQL SERVER 2005出现IIS功能要求警告解决方案
- windows server 2008下安装SQL SERVER 2005出现IIS功能要求警告解决方案
- windows server 2008下安装SQL SERVER 2005出现IIS功能要求警告解决方案
- windows命令行cmd设置和快捷键
- Server 8 Beta 添加角色和功能
- 阿里云学生优惠Windows Server 2012 R2无法安装IIS等组件的解决办法
- C++ Windows Server 2008 以上版本中IIS安装FastCGI组件
- Windows Xp Home Edition 安装IIS组件
- 用Console2替代windows 的命令行 cmd
- java并发编程条件队列的唤醒机制探究
- HDU 5672 String
- day5模块学习--hashlib模块
- MpAndroidChart绘制折线图及标志线
- HTTP 请求方式: GET和POST的比较
- C++ Windows Server 2016用CMD命令行安装IIS角色和功能组件
- 3.13—字符串—Anagrams
- Java 集合系列02之 Collection架构
- Liunx 常用命令(一)
- Unicode中文和特殊字符的编码范围
- 初探Android PMS服务
- 3.15—字符串—Length of Last Word
- Ros学习遇到的问题汇总
- windows用户信息等资料搜集