Hi, just want to follow up on my own post.

Parts of the problem can now be handled. I'm still interesting in learning how 
to resolve the
remaining parts.

Okay, so here's what I've learned (all relevant for WiX 3.0 at least up to 
3.0.4401.0):

* IIS comes with a default web site. Installing IIS is currently a manual 
process - my WiX source
is not handling this for me yet.

* WiX's IIS extension works with IIS6. To work with IIS7 (available in e.g. 
Vista) you'll need to
ensure that IIS6 management (backward compatibility) is selected when IIS7 is 
installed.

* In my install I'm not interested in creating a new web site or overwrite the 
default web site
(potentially removing it during uninstall).

* The WiX <iis:WebSite> element clearly states that if it is placed under a 
Component element it
will create a new website. If it is placed under Product or Fragment elements 
the WebSite element
acts as a locator. So this is what I am after.

<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi";
     xmlns:iis="http://schemas.microsoft.com/wix/IIsExtension"; ...>

  <Fragment>
    <iis:WebSite Id="DefaultWebSite" Description="Default Web Site">
      <iis:WebAddress Id="AllUnassigned" Port="80"/>
    </iis:WebSite>
  </Fragment>
</Wix>

* As the <iis:WebSite> element is outside of any features, it will always be 
executed - not
necessarily nice if you only want this to happen for particular feature. If IIS 
is not installed
this will fail. There is a described workaround for this involving disabling a 
WiX built-in custom
action named 'ConfigureIIs' - as described by Bartek Szafko at
http://bartekszafko.pl/index.php/blog/2008/01/15/p270 (thanks Bartek!)

So you can use for example:

    <InstallExecuteSequence>
      <!-- Specify that configuration/setup of IIS (i.e. the built-in 
ConfigureIIs action) only
           should be executed if the Id='ComponentId' component is about to be 
installed.

           The '$ComponentId>2' is the condition for when to run the 
ConfigureIIs action.
           See Conditional Statement Syntax for detailed syntax description at:
           http://msdn.microsoft.com/en-us/library/aa368012(VS.85).aspx

           Detailed Notes (of how to understand the condition):
             * $<component-id> means that we want the Action State of the 
<component-id>.
             * >2 means that the components' action state must be greather than
INSTALLSTATE_ABSENT (2), which
               covers values such as INSTALLSTATE_LOCAL (3) and 
INSTALLSTATE_SOURCE (4)
      -->
      <Custom Action="ConfigureIIs" After="InstallFiles">$ComponentId>2</Custom>
    </InstallExecuteSequence>

* My component, which installs the virtual directory (in the Default Web Site) 
is then something
as illustrated as:

  <Component Id="WebService" Guid="{GUID}">
    <!-- Setup a virtual directory alias 'Web Service' to the WebServiceFolder 
directory.
         Note that the Alias is including the path to the WebDir, so that the 
virtual directory is
created there.
    -->
    <iis:WebVirtualDir Id="WebServicesAlias" WebSite="DefaultWebSite" 
Alias="SubDir1/SubDir2/Web
Service" Directory="WebServiceFolder" >
      <iis:WebApplication Id="ServiceWebApp" Name="SubDir1/SubDir2/Web 
Service"/>
      <iis:WebDirProperties Id="WebServicesFolderProps" AnonymousAccess="yes"/>
    </iis:WebVirtualDir>
  </Component>


* So far so good. There is however a slight problem when running on Vista SP1 
(using ISS7). Using
Wix IIS extensions currently fails on Vista SP1, see
http://sourceforge.net/mailarchive/forum.php?thread_name=b5927a150805300828h43b2581bqa92119d57c4a2620%40mail.gmail.com&forum_name=wix-users
and
Wix Bug Report:
http://sourceforge.net/tracker/index.php?func=detail&aid=1982561&group_id=105970&atid=642714

The only known workaround is to run 'msiexec /i <msifile>' in an administrative 
command prompt.

Regards,
/Michael


-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users

Reply via email to