Hi, I need to understand how create conditional setup of my web
application.
I have conditions, that specify in UI:
(1) Use a Virtual Directory or Separate Web Site
(2) Use Windows Integrated Security or Default
(3) ip, port, alias, ... it's not so important
If user select Windows Integrated Security installer must add special
settings for folder Shared/handlers, it in all cases mast be with
AnonymousAccess
This installation should work on all x86 machines( IIS 5.1, IIS 6, IIS
7 ).
Unfortunately IIsSchema is not so flexible(Ex.
WebVirtualDir.DirProperties couldn't be a property) I'm write like
this:
<Fragment>
<!-- parent web site definition PARENTSITE_VALUE - specify in UI --
<iis:WebSite Id='ParentWebSite' Description='parent site for asc'
SiteId='[PARENTSITE_VALUE]' >
<iis:WebAddress Id='DefaultWebAddress' Port='80'/>
</iis:WebSite>
<!--default security properties-->
<iis:WebDirProperties Id='IIS.DefaultWebDirProperties'
DefaultDocuments="Default.aspx"
WindowsAuthentication="no"
AnonymousAccess="yes"/>
<!--integrated security properties-->
<iis:WebDirProperties Id='IIS.WinIntegratedWebDirProperties'
DefaultDocuments="Default.aspx"
WindowsAuthentication="yes"
AnonymousAccess="no"/>
<!-- separated apppool for application -->
<Component Id="IISCOMP.WebAppPool" Guid="....."
Directory="WEBAPPFOLDER">
<CreateFolder />
<iis:WebAppPool Id="IIS.AppPool" Identity="networkService"
Name="AscWebAppPool" />
</Component>
<!--web application definition -->
<iis:WebApplication Id="IIS.ASCWebApp" Name="AscServicesApp"
Isolation="high" WebAppPool="IIS.AppPool">
</iis:WebApplication>
<!--setup as virtual directory with windows integrated security-->
<DirectoryRef Id="WEBAPPFOLDER">
<Component Id="IISCOMP.WinIntegratedSecurityVirtualDirectory"
Guid="B63E9313-0794-482C-A9D5-576C8D9FDD65">
<CreateFolder />
<iis:WebVirtualDir
Id="IIS.WinIntegratedSecurityVirtualDirectory"
WebSite="ParentWebSite"
Directory="WEBAPPFOLDER"
Alias="[WEBAPPALIAS]"
DirProperties='IIS.WinIntegratedWebDirProperties'
WebApplication='IIS.ASCWebApp'>
</iis:WebVirtualDir>
<iis:WebDir Id='IIS.UnsecureWebDirOfVirtualDir'
Path='[WEBAPPALIAS]/Shared/handlers' WebSite='ParentWebSite'
DirProperties='IIS.DefaultWebDirProperties' />
<Condition ><![CDATA[IISSETUPTYPE="VirtualDirectory" AND
IISWITHINTEGRATEDSECURITY="1"]]> </Condition>
</Component>
</DirectoryRef>
<!--setup as virtual directory with default security-->
<DirectoryRef Id="WEBAPPFOLDER">
<Component Id="IISCOMP.DefaultSecurityVirtualDirectory"
Guid="F28DE4CF-9727-4F82-8289-7EC7354C6415">
<CreateFolder />
<iis:WebVirtualDir
Id="IIS.DefaultSecurityVirtualDirectory"
WebSite="ParentWebSite"
Directory="WEBAPPFOLDER"
Alias="[WEBAPPALIAS]"
DirProperties='IIS.DefaultWebDirProperties'
WebApplication='IIS.ASCWebApp'
>
</iis:WebVirtualDir>
<Condition ><![CDATA[IISSETUPTYPE="VirtualDirectory" AND
IISWITHINTEGRATEDSECURITY<>"1"]]> </Condition>
</Component>
</DirectoryRef>
<!--setup as separated web site with windows integrated security--
<DirectoryRef Id="WEBAPPFOLDER">
<Component Id="IISCOMP.WinIntegratedSecurityWebSite"
Guid="77B6CDB4-ED9B-4264-8893-7A5B6EDD835C">
<CreateFolder />
<iis:WebSite
Id="IIS.WinIntegratedSecurityWebSite"
SiteId="[WEBSITEID]"
Description="[WEBAPPALIAS]"
Directory="WEBAPPFOLDER"
DirProperties='IIS.WinIntegratedWebDirProperties'
WebApplication='IIS.ASCWebApp'
AutoStart='yes'
>
<iis:WebAddress Id='IIS.WinIntegratedSecurityWebSiteAddress'
IP='[WEBSITEIP]' Port='[WEBSITEPORT]'/>
</iis:WebSite>
<iis:WebDir
Id='IIS.UnsecureWebDirOfWebSite'
Path='Shared/handlers'
WebSite='IIS.WinIntegratedSecurityWebSite'
DirProperties='IIS.DefaultWebDirProperties' />
<Condition ><![CDATA[IISSETUPTYPE="SeparateWebSite" AND
IISWITHINTEGRATEDSECURITY="1"]]> </Condition>
</Component>
</DirectoryRef>
<!--setup as separated web site with default security-->
<DirectoryRef Id="WEBAPPFOLDER">
<Component Id="IISCOMP.DefaultSecurityWebSite" Guid="EA285251-
E811-46B9-928F-3A894ECDC2C3">
<CreateFolder />
<iis:WebSite
Id="IIS.DefaultSecurityWebSite"
SiteId="[WEBSITEID]"
Description="[WEBAPPALIAS]"
Directory="WEBAPPFOLDER"
DirProperties='IIS.DefaultWebDirProperties'
WebApplication='IIS.ASCWebApp'
AutoStart='yes'
>
<iis:WebAddress Id='IIS.DefaultSecurityWebSiteAddress'
IP='[WEBSITEIP]' Port='[WEBSITEPORT]'/>
</iis:WebSite>
<Condition ><![CDATA[IISSETUPTYPE="SeparateWebSite" AND
IISWITHINTEGRATEDSECURITY<>"1"]]> </Condition>
</Component>
</DirectoryRef>
run installer on XP, select install in virtual directory with windows
integrated security
installation log:
...
Component: IISCOMP.WinIntegratedSecurityVirtualDirectory; Installed:
Absent; Request: Local; Action: Local
Component: IISCOMP.DefaultSecurityVirtualDirectory; Installed:
Absent; Request: Local; Action: Null
Component: IISCOMP.WinIntegratedSecurityWebSite; Installed: Absent;
Request: Local; Action: Null
Component: IISCOMP.DefaultSecurityWebSite; Installed: Absent;
Request: Local; Action: Null
...
Action 11:11:56: ConfigureIIsExec.
ConfigureIIsExec: Skipping ScaWebSvcExtRead() because
IIsWebServiceExtension data not present
ConfigureIIsExec: Skipping ScaMimeMapRead() - required table not
present
ConfigureIIsExec: Skipping ScaHttpHeaderRead() - required tables not
present.
ConfigureIIsExec: Skipping ScaWebErrorRead() - required tables not
present.
ConfigureIIsExec: A matching web object in memory was found, but the
web object in memory has no associated base
ConfigureIIsExec: Error 0x80070002: Failed to find Web base
ConfigureIIsExec: Error 0x80070002: Failed to get base of web for
WebDir
ConfigureIIsExec: Error 0x80070002: failed to read IIsWebDir table
Error 26003. Failed to read IIsWebDirs table. (-2147024894 )
Failed because WebDir with Id='IIS.UnsecureWebDirOfWebSite' is
referenced to WebSite='IIS.WinIntegratedSecurityWebSite' that's not
installed
but this WebDir and WebSite is in one component that should not be
installed
IISCOMP.WinIntegratedSecurityWebSite; Installed: Absent; Request:
Local; Action: Null
sorry for my english
sorry for long post