【问题标题】:Programmatically enable (install) IIS以编程方式启用(安装)IIS
【发布时间】:2015-11-12 20:40:21
【问题描述】:

有时有一台没有 IIS 的 PC。它要么禁用,要么没有安装。在这种情况下,我需要自己启用它according to those steps

我正在尝试创建将检查 IIS 是否已启用(安装)的应用程序,如果没有,它将启用(安装)它。

我尝试使用.msi files from here 安装 IIS,但它要求我在安装前关注those stpes

我尝试使用Advanced Installer,但显然它安装了 IIS 8.0 Express,但它仍然使 IIS 处于禁用状态。

我需要做什么才能以编程方式启用 IIS?如果我需要运行一个 IIS 安装文件来完成它也是可以接受的(我没有找到正确的)。

【问题讨论】:

    标签: c# .net iis installation installshield


    【解决方案1】:

    您可以通过命令行安装 IIS。以下命令将在 Windows 8 上安装 IIS(您可以对其进行编辑以添加/删除某些功能。这只是我过去使用的命令):

    PkgMgr:

    start /w pkgmgr /iu:IIS-WebServerRole;IIS-WebServer;IIS-CommonHttpFeatures;IIS-StaticContent;IIS-DefaultDocument;IIS-DirectoryBrowsing;IIS-HttpErrors;IIS-ApplicationDevelopment;IIS-ISAPIExtensions;IIS-ISAPIFilter;IIS-NetFxExtensibility45;IIS-ASPNET45;IIS-NetFxExtensibility;IIS-ASPNET;IIS-HealthAndDiagnostics;IIS-HttpLogging;IIS-RequestMonitor;IIS-Security;IIS-RequestFiltering;IIS-HttpCompressionStatic;IIS-WebServerManagementTools;IIS-ManagementConsole;WAS-WindowsActivationService;WAS-ProcessModel;WAS-NetFxEnvironment;WAS-ConfigurationAPI

    DISM:

    START /WAIT DISM /Online /Enable-Feature /FeatureName:IIS-ApplicationDevelopment /FeatureName:IIS-ASP /FeatureName:IIS-ASPNET /FeatureName:IIS-BasicAuthentication /FeatureName:IIS-CGI /FeatureName:IIS-ClientCertificateMappingAuthentication /FeatureName:IIS-CommonHttpFeatures /FeatureName:IIS-CustomLogging /FeatureName:IIS-DefaultDocument /FeatureName:IIS-DigestAuthentication /FeatureName:IIS-DirectoryBrowsing /FeatureName:IIS-FTPExtensibility /FeatureName:IIS-FTPServer /FeatureName:IIS-FTPSvc /FeatureName:IIS-HealthAndDiagnostics /FeatureName:IIS-HostableWebCore /FeatureName:IIS-HttpCompressionDynamic /FeatureName:IIS-HttpCompressionStatic /FeatureName:IIS-HttpErrors /FeatureName:IIS-HttpLogging /FeatureName:IIS-HttpRedirect /FeatureName:IIS-HttpTracing /FeatureName:IIS-IIS6ManagementCompatibility /FeatureName:IIS-IISCertificateMappingAuthentication /FeatureName:IIS-IPSecurity /FeatureName:IIS-ISAPIExtensions /FeatureName:IIS-ISAPIFilter /FeatureName:IIS-LegacyScripts /FeatureName:IIS-LegacySnapIn /FeatureName:IIS-LoggingLibraries /FeatureName:IIS-ManagementConsole /FeatureName:IIS-ManagementScriptingTools /FeatureName:IIS-ManagementService /FeatureName:IIS-Metabase /FeatureName:IIS-NetFxExtensibility /FeatureName:IIS-ODBCLogging /FeatureName:IIS-Performance /FeatureName:IIS-RequestFiltering /FeatureName:IIS-RequestMonitor /FeatureName:IIS-Security /FeatureName:IIS-ServerSideIncludes /FeatureName:IIS-StaticContent /FeatureName:IIS-URLAuthorization /FeatureName:IIS-WebDAV /FeatureName:IIS-WebServer /FeatureName:IIS-WebServerManagementTools /FeatureName:IIS-WebServerRole /FeatureName:IIS-WindowsAuthentication /FeatureName:IIS-WMICompatibility /FeatureName:WAS-ConfigurationAPI /FeatureName:WAS-NetFxEnvironment /FeatureName:WAS-ProcessModel /FeatureName:WAS-WindowsActivationService

    在 C# 中,您可以创建一个执行此命令的进程,如下所示:

    string command = "the above command";
    ProcessStartInfo pStartInfo = new ProcessStartInfo("cmd.exe", "/c " + command);
    Process p = new Process();
    p.StartInfo = pStartInfo;
    p.Start();
    

    【讨论】:

    • PkgMgr 多年前已被弃用。微软建议改用 DISM /Online。
    • 公平点,但我发现 DISM 的问题是在安装 IIS 时需要重新启动机器。如果以编程方式安装 IIS 以省去手动安装的麻烦(似乎就是这种情况),我无法想象每次运行命令时重新启动机器是一个理想的选择。我还没有遇到通过 DISM 安装 IIS 而无需重新启动的方法,但如果有办法这样做,我想知道。
    • 您是否通过了 /NoRestart 开关?
    • 是的,它只是在工具运行后抑制“你想现在重新启动吗?y/n”消息,但在启用 IIS 之前仍然需要重新启动。
    • 我会重启。 Windows 推迟了操作系统级别的配置,很可能需要它。当我安装 IIS 时,它通常是一台服务器,所以无论如何我都希望重新启动以确保修补、GPO、SCCM 周期等一切运行。我完全赞成在可能的情况下整合并避免重新启动,但 IIS 对机器来说是一个相当大的变化。
    【解决方案2】:

    您使用 InstallShield 标记您的问题,所以我提到更高版本的 InstallShield 支持启用 Windows 功能:

    Enabling Windows Roles and Features During a Suite/Advanced UI Installation

    也就是说,我通常不喜欢这样做,因为您确实会干扰 PC 的配置。我更喜欢编写检查所需功能是否已安装,如果未安装则阻止。

    另一个想法是 ASP.NET 5.0 现在支持自托管,就像过去的 WCF 等其他技术一样。简单地放弃对 IIS 的需求并以这种方式解决问题可能是有意义的。

    【讨论】:

      【解决方案3】:

      关于您使用 Advanced Installer 的体验。您最终安装了 IIS Express,因为您使用了我们对先决条件的预定义支持。你应该一直使用install Windows Feature Bundles的预定义支持。

      使用此支持,您可以轻松选择应启用的操作系统功能并设置自定义条件。在我们的 YouTube 频道上,您可以找到示例/教程:

      【讨论】:

        【解决方案4】:

        您可以从命令行安装 IIS。首先你需要启用 ASP.NET 3.5:

        IIS-ASPNET;IIS-NetFxExtensibility;NetFx4Extended-ASPNET45
        

        或 4.5:

        IIS-ASPNET45;IIS-NetFxExtensibility45;NetFx4Extended-ASPNET45
        

        之后就可以安装IIS8了,基本上和IIS7一样。检查IIS7安装http://www.iis.net/learn/install/installing-iis-7/installing-iis-from-the-command-line

        【讨论】:

          猜你喜欢
          • 2021-06-15
          • 1970-01-01
          • 1970-01-01
          • 2011-03-30
          • 1970-01-01
          • 2010-09-30
          • 1970-01-01
          • 2011-06-13
          相关资源
          最近更新 更多