Ho un programma di installazione di webapp che installa tutti i suoi prerequisiti, incluso anche IIS 7.Il modo migliore per installare IIS7 a livello di programmazione
Dal momento che IIS non viene fornito come prerequisito in un progetto di installazione di Visual Studio, ho trovato il seguente codice per installare IIS dal codice (con targeting per Windows Vista e 7).
private string ConfigureIIS7()
{
string output = string.Empty;
if (Environment.OSVersion.ToString().Contains("Microsoft Windows NT 5")) // Its WindowsXP [with or without SP2]
{
MessageBox.Show("IIS 6.0 is not installed on this machine. Please install the same and proceed with the installation or contact your administrator","Installer",MessageBoxButtons .OK ,MessageBoxIcon .Warning);
throw new System.Exception("IIS 6.0 is not installed on this machine.");
}
else
{
string CmdToExecute;
CmdToExecute = "cmd /c start /w pkgmgr /l:log.etw /iu:IIS-WebServerRole;IIS-WebServer;IIS-CommonHttpFeatures;IIS-StaticContent;IIS-DefaultDocument;IIS-DirectoryBrowsing;IIS-HttpErrors;IIS-HttpRedirect;IIS-ApplicationDevelopment;IIS-ASPNET;IIS-NetFxExtensibility;IIS-ASP;IIS-CGI;IIS-ISAPIExtensions;IIS-ISAPIFilter;IIS-ServerSideIncludes;IIS-HealthAndDiagnostics;IIS-HttpLogging;IIS-LoggingLibraries;IIS-RequestMonitor;IIS-HttpTracing;IIS-CustomLogging;IIS-Security;IIS-BasicAuthentication;IIS-URLAuthorization;IIS-RequestFiltering;IIS-IPSecurity;IIS-Performance;IIS-HttpCompressionStatic;IIS-HttpCompressionDynamic;IIS-WebServerManagementTools;IIS-ManagementConsole;IIS-ManagementScriptingTools;IIS-ManagementService;IIS-IIS6ManagementCompatibility;IIS-Metabase;IIS-WMICompatibility;IIS-LegacyScripts;IIS-LegacySnapIn;WAS-WindowsActivationService;WAS-ProcessModel;WAS-NetFxEnvironment;WAS-ConfigurationAPI";
Process prRunIIS = new Process();
prRunIIS.StartInfo = new ProcessStartInfo("cmd.exe", CmdToExecute);
prRunIIS.StartInfo.UseShellExecute = false;
prRunIIS.StartInfo.RedirectStandardOutput = true;
prRunIIS.StartInfo.CreateNoWindow = true;
prRunIIS.Start();
prRunIIS.WaitForExit();
output = prRunIIS.StandardOutput.ReadToEnd();
}
return output;
}
Questo codice ha funzionato perfettamente finora. La mia unica preoccupazione è che la parte di installazione richiede molto tempo.
Ora, ho la possibilità di riscrivere alcuni codici e modificare l'interfaccia utente dell'installatore. Sono appena arrivato a questa parte e mi chiedevo se questa era l'unica soluzione per installare IIS dal codice, o ci potrebbe essere un modo migliore che non ho trovato?
Sono solo curioso di sapere quali sono gli altri modi per installare IIS. Anche le risposte mirate per Windows 8 sono apprezzate.
E come ottenere l'output int?dism restituisce il muro di testo – Mike
@ Mike cosa ne pensi? – i3arnon
Bene se questo è un modo programmatico, sarebbe conveniente se il risultato del vostro ProcessEx.Run() restituisce un codice. Dism restituisce la stringa giusta? Come posso analizzare facilmente l'output per sapere che l'installazione è riuscita/fallita e, in caso di errore, per ottenere il codice di errore corretto? – Mike