<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" version="2.0">
  <channel>
    <title>Joe Kaplan - WiX</title>
    <link>http://www.joekaplan.net/</link>
    <description>.NET. LDAP. Geekery.</description>
    <language>en-us</language>
    <copyright>Joseph E. Kaplan</copyright>
    <lastBuildDate>Sat, 16 Sep 2006 23:37:35 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 1.9.6264.0</generator>
    <managingEditor>blog@joekaplan.net</managingEditor>
    <webMaster>blog@joekaplan.net</webMaster>
    <item>
      <trackback:ping>http://www.joekaplan.net/Trackback.aspx?guid=3d47e427-2407-49e0-83ea-a7dbec8bb8fa</trackback:ping>
      <pingback:server>http://www.joekaplan.net/pingback.aspx</pingback:server>
      <pingback:target>http://www.joekaplan.net/PermaLink,guid,3d47e427-2407-49e0-83ea-a7dbec8bb8fa.aspx</pingback:target>
      <dc:creator>Joe Kaplan</dc:creator>
      <wfw:comment>http://www.joekaplan.net/CommentView,guid,3d47e427-2407-49e0-83ea-a7dbec8bb8fa.aspx</wfw:comment>
      <wfw:commentRss>http://www.joekaplan.net/SyndicationService.asmx/GetEntryCommentsRss?guid=3d47e427-2407-49e0-83ea-a7dbec8bb8fa</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
So, it would appear the one of the pillars of the <a href="http://wix.sourceforge.net/">WiX</a> community, <a href="http://installing.blogspot.com/">Derek
Cicerone</a>, is <a href="http://installing.blogspot.com/2006/09/retiring-from-wix-community.html">retiring
from WiX</a> and <a href="http://blogs.msdn.com/robmen/archive/2006/09/15/757306.aspx">moving
on from MS at the same time</a>.  I want to personally, publicly thank Derek
for his enormous contributions to this effort.  WiX is typical of most open source
projects that have success, in that there is a strong leader and a few key contributors
that keep it going.  WiX has a thriving user community, but very few actually
contribute to the code base and other key deliverables like documentation (me included).
</p>
        <p>
When one of the pillars of an open source project steps down, it is always leaves
a vacuum that is difficult to fill.  I'm sure things will continue to move forward,
but it is always a little scary to image how things will be without that person. 
Hopefully someone will step up.  It won't be me, so I'm lame.  :)
</p>
        <p>
I've had a few personal email interactions with Derek and have always found him to
be a good guy and have admired his leadership and style.  Good luck with your
next endeavor.
</p>
        <p>
So, why is an LDAP/Identity guy like me interested in an open source project that
facilitates authoring MSI files for software deployment?  Is that a little out
of your realm.  Well, as a matter of fact, deployment is something I'm really
interested in and had to dig into pretty deeply for one of my projects at work.
</p>
        <p>
My story involves the web single signon project that I was brought in to save 2 years
ago when I took on my current role in my company.  It all boils down to having
a package of vendor software that needed to be installed on IIS web servers to provide
our own customized version of the vendor's software.  The software is a bit tricky,
in that there is an ISAPI filter and a web service extension (IIS6 only!), a bunch
of login UI pages, some home grown config tools and a Windows service that integrates
with the web service extension.  It needs to support install, uninstall, upgrades
and migration of settings from one version to another from a custom Apache-style config
file.  It is non-trivial.  :)
</p>
        <p>
During this time, I learned many important lessons about setup, most recently how
important it is to use ALLUSERS=1 if you want per-machine installs (per-user installs,
the default, results in chaos for server components when multiple admins perform tasks
on the boxes!).  
</p>
        <p>
I'm also the proud owner of a little component our company uses fairly extensively
that is basically an HTTP Module that gets installed in the GAC, registers with VS.NET
for "add reference" integration and installs an event log and source.  This thing
was whipped up with VS, but I'm converting it to WiX sometime soon so I can get away
from the dreaded installer classes (a topic for a different thread at a different
time).
</p>
        <p>
So, my angle on setup is really focused on deploying to the enterprise, not commercial
software, and doing server side stuff, often with a bunch of .NET stuff, IIS integration
and Windows instrumentation features.  At our company (and maybe yours too),
we struggle to successfully deploy web apps, especially the complex ones, and have
a mandate to make this easier for the admin.  As such,  I think this arc
has a future in my career (although we've got a long way to go before this stuff gets
institutionalized).  
</p>
        <p>
Anyway, in other news on WiX, <a href="http://weblogs.asp.net/nunitaddin">Jamie Cansdale</a> (of <a href="http://www.testdriven.net/">TestDriven.NET</a> fame,
a fellow WiX user for his own product and a hell of a nice guy that I had lunch with
at the last MVP summit on our way out of town) <a href="http://weblogs.asp.net/nunitaddin/archive/2006/09/16/WiX-v3-in-Visual-Studio_2100_.aspx">reports</a> that
WiX v3 may be adopted as the native deployment technology to be integrated into the
next VS.NET release.  It looks like the VS team may finally drop their proprietary
authoring thingy in favor of something more powerful and integratable (sic) into
an automated build process.  
</p>
        <p>
Good call guys.  I hope it works out.
</p>
        <p>
          <em>(Update, ~2 hours later)</em>
        </p>
        <p>
In going back and rereading Rob's original post, I think he was talking about the
VS team's decision to build the VS installer itself with WiX, not an indicator the
vdproj files will be WiX-based anytime soon.  Rats.  This is still a good
thing, as strong internal commit to use WiX tends to assure some sort of a future
(VS.NET, Office, SQL, etc.), but this would have been cool.
</p>
        <p>
Maybe I've got this wrong and they'll shock us?  I think it makes a whole lot
of sense, although this is a pretty difficult thing to convert from and a big jump
for a lot of people.
</p>
        <img width="0" height="0" src="http://www.joekaplan.net/aggbug.ashx?id=3d47e427-2407-49e0-83ea-a7dbec8bb8fa" />
      </body>
      <title>WiX is on the move</title>
      <guid isPermaLink="false">http://www.joekaplan.net/PermaLink,guid,3d47e427-2407-49e0-83ea-a7dbec8bb8fa.aspx</guid>
      <link>http://www.joekaplan.net/WiXIsOnTheMove.aspx</link>
      <pubDate>Sat, 16 Sep 2006 23:37:35 GMT</pubDate>
      <description>&lt;p&gt;
So, it would appear the one of the pillars of the &lt;a href="http://wix.sourceforge.net/"&gt;WiX&lt;/a&gt; community, &lt;a href="http://installing.blogspot.com/"&gt;Derek
Cicerone&lt;/a&gt;, is &lt;a href="http://installing.blogspot.com/2006/09/retiring-from-wix-community.html"&gt;retiring
from WiX&lt;/a&gt; and &lt;a href="http://blogs.msdn.com/robmen/archive/2006/09/15/757306.aspx"&gt;moving
on from MS at the same time&lt;/a&gt;.&amp;nbsp; I want to personally, publicly thank Derek
for his enormous contributions to this effort.&amp;nbsp; WiX is typical of most open source
projects that have success, in that there is a strong leader and a few key contributors
that keep it going.&amp;nbsp; WiX has a thriving user community, but very few actually
contribute to the code base and other key deliverables like documentation (me included).
&lt;/p&gt;
&lt;p&gt;
When one of the pillars of an open source project steps down, it is always leaves
a vacuum that is difficult to fill.&amp;nbsp; I'm sure things will continue to move forward,
but it is always a little scary to image how things will be without that person.&amp;nbsp;
Hopefully someone will step up.&amp;nbsp; It won't be me, so I'm lame.&amp;nbsp; :)
&lt;/p&gt;
&lt;p&gt;
I've had a few personal email interactions with Derek and have always found him to
be a good guy and have admired his leadership and style.&amp;nbsp; Good luck with your
next endeavor.
&lt;/p&gt;
&lt;p&gt;
So, why is an LDAP/Identity guy like me interested in an open source project that
facilitates authoring MSI files for software deployment?&amp;nbsp; Is that a little out
of your realm.&amp;nbsp; Well, as a matter of fact, deployment is something I'm really
interested in and had to dig into pretty deeply for one of my projects at work.
&lt;/p&gt;
&lt;p&gt;
My story involves the web single signon project that I was brought in to save 2 years
ago when I took on my current role in my company.&amp;nbsp; It all boils down to having
a package of vendor software that needed to be installed on IIS web servers to provide
our own customized version of the vendor's software.&amp;nbsp; The software is a bit tricky,
in that there is an ISAPI filter and a web service extension (IIS6 only!), a bunch
of login UI pages, some home grown config tools and a Windows service that integrates
with the web service extension.&amp;nbsp; It needs to support install, uninstall, upgrades
and migration of settings from one version to another from a custom Apache-style config
file.&amp;nbsp; It is non-trivial.&amp;nbsp; :)
&lt;/p&gt;
&lt;p&gt;
During this time, I learned many important lessons about setup, most recently how
important it is to use ALLUSERS=1 if you want per-machine installs (per-user installs,
the default, results in chaos for server components when multiple admins perform tasks
on the boxes!).&amp;nbsp; 
&lt;/p&gt;
&lt;p&gt;
I'm also the proud owner of a little component our company uses fairly extensively
that is basically an HTTP Module that gets installed in the GAC, registers with VS.NET
for "add reference" integration and installs an event log and source.&amp;nbsp; This thing
was whipped up with VS, but I'm converting it to WiX sometime soon so I can get away
from the dreaded installer classes (a topic for a different thread at a different
time).
&lt;/p&gt;
&lt;p&gt;
So, my angle on setup is really focused on deploying to the enterprise, not commercial
software, and doing server side stuff, often with a bunch of .NET stuff, IIS integration
and Windows instrumentation features.&amp;nbsp; At our company (and maybe yours too),
we struggle to successfully deploy web apps, especially the complex ones, and have
a mandate to make this easier for the admin.&amp;nbsp; As such,&amp;nbsp; I think this arc
has a future in my career (although we've got a long way to go before this stuff gets
institutionalized).&amp;nbsp; 
&lt;/p&gt;
&lt;p&gt;
Anyway, in other news on WiX, &lt;a href="http://weblogs.asp.net/nunitaddin"&gt;Jamie Cansdale&lt;/a&gt; (of &lt;a href="http://www.testdriven.net/"&gt;TestDriven.NET&lt;/a&gt; fame,
a fellow WiX user for his own product and a hell of a nice guy that I had lunch with
at the last MVP summit on our way out of town) &lt;a href="http://weblogs.asp.net/nunitaddin/archive/2006/09/16/WiX-v3-in-Visual-Studio_2100_.aspx"&gt;reports&lt;/a&gt; that
WiX v3 may be adopted as the native deployment technology to be integrated into the
next VS.NET release.&amp;nbsp; It looks like the VS team may finally drop their proprietary
authoring thingy in favor of something more powerful and integratable (sic)&amp;nbsp;into
an automated build process.&amp;nbsp; 
&lt;/p&gt;
&lt;p&gt;
Good call guys.&amp;nbsp; I hope it works out.
&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;(Update, ~2 hours later)&lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
In going back and rereading Rob's original post, I think he was talking about the
VS team's decision to build the VS installer itself with WiX, not an indicator the
vdproj files will be WiX-based anytime soon.&amp;nbsp; Rats.&amp;nbsp; This is still a good
thing, as strong internal commit to use WiX tends to assure some sort of a future
(VS.NET, Office, SQL, etc.), but this would have been cool.
&lt;/p&gt;
&lt;p&gt;
Maybe I've got this wrong and they'll shock us?&amp;nbsp; I think it makes a whole lot
of sense, although this is a pretty difficult thing to convert from and a big jump
for a lot of people.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.joekaplan.net/aggbug.ashx?id=3d47e427-2407-49e0-83ea-a7dbec8bb8fa" /&gt;</description>
      <comments>http://www.joekaplan.net/CommentView,guid,3d47e427-2407-49e0-83ea-a7dbec8bb8fa.aspx</comments>
      <category>Software Engineering;WiX</category>
    </item>
    <item>
      <trackback:ping>http://www.joekaplan.net/Trackback.aspx?guid=49b93ec2-969d-4017-9d99-e382708ac5b9</trackback:ping>
      <pingback:server>http://www.joekaplan.net/pingback.aspx</pingback:server>
      <pingback:target>http://www.joekaplan.net/PermaLink,guid,49b93ec2-969d-4017-9d99-e382708ac5b9.aspx</pingback:target>
      <dc:creator>Joe Kaplan</dc:creator>
      <wfw:comment>http://www.joekaplan.net/CommentView,guid,49b93ec2-969d-4017-9d99-e382708ac5b9.aspx</wfw:comment>
      <wfw:commentRss>http://www.joekaplan.net/SyndicationService.asmx/GetEntryCommentsRss?guid=49b93ec2-969d-4017-9d99-e382708ac5b9</wfw:commentRss>
      <slash:comments>3</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <font size="4">The Problem</font>
        </p>
        <p>
So, let's say you are building a claims-based application for Active Directory Federation
Services (ADFS) and you want to use VS.NET 2005 to do this.  Alternately,
let's say you are customizing some of the built in pages that come with the federation
server or federation server proxy and want to use VS.NET for that.
</p>
        <p>
As things stand today, there is a minor annoying friction point here as the ADFS installer
doesn't provide a nice clean way to set a reference to the code you need in System.Web.Security.SingleSignOn
and such.  Even if you are developing on a 2003 box (which a lot of serious web
devs do, although I still stumble along with XP as its the company standard) and actually
install ADFS, you don't see these assemblies in the .NET tab on the add reference
UI.  The problem is that the ADFS installer puts the assemblies directly in the
GAC and doesn't leave a copy on the "normal" file system (which the compilers actually
need), nor does it bother to create a registry key under: 
</p>
        <p>
          <font face="Courier New">HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v2.0.50727\AssemblyFoldersEx</font>
        </p>
        <p>
(which is the little bit of magic that gets your assembly in the .NET tab). 
Multiply this by a large team working on a claims app, and this can be a drag.
</p>
        <p>
          <font size="4">The Solution</font>
        </p>
        <p>
So, what's a dev to do?  Well, you can definitely copy the assemblies yourself,
GAC them and create a registry key and probably do all that with a little batch file
if you are so inclined.  Or, you can go over the top and create your own MSI
installer package that does this for you.
</p>
        <p>
As a little experiment to see if I could do this quickly and learn how to do some
new stuff in MSI that  thought I'd need later on, I did the latter.  It
took about an hour over lunch one day.
</p>
        <p>
I'd love to just distribute the msi package directly, but I won't consider doing that
unless MS gives me permission to do so (which I don't expect to get).  So, that
won't happen.  However, I will tell you how to build your own (fairly) painlessly. 
For this, you will need:
</p>
        <p>
          <font size="4">Ingredients</font>
        </p>
        <ul>
          <li>
One copy of <a href="http://wix.sourceforge.net/">Windows Installer XML (WiX) 2.0</a> (3.0
might work as well, but I didn't bother trying) 
</li>
          <li>
One copy of the ADFS.msi package that comes with R2 (dig around on the install media
for it), or alternately, the 3 assemblies that come with ADFS that are installed the
GAC that you hoisted from a normal install 
</li>
          <li>
One copy of my sample WiX file that will create the MSI (see link at bottom)</li>
        </ul>
        <p>
          <font size="4">Recipe</font>
        </p>
        <ol>
          <li>
Place the vsadfs.wxs file in a new clean directory on your file system 
</li>
          <li>
Use dark.exe from the WiX distro to reverse engineer ADFS.msi in order to get its
files into a handy .cab format, ignoring the error from Dark (<font face="Courier New">&lt;wixpath&gt;\dark
-x bin -out adfs.wxs adfs.msi</font>) 
</li>
          <li>
Grab the three assembly files (S.Web.Security.SSO *) from the cab file and stick them
in a directory called "files" underneath the directory where you put my vsadfs.wxs
file 
</li>
          <li>
Run these two commands from the command prompt, filling in the path to your WiX binary
install where appropriate (unless you have that on your path, obviously): 
<ol><li><font face="Courier New">&lt;wixpath&gt;\candle vsadfs.wxs</font></li><li><font face="Courier New">&lt;wixpath&gt;\light -out vsadfs.msi vsadfs.wixobj &lt;wixpath&gt;\wixui.wixlib
-loc &lt;wixpath&gt;\WixUI_en-us.wxl</font></li></ol></li>
        </ol>
        <p>
You now have a working msi installer that will install (and uninstall and repair!) these
things for you.  You may notice that the UI thing I used, WiXUI, shows a license
screen and shows the CPL license there.  That's because we didn't supply a license.rtf
file in our directory, so WiXUI picked up the one that comes with WiX in its directory. 
Feel free to change it.  If you want to eliminate that dialog completely, you
are on your own.
</p>
        <p>
          <font size="4">Caveats</font>
        </p>
        <ul>
          <li>
            <strong>This will NOT give you a working version of an ADFS-enabled web server! 
You cannot use this to actually generate a SingleSignOnIdentity object to be used
for testing.</strong>  You would need some sort of a mock object thingy to do
that for you (may that's next?).  All it really does is let set a reference in
VS.NET and compile the code, but that's better than what you had before. 
</li>
          <li>
Additionally, my current installer uses different component GUIDs for the version
of the files that go in the GAC.  I'm not sure if it would be the right thing
to reuse the component GUIDs from the real ADFS install which puts these components
in the GAC or not.  The only time this might be an issue was if you ran this
installer on a box that already has ADFS installed.  I'm not sure what would
happen, but right now it seems better to keep them separate.  
</li>
          <li>
The installer allows specify the install location if you want to change it and
breaks the VS.NET and GAC install stuff into separate features so that you don't have
to install both if you don't want.  This can be customized via the feature tree
dialog. 
</li>
          <li>
The installer does not bother to check if you have VS.NET 2005 or even .NET 2.0 installed. 
This would be a good sanity check for mass market usage, but I'm hoping the users
of this are not too insane.  
</li>
          <li>
The installer defaults to a "per-machine" install instead of per-user. 
</li>
          <li>
Repackaging Microsoft's installer is probably a violation of something and may void
your warranty or get you in some sort of trouble that I had not fully considered when
offering this suggestion.</li>
        </ul>
        <p>
          <font size="4">The Future</font>
        </p>
        <p>
I'm hoping that future versions of ADFS will have this scenario already considered
so that things like this won't be necessary.  Perhaps we can convince the team
to ship this as part of the product or as a free download/sample solution?  I
wouldn't be surprised to see these assemblies in a future version of the .NET Framework
as well, which would mean that we'd get this for free another way.  Until then...
</p>
        <p>
(Updated 2 Aug 2006 changed to zip file)
</p>
        <a href="http://www.joekaplan.net/content/binary/vsadfs.zip">vsadfs.zip (1.54 KB)</a>
        <img width="0" height="0" src="http://www.joekaplan.net/aggbug.ashx?id=49b93ec2-969d-4017-9d99-e382708ac5b9" />
      </body>
      <title>How to Get VS.NET Integration for ADFS Claims-Based Apps</title>
      <guid isPermaLink="false">http://www.joekaplan.net/PermaLink,guid,49b93ec2-969d-4017-9d99-e382708ac5b9.aspx</guid>
      <link>http://www.joekaplan.net/HowToGetVSNETIntegrationForADFSClaimsBasedApps.aspx</link>
      <pubDate>Mon, 31 Jul 2006 05:18:01 GMT</pubDate>
      <description>&lt;p&gt;
&lt;font size=4&gt;The Problem&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
So, let's say you are building a claims-based application for Active Directory Federation
Services (ADFS) and you want to use VS.NET 2005&amp;nbsp;to do this.&amp;nbsp; Alternately,
let's say you are customizing some of the built in pages that come with the federation
server or federation server proxy and want to use VS.NET for that.
&lt;/p&gt;
&lt;p&gt;
As things stand today, there is a minor annoying friction point here as the ADFS installer
doesn't provide a nice clean way to set a reference to the code you need in System.Web.Security.SingleSignOn
and such.&amp;nbsp; Even if you are developing on a 2003 box (which a lot of serious web
devs do, although I still stumble along with XP as its the company standard) and actually
install ADFS, you don't see these assemblies in the .NET tab on the add reference
UI.&amp;nbsp; The problem is that the ADFS installer puts the assemblies directly in the
GAC and doesn't leave a copy on the "normal" file system (which the compilers actually
need), nor does it bother to create a&amp;nbsp;registry key under: 
&lt;/p&gt;
&lt;p&gt;
&lt;font face="Courier New"&gt;HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v2.0.50727\AssemblyFoldersEx&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
(which is the little bit of magic that gets your assembly in the .NET tab).&amp;nbsp;
Multiply this by a large team working on a claims app, and this can be a drag.
&lt;/p&gt;
&lt;p&gt;
&lt;font size=4&gt;The Solution&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
So, what's a dev to do?&amp;nbsp; Well, you can definitely copy the assemblies yourself,
GAC them and create a registry key and probably do all that with a little batch file
if you are so inclined.&amp;nbsp; Or, you can go over the top and create your own MSI
installer package that does this for you.
&lt;/p&gt;
&lt;p&gt;
As a little experiment to see if I could do this quickly and learn how to do some
new stuff in MSI that&amp;nbsp; thought I'd need later on, I did the latter.&amp;nbsp; It
took about an hour over lunch one day.
&lt;/p&gt;
&lt;p&gt;
I'd love to just distribute the msi package directly, but I won't consider doing that
unless MS gives me permission to do so (which I don't expect to get).&amp;nbsp; So, that
won't happen.&amp;nbsp; However,&amp;nbsp;I will tell you how to build your own (fairly) painlessly.&amp;nbsp;
For this, you will need:
&lt;/p&gt;
&lt;p&gt;
&lt;font size=4&gt;Ingredients&lt;/font&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
One copy of &lt;a href="http://wix.sourceforge.net/"&gt;Windows Installer XML (WiX)&amp;nbsp;2.0&lt;/a&gt;&amp;nbsp;(3.0
might work as well, but I didn't bother trying) 
&lt;li&gt;
One copy of the ADFS.msi package that comes with R2 (dig around on the install media
for it), or alternately, the 3 assemblies that come with ADFS that are installed the
GAC that you hoisted from a normal install 
&lt;li&gt;
One copy of my sample WiX file that will create the MSI (see link at bottom)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;font size=4&gt;Recipe&lt;/font&gt;
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
Place the vsadfs.wxs file in a new clean directory on your file system 
&lt;li&gt;
Use dark.exe from the WiX distro to reverse engineer ADFS.msi in order to get its
files into a handy .cab format, ignoring the error from&amp;nbsp;Dark&amp;nbsp;(&lt;font face="Courier New"&gt;&amp;lt;wixpath&amp;gt;\dark
-x bin -out adfs.wxs adfs.msi&lt;/font&gt;) 
&lt;li&gt;
Grab the three assembly files (S.Web.Security.SSO *) from the cab file and stick them
in a directory called "files" underneath the directory where you put my vsadfs.wxs
file 
&lt;li&gt;
Run these two commands from the command prompt, filling in the path to your WiX binary
install where appropriate (unless you have that on your path, obviously): 
&lt;ol&gt;
&lt;li&gt;
&lt;font face="Courier New"&gt;&amp;lt;wixpath&amp;gt;\candle vsadfs.wxs&lt;/font&gt; 
&lt;li&gt;
&lt;font face="Courier New"&gt;&amp;lt;wixpath&amp;gt;\light -out vsadfs.msi vsadfs.wixobj &amp;lt;wixpath&amp;gt;\wixui.wixlib
-loc &amp;lt;wixpath&amp;gt;\WixUI_en-us.wxl&lt;/font&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
You now have a working msi installer that will install (and uninstall and repair!)&amp;nbsp;these
things for you.&amp;nbsp; You may notice that the UI thing I used, WiXUI, shows a license
screen and shows the CPL license there.&amp;nbsp; That's because we didn't supply a license.rtf
file in our directory, so WiXUI picked up the one that comes with WiX in its directory.&amp;nbsp;
Feel free to change it.&amp;nbsp; If you want to eliminate that dialog completely, you
are on your own.
&lt;/p&gt;
&lt;p&gt;
&lt;font size=4&gt;Caveats&lt;/font&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;This will NOT give you a working version of an ADFS-enabled web server!&amp;nbsp;
You cannot use this to actually generate a SingleSignOnIdentity object to be used
for testing.&lt;/strong&gt;&amp;nbsp; You would need some sort of a mock object thingy to do
that for you (may that's next?).&amp;nbsp; All it really does is let set a reference in
VS.NET and compile the code, but that's better than what you had before. 
&lt;li&gt;
Additionally, my current installer uses different component GUIDs for the version
of the files that go in the GAC.&amp;nbsp; I'm not sure if it would be the right thing
to reuse the component GUIDs from the real ADFS install which puts these components
in the GAC or not.&amp;nbsp; The only time this might be an issue was if you ran this
installer on a box that already has ADFS installed.&amp;nbsp; I'm not sure what would
happen, but right now it seems better to keep them separate.&amp;nbsp; 
&lt;li&gt;
The installer allows specify the install&amp;nbsp;location if you want to change it and
breaks the VS.NET and GAC install stuff into separate features so that you don't have
to install both if you don't want.&amp;nbsp; This can be customized via the feature tree
dialog. 
&lt;li&gt;
The installer does not bother to check if you have VS.NET 2005 or even .NET 2.0 installed.&amp;nbsp;
This would be a good sanity check for mass market usage, but I'm hoping the users
of this are not too insane.&amp;nbsp; 
&lt;li&gt;
The installer defaults to a "per-machine" install instead of per-user. 
&lt;li&gt;
Repackaging Microsoft's installer is probably a violation of something and may void
your warranty or get you in some sort of trouble that I had not fully considered when
offering this suggestion.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;font size=4&gt;The Future&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
I'm hoping that future versions of ADFS will have this scenario already considered
so that things like this won't be necessary.&amp;nbsp; Perhaps we can convince the team
to ship this as part of the product or as a free download/sample solution?&amp;nbsp; I
wouldn't be surprised to see these assemblies in a future version of the .NET Framework
as well, which would mean that we'd get this for free another way.&amp;nbsp; Until then...
&lt;/p&gt;
&lt;p&gt;
(Updated 2 Aug 2006 changed to zip file)
&lt;/p&gt;
&lt;a href="http://www.joekaplan.net/content/binary/vsadfs.zip"&gt;vsadfs.zip (1.54 KB)&lt;/a&gt;&lt;img width="0" height="0" src="http://www.joekaplan.net/aggbug.ashx?id=49b93ec2-969d-4017-9d99-e382708ac5b9" /&gt;</description>
      <comments>http://www.joekaplan.net/CommentView,guid,49b93ec2-969d-4017-9d99-e382708ac5b9.aspx</comments>
      <category>Identity Federation;WiX</category>
    </item>
    <item>
      <trackback:ping>http://www.joekaplan.net/Trackback.aspx?guid=ac8e564c-1b19-44e7-9ab0-6a4ef74bd614</trackback:ping>
      <pingback:server>http://www.joekaplan.net/pingback.aspx</pingback:server>
      <pingback:target>http://www.joekaplan.net/PermaLink,guid,ac8e564c-1b19-44e7-9ab0-6a4ef74bd614.aspx</pingback:target>
      <dc:creator>Joe Kaplan</dc:creator>
      <wfw:comment>http://www.joekaplan.net/CommentView,guid,ac8e564c-1b19-44e7-9ab0-6a4ef74bd614.aspx</wfw:comment>
      <wfw:commentRss>http://www.joekaplan.net/SyndicationService.asmx/GetEntryCommentsRss?guid=ac8e564c-1b19-44e7-9ab0-6a4ef74bd614</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I've been telling myself I was going to finally get into the blogging racket for almost
2 years now, but even though I've had the hosting all put together for that entire
time, it took me forever to actually get it together.  I just had to do it myself
instead of using another site...
</p>
        <p>
Anyway, this blog will probably resemble the blogs I already read, in that it will
be mostly technical with a focus on building software using Microsoft's .NET platform. 
It will probably lean heavily on my specialties, .NET LDAP programming and application
security, but will likely also feature other stuff I'm into like application architecture,
agile development, identity federation, cryptography, and setup development in MSI
using <a href="http://wix.sourceforge.net">WiX</a>.  
</p>
        <p>
Speaking of .NET and LDAP, if you've ever heard of me before, it is most likely because
you might have stumbled across one of the myriad usenet posts I've made over the last
4-5 years on the Microsoft newsgroups, or perhaps I answered your question directly. 
Micrsosoft has actually designated me an <a href="http://mvp.support.microsoft.com">MVP</a> in
this area, and I've even written a <a href="http://www.directoryprogramming.net">book</a> about
this with my intrepid co-author, <a href="http://www.dunnry.com/blog">Ryan Dunn</a>,
to further our aim of providing resources for the .NET community in this obscure,
but stranglely difficult and increasingly important aspect of software development.
</p>
        <p>
That's all for now.  Maybe some real content next time, eh?
</p>
        <img width="0" height="0" src="http://www.joekaplan.net/aggbug.ashx?id=ac8e564c-1b19-44e7-9ab0-6a4ef74bd614" />
      </body>
      <title>About time...</title>
      <guid isPermaLink="false">http://www.joekaplan.net/PermaLink,guid,ac8e564c-1b19-44e7-9ab0-6a4ef74bd614.aspx</guid>
      <link>http://www.joekaplan.net/AboutTime.aspx</link>
      <pubDate>Sun, 30 Jul 2006 15:25:14 GMT</pubDate>
      <description>&lt;p&gt;
I've been telling myself I was going to finally get into the blogging racket for almost
2 years now, but even though I've had the hosting all put together for that entire
time, it took me forever to actually get it together.&amp;nbsp; I just had to do it myself
instead of using another site...
&lt;/p&gt;
&lt;p&gt;
Anyway, this blog will probably resemble the blogs I already read, in that it will
be mostly technical with a focus on building software using Microsoft's .NET platform.&amp;nbsp;
It will probably lean heavily on my specialties, .NET LDAP programming and&amp;nbsp;application
security, but will likely also feature other stuff I'm into like application architecture,
agile development, identity federation, cryptography, and setup development in MSI
using &lt;a href="http://wix.sourceforge.net"&gt;WiX&lt;/a&gt;.&amp;nbsp; 
&lt;/p&gt;
&lt;p&gt;
Speaking of .NET and LDAP, if you've ever heard of me before, it is most likely because
you might have stumbled across one of the myriad usenet posts I've made over the last
4-5 years on the Microsoft newsgroups, or perhaps I answered your question directly.&amp;nbsp;
Micrsosoft has actually designated me an &lt;a href="http://mvp.support.microsoft.com"&gt;MVP&lt;/a&gt; in
this area, and I've even written a &lt;a href="http://www.directoryprogramming.net"&gt;book&lt;/a&gt; about
this with my intrepid co-author, &lt;a href="http://www.dunnry.com/blog"&gt;Ryan Dunn&lt;/a&gt;,
to further our aim of providing resources for the .NET community in this obscure,
but stranglely difficult and increasingly important aspect of software development.
&lt;/p&gt;
&lt;p&gt;
That's all for now.&amp;nbsp; Maybe some real content next time, eh?
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.joekaplan.net/aggbug.ashx?id=ac8e564c-1b19-44e7-9ab0-6a4ef74bd614" /&gt;</description>
      <comments>http://www.joekaplan.net/CommentView,guid,ac8e564c-1b19-44e7-9ab0-6a4ef74bd614.aspx</comments>
      <category>General;LDAP;Windows Security;WiX;Identity Federation;Cryptography;Agile;Application Architecture;Software Engineering</category>
    </item>
  </channel>
</rss>