I am writing a installer using WiX that will create a website and virtual directory, amongst other things, in IIS. I have been having trouble ensuring that the installer will work on both Windows Server 2003 with IIS6, Windows Server 2008 with IIS7 and Windows Server 2008 R2 with IIS7.5.
One of the first problems that I came across was that IIS7 uses a different group for accounts. Instead of the IIS_WPG of IIS6 it will use the IIS_IUSR group. The website configuration used to belong in a separate custom action function that referenced this group name, the move to using the WiX IIS functionality may help with other minor differences between IIS versions.
Are there any other major changes to IIS that I should be aware of? Are there any guidelines for writing installers to function on both Windows Server 2003 and Windows Server 2008 platforms?
Thanks
If you are using WiX 3.0, you should be aware that you have to turn "IIS 6 compatibility mode" ON in IIS 7.X for the standard WiX IIS extension to work. WiX v3.5 contains native support for IIS 7, but it is not stable yet - WiX 3.5 is beta itself. You can read more about WiX version plans and feature sets on Rob's blog.
I personally have to support all versions of IIS starting from 5.1 (WinXP) in my product. I ended up using the standard WiX IIS extension and require "IIS 6 compatibility mode" as a prerequisite. Besides, I have a separate WebSite element for each of IIS versions.
For instance, WebSite element has WebApplication attribute, where you reference the WebApplication element. This element in its turn has Isolation attribute, which makes sense for IIS 5.X, and WebAppPool attribute, which is meaningful for IIS 6+. Hence, I have a couple of WebApplication elements I reference either from WebSite for IIS 5, or from WebSite for IIS 6+.
Hope you got the idea and it can help you.
Related
I'm uing various different versions of WIX trying to get an installer to be able to install to both IIS versions. I've heard that WIX doesn't natively support IIS7 so one must make a CA to provide the functionality
Does anyone have an example of how to create functionality which can do this? I've already got an installer to install the web site to IIS6 but can't attach this with an IIS7 custom action I've found.
Edit: Ahh okay I'll rephrase my question.
How would I create a UI to allow a user to choose the web site to use for IIS6 and IIS7 (i.e support all versions of IIS to query)?
WiX 3.5 supports IIS7. You should use the same elements of IIsExtension you normally do for IIS6. Besides, "IIS6 compatibility" prerequisite is not required any longer.
I have an application that I am wrapping up in an installer. I would like to, either through the registry, or by writing a script, enable IIS 6 metabase compatibility in IIS 7.
Does anyone know if this is possible?
You should be able to use dism.exe or pkgmgr.exe or ocsetup.exe to automate the installation of this component. You can technically do this these days because Windows Vista ( as far as I know ) always caches the WIM file needed to install the component.
Still, I wouldn't do it. I'd just upgrade to InstallShield 2010 which has native II7 capabilities. Or you could use Windows Installer XML 3.5 which has the same. You eliminate the dependency and simplify the deployment in the process.
If you decide to do it anyways, check out this good article:
Install Typical IIS Workloads
UI Name Update Name
IIS 6 Metabase Compatibility
IIS-Metabase
IIS 6 WMI Compatibility
IIS-WMICompatibility IIS 6
Scripting Tools IIS-LegacyScripts
As of recently there is a express edition of the IIS 7. It is bundled with this crazy new tool Web Matrix (http://www.asp.net/webmatrix).
A real IIS instead of the development server in Visual Studio would have many advantages.
Does anybody know, if this IIS edition can be separately downloaded ?
Can it be installed on Windows XP (Professional) ? If yes, are there conflicts with the old IIS 5.1 on XP ?
Can it be integrated in Visual Studio (2008, 2010)?
It will be released for download separately to the WebMatrix but as of yet it is only available as part of the WebMatrix bundle
It can be used on XP SP3, it will not conflict with 5.1 as it runs as a self contained instance
Yes, it can be integrated with VS2010 (you can tell VS to use IIS7 Express rather than Cassini)
Some useful links -
ScottGu addresses your first question and part of the integration work
The IIS7 Express FAQ where your supported platform questions are answered (along with a whole lot more)
I've been bashing my head against this one for a few days, and haven't had any luck with it. I'm unable to get my VS2010 ASP.NET project to deploy to IIS. I receive the error
"Unable to create the virtual directory. To access local IIS Web sites, you must install the following IIS Components
IIS 6 Metabase and IIS 6 Configuration Compatibility
ASP.NET
In addition, you must run Visual Studio in the context of an Administrator Account"
I've most certainly installed the metabase option, but it still shows up. I'm also not sure why it's telling me to install ASP.NET.
Google is being entirely unhelpful, I was wondering if anyone here has any suggestions. I'm running Vista Ultimate 64Bit
You've started VS2010 with 'run as Administrator', otherwise you might not have enough rights to do such a thing.
Also, the virtual dir doesn't already exist within the default IIS website?
This article describes "Using Visual Studio 2008 with IIS 7" but the principles likely apply to VS2010 and Vista also. [http://www.iis.net/learn/develop/using-visual-studio-with-iis/using-visual-studio-2008-with-iis][1]
I am using both VS2005 & VS2010 to develop websites that use a deployment project, which creates a setup.exe and project.msi files. I wanted to know why IIS 6 Metabase compatibility is required, but still do not really understand it. If absent, the installer quits very early with a message that the installation was 'not installed correctly', nothing more. It seems like a kludge between existing MS development tools and IIS 7.
I just got application written in ASP.NET and VB, can i deploy it on any IIS?
Are there any files in project with that kind of information?
There are no files or magic numbers anywhere that can tell you this. Chances are preety good that it will run on a newer versions of IIS but even then your goign to need to know what functionality it requires. For example is it using WebDav? IIS is preety good at being backwards compatible but forward compability not so good. For example IIS7 introduced new functionality which if the application is using it, would prevent it from running on IIS6.
Do you know what version of .net it requires that is more likely to bite you then anything else?
Any IIS that supports ISAPI, I guess, but IIS 5.1 + is recommended (.NET probably won't run on OS that run IIS4 anyway).
Here is a good MSDN link detailing which IIS version comes with which version of Windows as well as useful links for configuring it.
ASP.NET and IIS Configuration
IIS 6 is the minimum for recent .NET versions (i.e. Windows 2003) because Win2000 is not supported (considering server only here).
The Windows version will tell you the IIS version:
Server 2003: IIS 6
Server 2008: IIS 7
Server 2008 R2: IIS 7.5
Also XP: IIS5.1; Vista: IIS7