4

我们的应用程序支持操作系统“Windows server 2012 R2”。我们有一个应用程序,我们需要在其中启用“应用程序初始化”功能。我们使用 Installshield 2014 来制作我们的应用程序的安装程序。我找到了检查任何 Windows 功能状态的实现。我尝试了以下代码,它为我提供了已安装功能的列表:

ManagementClass objMC = new ManagementClass("Win32_ServerFeature");
ManagementObjectCollection objMOC = objMC.GetInstances();
string featureName = string.Empty;
var AppInitFeature = (from ManagementObject objectFeature in objMOC
                      where objectFeature.Properties["Name"].Value.ToString() == "Application Initialization"
                      select objectFeature).First();

我的问题是:installshield 中是否有任何内置功能可以启用 Windows 功能?或者我们需要为此编写任何自定义操作。 如果我们需要编写自定义动作,那么如何通过 c# 代码启用 windows 功能。

谁可以帮我这个事。

感谢期待。

4

1 回答 1

3

据我所知,Windows 角色和功能的安装仅适用于 InstallShield AdvancedUI 和 Suite 项目。

相反,您可以通过在注册表中识别功能安装状态并使用批处理脚本手动启用所需功能来创建自己的安装先决条件。

例如,我们为我们的 MSMQ 先决条件做了同样的事情:相应的注册表是HKLM\SOFTWARE\Microsoft\MSMQ\Setup并且要检查的条目是msmq_CoreInstalled == 1

批处理文件包含调用

%SystemRoot%\sysnative\dism /online /Enable-Feature /FeatureName:MSMQ-Server /all

和一些眼睛糖果。

该解决方案目前适用于迄今为止测试的所有 Windows 系统(即 afaik Windows 7/8/8.1 和 Server 2008R2/2012。

于 2015-09-03T06:17:31.523 回答