1

我正在开发一个使用 Burn 的 WiX 安装程序,因此需要 .Net。捆绑 .Net 的必备版本在服务器操作系统上不起作用,因为它们需要使用角色管理器。它是 WiX 安装的一部分这一事实并不是非常重要,它的存在是为了以防有其他方法可以帮助我完成我的任务。我正在将下面的代码作为独立的 .Net 控制台应用程序运行/测试。在使用此方法失败以解决此问题后,我编写了以下使用 powershell 和“Enable-WindowsOptionalFeature”。

    static void Main(string[] args)
    {

        PowerShell ps = PowerShell.Create();
        Runspace runspace = RunspaceFactory.CreateRunspace();
        runspace.Open();

        Pipeline pipeline = runspace.CreatePipeline();

        Command addDotNet = new Command("Enable-WindowsOptionalFeature");
        addDotNet.Parameters.Add("-FeatureName netfx3 -Online -All");
        pipeline.Commands.Add(addDotNet);
        Collection<PSObject> log = pipeline.Invoke();

}

当我运行它时,会弹出这个窗口。
Windows Server 角色和功能无法通过 Windows 功能控制面板自动安装或卸载。 在此处输入图像描述

看到我认为我已经在使用相当于“服务器管理器 cmdlet”的方式,我不确定它实际要求的是什么。所以两部分的问题是 1)解决这个问题的正确方法是什么。2)如何在安装过程中保持安静。

PS:如果这个问题真的属于服务器故障,请告诉我。

4

4 回答 4

1

Enable-WindowsOptionalFeature是 DISM 的一部分,它将用于创建 Windows 映像以部署到新系统

Add-WindowsFeature是您正在寻找的,它为当前的 Windows Server 实例添加了一项功能。它位于ServerManagerpowershell 模块中,仅适用于 Windows Server(不适用于 Windows 7)

于 2013-07-19T01:45:30.953 回答
0

我要说的只是常识,而不是以前的经验,如果这不相关,请见谅。

您似乎可以使用 Windows Server 2012,因为只有此版本具有您正在使用的 Windows ADK。Windows 8(客户端操作系统)和 Windows Server 2012(服务器操作系统)具有不同的启用功能的方式。这些在 Windows 8 中作为可选功能出现,但在服务器中作为服务器角色/功能出现。

请注意,与您所说的相反,捆绑包不起作用不是因为它是服务器操作系统,它不起作用是因为它包含在操作系统中并且需要启用。这适用于服务器操作系统 (Win 2012) 和客户端操作系统 (Windows 8)。

只是你需要为 Windows 8 和 Win 2012 使用不同的方法。

对于 Windows 8,您的方法可以工作。对于 Windows 2012,您看到的帮助建议您使用Add-WindowsFeature cmdlet。

于 2013-07-19T01:55:09.237 回答
0

基本上,该命令会失败,因为您需要安装的组件不在组件存储中。管理员需要插入安装媒体。也许您可以在安装程序中包含相应的文件以避免该手动步骤,但我从未尝试过,它也可能会造成许可问题。

对于 Server 2012,Microsoft 决定默认从组件存储中删除 .NET framework 3.5。它仍然存在于安装媒体上,只是在安装过程中没有假脱机到磁盘上。不久前,我在我的博客上写了一篇关于这个的咆哮。

于 2013-07-19T08:11:03.717 回答
0

我添加了一些额外的日志记录/写入语句,同时试图找出服务器 2012 实例中的问题所在。我意识到那些调试行根本没有输出到控制台。

事实证明,我没有足够仔细地阅读弹出窗口。投诉不是关于使用 PS 命令行开关,而是关于尝试安装 .Net 3.5 来运行我的应用程序的投诉。我的应用程序的目标是 .Net 3.5,所以消息是关于尝试自动安装 .Net 3.5

愿这个问题不仅仅是对我一时的盲目和愚蠢的证明,而且还可以作为对关注细节和阅读错误理解为什么发生的重要性的评论。:)

于 2013-07-22T17:46:44.900 回答