Thanks Steven yes I have similar also by checking the registry I build a list of the missing features so in theory if all the needed features are active I should not need to run DISM.
As I said my main issue is with the seemingly random nature of what happens when DISM is run on the one PC starting from a fixed point just after installing Windows I have seen it work with no error, error out with the error 0x800f0906 and require the PC to be restarted before IIS is active. I was hoping that there might be a more reliable way than using DISM of activating the IIS. On 11 December 2013 14:33, Steven Ogilvie <steven.ogil...@titus.com> wrote: > One problem is that between the different versions of Windows the DISM > command line parameters have changed... > I have created a custom action that checks what version of Windows I am > running and then sets the command line parameters up accordingly... > Btw WriteErrorLogInstall is a custom logging function replace it with the > session logging... > > /// <summary> > /// The check web server roles. > /// </summary> > /// <param name="session"> > /// The session. > /// </param> > /// <returns> > /// The<see cref="ActionResult"/>. > /// </returns> > /// <exception cref="ArgumentNullException"> > /// throw new ArgumentNullException("session"); > /// </exception> > [CustomAction] > public static ActionResult CheckWebServerRoles(Session session) > { > var productName = string.Empty; > try > { > if (session == null) > { > throw new ArgumentNullException("session"); > } > > var tempString = GetSessionProperty(session, > "CustomActionData", false); > var parts = tempString.Split(new[] { '|' }); > productName = parts[0]; > > var platformVersion = Environment.OSVersion.VersionString; > > var cmdLineParameters = string.Empty; > if (platformVersion.Contains("6.1.760") && > !Os.IsWindowsServer()) > { > // Windows 7 > cmdLineParameters = "/Online /NoRestart > /Enable-Feature /featurename:IIS-WebServerRole > /featurename:IIS-CommonHttpFeatures /featurename:IIS-StaticContent > /featurename:IIS-WebServerRole /featurename:IIS-ApplicationDevelopment > /featurename:IIS-ISAPIFilter /featurename:IIS-ISAPIExtensions > /featurename:IIS-NetFxExtensibility /featurename:IIS-ASPNET > /featurename:IIS-WebServerRole /featurename:IIS-Security > /featurename:IIS-RequestFiltering /featurename:IIS-WindowsAuthentication > /featurename:WAS-ProcessModel /featurename:WAS-WindowsActivationService > /featurename:WAS-NetFxEnvironment /featurename:WAS-ConfigurationAPI > /featurename:NetFx3 /featurename:WCF-HTTP-Activation"; > } > else if (platformVersion.Contains("6.1.760") && > Os.IsWindowsServer()) > { > // Windows Server 2008 R2 > cmdLineParameters = "/Online /NoRestart > /Enable-Feature /featurename:IIS-WebServerRole > /featurename:IIS-CommonHttpFeatures /featurename:IIS-StaticContent > /featurename:IIS-WebServerRole /featurename:IIS-ApplicationDevelopment > /featurename:IIS-ISAPIFilter /featurename:IIS-ISAPIExtensions > /featurename:IIS-NetFxExtensibility /featurename:IIS-ASPNET > /featurename:IIS-WebServerRole /featurename:IIS-Security > /featurename:IIS-RequestFiltering /featurename:IIS-WindowsAuthentication > /featurename:NetFx3 /featurename:WCF-HTTP-Activation"; > } > else if (platformVersion.Contains("6.2.920") && > !Os.IsWindowsServer()) > { > // Windows 8 > cmdLineParameters = "/Online /NoRestart > /Enable-Feature /featurename:IIS-WebServerRole > /featurename:IIS-CommonHttpFeatures /featurename:IIS-StaticContent > /featurename:IIS-ApplicationDevelopment /featurename:IIS-ISAPIFilter > /featurename:IIS-ISAPIExtensions /featurename:IIS-NetFxExtensibility45 > /featurename:IIS-ASPNET45 /featurename:IIS-Security > /featurename:IIS-RequestFiltering /featurename:IIS-WindowsAuthentication > /featurename:NetFx4-AdvSrvs /featurename:NetFx4Extended-ASPNET45 > /featurename:WCF-Services45 /featurename:WCF-HTTP-Activation45 /All"; > } > else if (platformVersion.Contains("6.2.920") && > Os.IsWindowsServer()) > { > // Windows Server 2012 > cmdLineParameters = "/Online /NoRestart > /Enable-Feature /featurename:IIS-WebServerRole > /featurename:IIS-CommonHttpFeatures /featurename:IIS-StaticContent > /featurename:IIS-ApplicationDevelopment /featurename:IIS-ISAPIFilter > /featurename:IIS-ISAPIExtensions /featurename:IIS-NetFxExtensibility45 > /featurename:IIS-ASPNET45 /featurename:IIS-Security > /featurename:IIS-RequestFiltering /featurename:IIS-WindowsAuthentication > /featurename:NetFx4 /featurename:NetFx4Extended-ASPNET45 > /featurename:WCF-Services45 /featurename:WCF-HTTP-Activation45 /All"; > } > > var system32Directory = > Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Windows), > "system32"); > if (Environment.Is64BitOperatingSystem && > !Environment.Is64BitProcess) > { > // For 32-bit processes on 64-bit systems, > %windir%\system32 folder > // can only be accessed by specifying > %windir%\sysnative folder. > system32Directory = > Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Windows), > "sysnative"); > } > > // Windows 7 / 8 / 2008R2 / 2012 > var cmdLineExe = Path.Combine(system32Directory, > "dism.exe"); > > // Install Web Server features if missing > var runDismInfo = new ProcessStartInfo > { > UseShellExecute = true, > Arguments = cmdLineParameters, > FileName = cmdLineExe, > WindowStyle = ProcessWindowStyle.Hidden, > CreateNoWindow = true > }; > > // Run the external process & wait for it to finish > using (var runDismProc = Process.Start(runDismInfo)) > { > runDismProc.WaitForExit(); > } > } > catch (Exception ex) > { > WriteErrorLogInstall(session, "CheckWebServerRoles failed: > ", ex, true); > if (session != null) > { > session.Message( > InstallMessage.User + (int)MessageBoxIcon.Error + > (int)MessageBoxButtons.OK, > new Record { FormatString = productName + " failed > to install specific Web Server features\nException: " + ex.Message }); > } > > return ActionResult.Failure; > } > > WriteSuccessLogInstall(session, "CheckWebServerRoles succeeded > to install specific Web Server features...", true); > return ActionResult.Success; > } > > > /// <summary> > /// The OS. > /// </summary> > private class Os > { > /// <summary> > /// The OS ANYSERVER. > /// </summary> > [SuppressMessage("StyleCop.CSharp.NamingRules", > "SA1310:FieldNamesMustNotContainUnderscore", Justification = "Reviewed. > Suppression is OK here.")] > // ReSharper disable InconsistentNaming > private const int OS_ANYSERVER = 29; > // ReSharper restore InconsistentNaming > > /// <summary> > /// Prevents a default instance of the <see cref="Os"/> class > from being created. > /// </summary> > private Os() > { > } > > /// <summary> > /// The is windows server. > /// </summary> > /// <returns> > /// The <see cref="bool"/>. > /// </returns> > public static bool IsWindowsServer() > { > return IsOS(OS_ANYSERVER); > } > > [DllImport("shlwapi.dll", SetLastError = true, EntryPoint = > "#437")] > private static extern bool IsOS(int os); > } > > -----Original Message----- > From: John Walter [mailto:jo...@twofold-software.com] > Sent: December-11-13 5:41 AM > To: WiX-users@lists.sourceforge.net > Subject: [WiX-users] Help activating IIS using the DISM command > > Hi, > > I am fairly new to the WiX installer but have been able to create an > install package that creates our website and installs all needed components > some being installed from other installers run from my bootstrapper. > > The one element I am having difficulties with is enabling IIS. We need to > have the ASPNET45 features enabled for our web page to operate so even if > the IIS is enabled on the destination PC I need to check the features that > are enabled. I can do this via the registry as each feature has an entry nd > so can build a DISM command line that only enabled the missing features. > > The problems I am having seem to come from inconsistencies with how the > DISM command run. Sometimes there are no errors and IIS is up and running, > sometimes I get error 0x800f0906 (this is concerning the source of the > files needed for the features being enabled) and sometimes the IIS is > installed but will only be running once the PC has been re-booted. The PC > in all cases was a clean freshly installed version of Windows 8 (32-Bit) > run as a virtual PC and reset after each attempt but using a snapshot so I > am reasonably confident that the PC in all cases was the same. > > Can anyone give me a clue as to where I can go from here as it seems the > only way for me to get round this reliably would be to give detailed > instructions as to how to enable IIS and what settings are required and get > the user to activate manually and only check that the required features are > turned on before installing the web site. > > > Example of the DISM command line > > DISM /online /enable-feature /featurename:NetFx3 > /featurename:NetFx4-AdvSrvs /featurename:NetFx4Extended-ASPNET45 > /featurename:IIS-NetFxExtensibility45 /featurename:IIS-ASPNET45 /All > > -- > > *John Walter* > > ------------------------------------------------------------------------------ > Rapidly troubleshoot problems before they affect your business. Most IT > organizations don't have a clear picture of how application performance > affects their revenue. With AppDynamics, you get 100% visibility into your > Java,.NET, & PHP application. Start your 15-day FREE TRIAL of AppDynamics > Pro! > http://pubads.g.doubleclick.net/gampad/clk?id=84349831&iu=/4140/ostg.clktrk > _______________________________________________ > WiX-users mailing list > WiX-users@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/wix-users > > > ------------------------------------------------------------------------------ > Rapidly troubleshoot problems before they affect your business. Most IT > organizations don't have a clear picture of how application performance > affects their revenue. With AppDynamics, you get 100% visibility into your > Java,.NET, & PHP application. Start your 15-day FREE TRIAL of AppDynamics > Pro! > http://pubads.g.doubleclick.net/gampad/clk?id=84349831&iu=/4140/ostg.clktrk > _______________________________________________ > WiX-users mailing list > WiX-users@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/wix-users > -- *John Walter* Two Fold Software Ltd - Defining the Next Generation of LIMS Dodwell House, Chilton Business Centre,Chilton, Aylesbury,Bucks, HP18 9LS, UK Phone: +44 1844 208598 Fax: +44 1844 208869 <http://www.twofold-software.com/> ------------------------------------------------------------------------------ Rapidly troubleshoot problems before they affect your business. Most IT organizations don't have a clear picture of how application performance affects their revenue. With AppDynamics, you get 100% visibility into your Java,.NET, & PHP application. Start your 15-day FREE TRIAL of AppDynamics Pro! http://pubads.g.doubleclick.net/gampad/clk?id=84349831&iu=/4140/ostg.clktrk _______________________________________________ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users