我正在使用使用Burn的WiX安装程序,因此具有.Net要求。捆绑.Net的先决条件版本不适用于服务器操作系统,因为它们需要使用角色管理器。事实上,它是WiX安装的一部分并不是非常重要的,如果有其他方法可以帮助我完成我的任务。我正在运行/测试下面的代码作为独立的.Net控制台应用程序。在使用this method失败以解决此问题后,我编写了以下使用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功能控制面板自动安装或卸载Windows Server角色和功能。
看到我的想法我已经使用了相当于“服务器管理器cmdlet”的东西,我不确定它实际上要求的是什么。所以这两部分问题是1)解决这个问题的正确方法是什么。 2)如何在安装过程中保持安静。
PS:如果这个问题确实属于Server Fault,请告诉我。
答案 0 :(得分:1)
Enable-WindowsOptionalFeature
是DISM的一部分,它将用于创建一个Windows映像以部署到新系统
Add-WindowsFeature
是您正在寻找的,它为当前的Windows Server实例添加了一项功能。它位于ServerManager
powershell模块中,该模块仅适用于Windows Server(不适用于Windows 7)
答案 1 :(得分: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。
答案 2 :(得分:0)
基本上,命令失败,因为组件存储中不存在您需要安装的组件。管理员需要插入安装媒体。也许您可以在安装程序中包含相应的文件以避免手动步骤,但我从未尝试过这样做,这也可能会造成许可问题。
对于Server 2012,Microsoft默认决定从组件存储中删除.NET framework 3.5。它仍然存在于安装介质上,在安装过程中不会假脱机到磁盘上。我不久前在我的博客中写了一篇rant。
答案 3 :(得分:0)
我在尝试弄清楚服务器2012实例中哪些内容被破坏时添加了一些额外的日志/写入线程语句。我意识到那些调试行根本没有输出到控制台。
事实证明我没有仔细阅读弹出窗口。投诉不是关于使用PS命令行开关,而是关于尝试安装.Net 3.5来运行我的应用程序的投诉。我的应用程序的目标是.Net 3.5,因此消息是关于尝试自动安装.Net 3.5
这个问题可能不仅仅是对我短暂失明和愚蠢的证明,而且还可以作为对注重细节和阅读错误的重要性的评论,以了解它为什么会发生。 :)