Включить функцию Windows \ Роль через Installshield
Наше приложение поддерживается для ОС "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? ИЛИ нам нужно написать любое специальное действие для этого. Если нам нужно написать пользовательское действие, то как включить функцию Windows через код на C#.
Может ли кто-нибудь помочь мне в этом.
Спасибо в ожидании.
1 ответ
Насколько я знаю, установка ролей и функций Windows доступна только для проектов InstallShield AdvancedUI и Suite.
Вместо этого вы можете создать собственное предварительное условие установки, указав состояние установки компонента в реестре и вручную включив необходимую функцию с помощью пакетного сценария.
Например, мы сделали то же самое для нашей предпосылки MSMQ: соответствующий реестр HKLM\SOFTWARE\Microsoft\MSMQ\Setup
и запись для проверки msmq_CoreInstalled == 1
Пакетный файл содержит вызов
%SystemRoot%\sysnative\dism /online /Enable-Feature /FeatureName:MSMQ-Server /all
и немного глазных конфет.
В настоящее время это решение работает для всех протестированных до сих пор систем Windows (например, Windows 7/8/8.1 и Server 2008R2/2012.