[mapguide-commits] r4609 - in trunk/Installer: . Custom Custom/iis_actions Installers/MapGuide Installers/MapGuide/Lang Libraries/MapGuide Web Extensions

svn_mapguide at osgeo.org svn_mapguide at osgeo.org
Wed Feb 24 10:02:57 EST 2010


Author: jng
Date: 2010-02-24 10:02:55 -0500 (Wed, 24 Feb 2010)
New Revision: 4609

Added:
   trunk/Installer/Custom/iis_actions/
   trunk/Installer/Custom/iis_actions/CustomAction.cpp
   trunk/Installer/Custom/iis_actions/CustomAction.def
   trunk/Installer/Custom/iis_actions/iis_actions.vcproj
   trunk/Installer/Custom/iis_actions/stdafx.cpp
   trunk/Installer/Custom/iis_actions/stdafx.h
   trunk/Installer/Custom/iis_actions/targetver.h
Modified:
   trunk/Installer/Installer.sln
   trunk/Installer/Installers/MapGuide/Lang/MapGuide_en-US.wxl
   trunk/Installer/Installers/MapGuide/Lang/MapGuide_es-ES.wxl
   trunk/Installer/Installers/MapGuide/MapGuide.wixproj
   trunk/Installer/Installers/MapGuide/MapGuide.wxs
   trunk/Installer/Libraries/MapGuide Web Extensions/IIS.wxs
Log:
Fix #361: NAILED IT! The fix was the inclusion of a new C++ custom action that performs the list field population. Based on the sample here (http://www.tramontana.co.hu/wix/lesson10.php) with the use of the IMSAdminBase COM interface to enumerate the available IIS web sites. 

The thing that makes this as easiest as possible is the modification of the iis:WebSite node to have a SiteId of *

This change allows us to choose an IIS web site by name, avoiding the need to handle and process the additional IIS properties such as, IP Address, Port and Host Header, which would've required doing extra work like setting up a custom MSI table to store this information.

Source: http://stackoverflow.com/questions/1346852/in-wix-how-can-i-select-an-iis-website-by-name

Added: trunk/Installer/Custom/iis_actions/CustomAction.cpp
===================================================================
--- trunk/Installer/Custom/iis_actions/CustomAction.cpp	                        (rev 0)
+++ trunk/Installer/Custom/iis_actions/CustomAction.cpp	2010-02-24 15:02:55 UTC (rev 4609)
@@ -0,0 +1,136 @@
+
+#include "stdafx.h"
+
+
+UINT __stdcall PopulateWebSites(MSIHANDLE hInstall)
+{
+	HRESULT hr = S_OK;
+	UINT er = ERROR_SUCCESS;
+	PMSIHANDLE hTable;
+	PMSIHANDLE hColumns;
+
+	METADATA_HANDLE hMeta;
+	METADATA_RECORD mRec;
+	MSIHANDLE hDb = NULL;
+	PMSIHANDLE hView;
+	PMSIHANDLE hRecord;
+	TCHAR currKey[METADATA_MAX_NAME_LEN];
+	WCHAR subKeyName[METADATA_MAX_NAME_LEN];
+	DWORD dwReqBufLen = 0;
+	DWORD dwBufLen = 1024;
+	char szMsg[256];
+	PBYTE pbBuffer = NULL;
+
+	CComPtr<IMSAdminBase> pIMeta;
+
+	hr = WcaInitialize(hInstall, "PopulateWebSites");
+	ExitOnFailure(hr, "Failed to initialize");
+	hr = CoInitialize(NULL);
+	ExitOnFailure(hr, "Could not initialize the COM sub-system");
+	hr = CoCreateInstance(CLSID_MSAdminBase, NULL, CLSCTX_ALL, IID_IMSAdminBase, (void**)&pIMeta);
+	ExitOnFailure(hr, "Could obtain an IMSAdminBase pointer");
+
+	WcaLog(LOGMSG_STANDARD, "Initialized.");
+
+	pbBuffer = new BYTE[dwBufLen];
+	
+	hDb = MsiGetActiveDatabase(hInstall);
+	MsiDatabaseOpenView(hDb, TEXT("SELECT * FROM `ListBox` WHERE Property = `MG_WEBSITE`"), &hView);
+
+	hr = pIMeta->OpenKey(METADATA_MASTER_ROOT_HANDLE, TEXT("/LM"), METADATA_PERMISSION_READ, 20, &hMeta);
+	ExitOnFailure(hr, "Could not open the IIS metabase");
+
+	DWORD indx = 0;
+	DWORD widx = 0;
+	while (SUCCEEDED(hr))
+	{
+		hr = pIMeta->EnumKeys(hMeta, TEXT("/W3SVC"), subKeyName, indx);
+		if (SUCCEEDED(hr))
+		{
+			mRec.dwMDAttributes = METADATA_NO_ATTRIBUTES;
+			mRec.dwMDDataLen = dwBufLen;
+			mRec.dwMDDataType = ALL_METADATA;
+			mRec.dwMDIdentifier = MD_KEY_TYPE;
+			mRec.dwMDUserType = IIS_MD_UT_SERVER;
+			mRec.pbMDData = pbBuffer;
+
+			_stprintf(currKey, TEXT("/W3SVC/%s"), subKeyName);
+
+			HRESULT hr2 = pIMeta->GetData(hMeta, currKey, &mRec, &dwReqBufLen);
+			//It is a web site node, fetch name and bindings
+			if (SUCCEEDED(hr2) && (wcscmp((TCHAR*)mRec.pbMDData, TEXT("IIsWebServer")) == 0))
+			{
+				WcaLog(LOGMSG_STANDARD, "Found website node. Fetching name and bindings");
+
+				//TCHAR szBinding[256];
+				TCHAR szName[256];
+				szName[0] = '\0';
+
+				//Name
+				mRec.dwMDAttributes = METADATA_NO_ATTRIBUTES;
+				mRec.dwMDDataLen = dwBufLen;
+				mRec.dwMDDataType = ALL_METADATA;
+				mRec.dwMDIdentifier = MD_SERVER_COMMENT;
+				mRec.dwMDUserType = IIS_MD_UT_SERVER;
+				mRec.pbMDData = pbBuffer;
+				HRESULT hr3 = pIMeta->GetData(hMeta, currKey, &mRec, &dwReqBufLen);
+				if (SUCCEEDED(hr3))
+				{
+					wcscpy(szName, (TCHAR*)mRec.pbMDData);
+				}
+
+				//Successfully fetched the values, now fill list
+				//if (wcslen(szName) > 0 && wcslen(szBinding) > 0)
+				if (wcslen(szName) > 0)
+				{
+					hr = WcaAddTempRecord(&hTable, &hColumns, TEXT("ListBox"), NULL, 0, 3, TEXT("MG_WEBSITE"), indx, szName);
+					ExitOnFailure(hr, "Could not add website to list");
+					WcaLog(LOGMSG_STANDARD, "Website: %S", szName);
+					
+					widx++;
+				}
+			}
+		}
+		indx++;
+	}
+	er = ERROR_SUCCESS; //We're done here, so make it sucessful, otherwise MSI will treat it as epic fail!
+	goto Final;
+
+LExit:
+	er = SUCCEEDED(hr) ? ERROR_SUCCESS : ERROR_INSTALL_FAILURE;
+
+Final:
+	WcaLog(LOGMSG_STANDARD, "Finalizing");
+	sprintf(szMsg, "Final error code: %d", er);
+	WcaLog(LOGMSG_STANDARD, szMsg);
+	if (pbBuffer)
+	{
+		delete pbBuffer;
+		pbBuffer = NULL;
+	}
+	if (hDb)
+		MsiCloseHandle(hDb);
+	return WcaFinalize(er);
+}
+
+
+// DllMain - Initialize and cleanup WiX custom action utils.
+extern "C" BOOL WINAPI DllMain(
+	__in HINSTANCE hInst,
+	__in ULONG ulReason,
+	__in LPVOID
+	)
+{
+	switch(ulReason)
+	{
+	case DLL_PROCESS_ATTACH:
+		WcaGlobalInitialize(hInst);
+		break;
+
+	case DLL_PROCESS_DETACH:
+		WcaGlobalFinalize();
+		break;
+	}
+
+	return TRUE;
+}

Added: trunk/Installer/Custom/iis_actions/CustomAction.def
===================================================================
--- trunk/Installer/Custom/iis_actions/CustomAction.def	                        (rev 0)
+++ trunk/Installer/Custom/iis_actions/CustomAction.def	2010-02-24 15:02:55 UTC (rev 4609)
@@ -0,0 +1,5 @@
+LIBRARY "iis_actions"
+
+EXPORTS
+
+PopulateWebSites

Added: trunk/Installer/Custom/iis_actions/iis_actions.vcproj
===================================================================
--- trunk/Installer/Custom/iis_actions/iis_actions.vcproj	                        (rev 0)
+++ trunk/Installer/Custom/iis_actions/iis_actions.vcproj	2010-02-24 15:02:55 UTC (rev 4609)
@@ -0,0 +1,233 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="9.00"
+	Name="iis_actions"
+	ProjectGUID="{13697B62-C1CD-47EF-9D9B-39F5B01693BB}"
+	RootNamespace="iis_actions"
+	Keyword="Win32Proj"
+	TargetFrameworkVersion="0"
+	>
+	<Platforms>
+		<Platform
+			Name="Win32"
+		/>
+	</Platforms>
+	<ToolFiles>
+	</ToolFiles>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="bin\$(ConfigurationName)"
+			IntermediateDirectory="obj\$(ConfigurationName)"
+			ConfigurationType="2"
+			CharacterSet="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="$(WIX)sdk\inc"
+				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;CUSTOMACTIONTEST_EXPORTS"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="1"
+				UsePrecompiledHeader="2"
+				WarningLevel="3"
+				DebugInformationFormat="4"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="msi.lib dutil.lib wcautil.lib"
+				LinkIncremental="2"
+				AdditionalLibraryDirectories="$(WIX)sdk\lib"
+				ModuleDefinitionFile="CustomAction.def"
+				GenerateDebugInformation="true"
+				SubSystem="2"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="..\bin"
+			IntermediateDirectory="obj\$(ConfigurationName)"
+			ConfigurationType="2"
+			CharacterSet="1"
+			WholeProgramOptimization="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="2"
+				EnableIntrinsicFunctions="true"
+				AdditionalIncludeDirectories="$(WIX)sdk\inc"
+				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;CUSTOMACTIONTEST_EXPORTS"
+				RuntimeLibrary="0"
+				EnableFunctionLevelLinking="true"
+				UsePrecompiledHeader="2"
+				WarningLevel="3"
+				DebugInformationFormat="3"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="msi.lib dutil.lib wcautil.lib"
+				LinkIncremental="1"
+				AdditionalLibraryDirectories="$(WIX)sdk\lib"
+				ModuleDefinitionFile="CustomAction.def"
+				GenerateDebugInformation="true"
+				SubSystem="2"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+			>
+			<File
+				RelativePath=".\CustomAction.cpp"
+				>
+			</File>
+			<File
+				RelativePath=".\CustomAction.def"
+				>
+			</File>
+			<File
+				RelativePath=".\stdafx.cpp"
+				>
+				<FileConfiguration
+					Name="Debug|Win32"
+					>
+					<Tool
+						Name="VCCLCompilerTool"
+						UsePrecompiledHeader="1"
+					/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Release|Win32"
+					>
+					<Tool
+						Name="VCCLCompilerTool"
+						UsePrecompiledHeader="1"
+					/>
+				</FileConfiguration>
+			</File>
+		</Filter>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl;inc;xsd"
+			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
+			>
+			<File
+				RelativePath=".\stdafx.h"
+				>
+			</File>
+			<File
+				RelativePath=".\targetver.h"
+				>
+			</File>
+		</Filter>
+		<Filter
+			Name="Resource Files"
+			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
+			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
+			>
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>

Added: trunk/Installer/Custom/iis_actions/stdafx.cpp
===================================================================
--- trunk/Installer/Custom/iis_actions/stdafx.cpp	                        (rev 0)
+++ trunk/Installer/Custom/iis_actions/stdafx.cpp	2010-02-24 15:02:55 UTC (rev 4609)
@@ -0,0 +1,8 @@
+// stdafx.cpp : source file that includes just the standard includes
+// iis_actions.pch will be the pre-compiled header
+// stdafx.obj will contain the pre-compiled type information
+
+#include "stdafx.h"
+
+// TODO: reference any additional headers you need in STDAFX.H
+// and not in this file

Added: trunk/Installer/Custom/iis_actions/stdafx.h
===================================================================
--- trunk/Installer/Custom/iis_actions/stdafx.h	                        (rev 0)
+++ trunk/Installer/Custom/iis_actions/stdafx.h	2010-02-24 15:02:55 UTC (rev 4609)
@@ -0,0 +1,26 @@
+// stdafx.h : include file for standard system include files,
+// or project specific include files that are used frequently, but
+// are changed infrequently
+//
+
+#pragma once
+
+#include "targetver.h"
+
+#define WIN32_LEAN_AND_MEAN             // Exclude rarely-used stuff from Windows headers
+// Windows Header Files:
+#include <windows.h>
+#include <tchar.h>
+#include <strsafe.h>
+#include <msiquery.h>
+
+#include "atlBase.h"
+#include <initguid.h>
+#include "iadmw.h"
+#include "iiscnfg.h"
+
+// WiX Header Files:
+#include <wcautil.h>
+
+
+// TODO: reference additional headers your program requires here

Added: trunk/Installer/Custom/iis_actions/targetver.h
===================================================================
--- trunk/Installer/Custom/iis_actions/targetver.h	                        (rev 0)
+++ trunk/Installer/Custom/iis_actions/targetver.h	2010-02-24 15:02:55 UTC (rev 4609)
@@ -0,0 +1,24 @@
+#pragma once
+
+// The following macros define the minimum required platform.  The minimum required platform
+// is the earliest version of Windows, Internet Explorer etc. that has the necessary features to run 
+// your application.  The macros work by enabling all features available on platform versions up to and 
+// including the version specified.
+
+// Modify the following defines if you have to target a platform prior to the ones specified below.
+// Refer to MSDN for the latest info on corresponding values for different platforms.
+#ifndef WINVER                  // Specifies that the minimum required platform is Windows 2000.
+#define WINVER 0x0500           // Change this to the appropriate value to target other versions of Windows.
+#endif
+
+#ifndef _WIN32_WINNT            // Specifies that the minimum required platform is Windows 2000.
+#define _WIN32_WINNT 0x0500     // Change this to the appropriate value to target other versions of Windows.
+#endif
+
+#ifndef _WIN32_IE               // Specifies that the minimum required platform is Internet Explorer 5.0.
+#define _WIN32_IE 0x0500        // Change this to the appropriate value to target other versions of IE.
+#endif
+
+#ifndef _WIN32_MSI              // Specifies that the minimum required MSI version is MSI 3.1
+#define _WIN32_MSI 310          // Change this to the appropriate value to target other versions of MSI.
+#endif

Modified: trunk/Installer/Installer.sln
===================================================================
--- trunk/Installer/Installer.sln	2010-02-23 05:34:10 UTC (rev 4608)
+++ trunk/Installer/Installer.sln	2010-02-24 15:02:55 UTC (rev 4609)
@@ -19,6 +19,8 @@
 EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "apache_actions", "Custom\apache_actions\apache_actions.vcproj", "{03FD713E-15EB-453E-AFDF-21F8DB45C11E}"
 EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iis_actions", "Custom\iis_actions\iis_actions.vcproj", "{13697B62-C1CD-47EF-9D9B-39F5B01693BB}"
+EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
 		Debug|Mixed Platforms = Debug|Mixed Platforms
@@ -79,6 +81,16 @@
 		{03FD713E-15EB-453E-AFDF-21F8DB45C11E}.Release|Win32.ActiveCfg = Release|Win32
 		{03FD713E-15EB-453E-AFDF-21F8DB45C11E}.Release|Win32.Build.0 = Release|Win32
 		{03FD713E-15EB-453E-AFDF-21F8DB45C11E}.Release|x86.ActiveCfg = Release|Win32
+		{13697B62-C1CD-47EF-9D9B-39F5B01693BB}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+		{13697B62-C1CD-47EF-9D9B-39F5B01693BB}.Debug|Mixed Platforms.Build.0 = Debug|Win32
+		{13697B62-C1CD-47EF-9D9B-39F5B01693BB}.Debug|Win32.ActiveCfg = Debug|Win32
+		{13697B62-C1CD-47EF-9D9B-39F5B01693BB}.Debug|Win32.Build.0 = Debug|Win32
+		{13697B62-C1CD-47EF-9D9B-39F5B01693BB}.Debug|x86.ActiveCfg = Debug|Win32
+		{13697B62-C1CD-47EF-9D9B-39F5B01693BB}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+		{13697B62-C1CD-47EF-9D9B-39F5B01693BB}.Release|Mixed Platforms.Build.0 = Release|Win32
+		{13697B62-C1CD-47EF-9D9B-39F5B01693BB}.Release|Win32.ActiveCfg = Release|Win32
+		{13697B62-C1CD-47EF-9D9B-39F5B01693BB}.Release|Win32.Build.0 = Release|Win32
+		{13697B62-C1CD-47EF-9D9B-39F5B01693BB}.Release|x86.ActiveCfg = Release|Win32
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
 		HideSolutionNode = FALSE
@@ -89,5 +101,6 @@
 		{D41D53C4-433E-47B5-B663-E79B5569EE22} = {D2A5CB4A-4494-4083-9FBE-64ED543F8FBD}
 		{01313DB9-2AAF-4791-9B81-69BCE3194531} = {D2A5CB4A-4494-4083-9FBE-64ED543F8FBD}
 		{03FD713E-15EB-453E-AFDF-21F8DB45C11E} = {9AB6202A-055B-49E8-9623-986202F0EAD8}
+		{13697B62-C1CD-47EF-9D9B-39F5B01693BB} = {9AB6202A-055B-49E8-9623-986202F0EAD8}
 	EndGlobalSection
 EndGlobal

Modified: trunk/Installer/Installers/MapGuide/Lang/MapGuide_en-US.wxl
===================================================================
--- trunk/Installer/Installers/MapGuide/Lang/MapGuide_en-US.wxl	2010-02-23 05:34:10 UTC (rev 4608)
+++ trunk/Installer/Installers/MapGuide/Lang/MapGuide_en-US.wxl	2010-02-24 15:02:55 UTC (rev 4609)
@@ -5,7 +5,7 @@
     http://msdn.microsoft.com/en-us/library/system.globalization.cultureinfo(vs.80).aspx
     -->
     <String Id="LANG">1033</String>
-    <String Id="ProductName">MapGuide Open Source 2.1</String>
+    <String Id="ProductName">MapGuide Open Source 2.2</String>
     <String Id="ProductManufacturer">Open Source Geospatial Foundation</String>
 
     <String Id="InstallerTitle">[ProductName] Setup</String>
@@ -43,6 +43,7 @@
 
     <String Id="IIS6ConfigDlg_Title">IIS 6.0 Configuration</String>
     <String Id="IIS6ConfigDlg_Description">Configure IIS 6.0 Settings</String>
+    <String Id="IIS6ConfigDlg_InstallTo">Install Web Extensions to the following website</String>
     <String Id="IIS6ConfigDlg_AppPool">Create an application pool</String>
     <String Id="IIS6ConfigDlg_AppPoolDescription">An application pool allows MapGuide applications to be isolated from other applications running on the web server</String>
 

Modified: trunk/Installer/Installers/MapGuide/Lang/MapGuide_es-ES.wxl
===================================================================
--- trunk/Installer/Installers/MapGuide/Lang/MapGuide_es-ES.wxl	2010-02-23 05:34:10 UTC (rev 4608)
+++ trunk/Installer/Installers/MapGuide/Lang/MapGuide_es-ES.wxl	2010-02-24 15:02:55 UTC (rev 4609)
@@ -5,7 +5,7 @@
     http://msdn.microsoft.com/en-us/library/system.globalization.cultureinfo(vs.80).aspx
     -->
     <String Id="LANG">3082</String>
-    <String Id="ProductName">MapGuide Open Source 2.1</String>
+    <String Id="ProductName">MapGuide Open Source 2.2</String>
     <String Id="ProductManufacturer">Open Source Geospatial Foundation</String>
 
     <String Id="InstallerTitle">Instalación de [ProductName]</String>
@@ -43,6 +43,7 @@
 
     <String Id="IIS6ConfigDlg_Title">Configuración de IIS 6.0</String>
     <String Id="IIS6ConfigDlg_Description">Configurar IIS 6.0 Configuración</String>
+    <String Id="IIS6ConfigDlg_InstallTo">Instalación de extensiones Web de sitio web la siguiente</String>
     <String Id="IIS6ConfigDlg_AppPool">Crear un grupo de aplicaciones</String>
     <String Id="IIS6ConfigDlg_AppPoolDescription">Un grupo de aplicaciones MapGuide permite a las aplicaciones ser aislado de otras aplicaciones que se ejecutan en el servidor web</String>
 

Modified: trunk/Installer/Installers/MapGuide/MapGuide.wixproj
===================================================================
--- trunk/Installer/Installers/MapGuide/MapGuide.wixproj	2010-02-23 05:34:10 UTC (rev 4608)
+++ trunk/Installer/Installers/MapGuide/MapGuide.wixproj	2010-02-24 15:02:55 UTC (rev 4609)
@@ -5,7 +5,7 @@
     <ProductVersion>3.0</ProductVersion>
     <ProjectGuid>{12c62f60-6f52-4112-84ab-0fa8ed44ee77}</ProjectGuid>
     <SchemaVersion>2.0</SchemaVersion>
-    <OutputName Condition=" '$(OutputName)' == '' ">MapGuideOpenSource-2.1.0-Unofficial</OutputName>
+    <OutputName Condition=" '$(OutputName)' == '' ">MapGuideOpenSource</OutputName>
     <OutputType>Package</OutputType>
     <WixTargetsPath Condition=" '$(WixTargetsPath)' == '' ">$(MSBuildExtensionsPath)\Microsoft\WiX\v3.0\Wix.targets</WixTargetsPath>
     <Name>MapGuide</Name>

Modified: trunk/Installer/Installers/MapGuide/MapGuide.wxs
===================================================================
--- trunk/Installer/Installers/MapGuide/MapGuide.wxs	2010-02-23 05:34:10 UTC (rev 4608)
+++ trunk/Installer/Installers/MapGuide/MapGuide.wxs	2010-02-24 15:02:55 UTC (rev 4609)
@@ -50,7 +50,14 @@
         -->
         <Property Id="SITE_ID" Secure="yes" Value="1" />
         <Property Id="VIRTUALDIR" Secure="yes" Value="mapguide" />
-        <Property Id="MG_WEBSITE" Secure="yes" Value="Default Web Site" />
+        <Property Id="MG_WEBSITE" Secure="yes" Value="Default Web Site">
+            <RegistrySearch
+            Id="MgWebsiteRs"
+            Type="raw"
+            Root="HKLM"
+            Key="$(var.MgRegKey)"
+            Name="MG_WEBSITE"  />
+        </Property>
 
         <!-- Add Remove Programs metadata -->
         <Property Id="ARPHELPLINK" Value="http://mapguide.osgeo.org" />
@@ -280,7 +287,7 @@
                 <Control Id="Cancel" Type="PushButton" X="304" Y="243" Width="56" Height="17" Cancel="yes" Text="!(loc.CancelButtonText)" />
             </Dialog>
 
-            <!-- Dialog to configure IIS6 specific things: web-site installation and application pool -->
+            <!-- Dialog to configure IIS6 specific things: web-site installation and application pool (w/ Trac #361 enhancements) -->
             <Dialog Id="IIS6ConfigDlg" Width="370" Height="270" Title="!(loc.InstallerTitle)">
                 <Control Id="Title" Type="Text" X="15" Y="6" Width="200" Height="15" Transparent="yes" NoPrefix="yes" Text="{\WixUI_Font_Title}!(loc.IIS6ConfigDlg_Title)" />
                 <Control Id="Description" Type="Text" X="25" Y="23" Width="280" Height="15" Transparent="yes" NoPrefix="yes" Text="!(loc.IIS6ConfigDlg_Description)" />
@@ -288,15 +295,19 @@
                 <Control Id="BannerLine" Type="Line" X="0" Y="44" Width="370" Height="0" />
                 <!-- 
                 
+                Install Web Extensions to the following website:
+                ________________________________________________|V|
                 Create an application pool: ___________________________
                 
                 It is recommended to create an application pool if you are running mixed 
                 ASP.net application environments on your web server.
                 
                 -->
-                <Control Id="LblAppPool" Type="Text" Text="!(loc.IIS6ConfigDlg_AppPool)" X="20" Y="80" Width="240" Height="15" />
-                <Control Id="TxtAppPool" Type="Edit" Property="APP_POOL_NAME" X="20" Y="100" Width="240" Height="15" />
-                <Control Id="LblAppPoolDescription" Type="Text" Text="!(loc.IIS6ConfigDlg_AppPoolDescription)" X="20" Y="120" Width="240" Height="45" />
+                <Control Id="LblWebSite" Type="Text" Text="!(loc.IIS6ConfigDlg_InstallTo)" X="20" Y="80" Width="240" Height="15" />
+                <Control Id="LstWebSite" Type="ListBox" Property="MG_WEBSITE" X="20" Y="100" Width="240" Height="60" />
+                <Control Id="LblAppPool" Type="Text" Text="!(loc.IIS6ConfigDlg_AppPool)" X="20" Y="170" Width="240" Height="15" />
+                <Control Id="TxtAppPool" Type="Edit" Property="APP_POOL_NAME" X="20" Y="190" Width="140" Height="15" />
+                <Control Id="LblAppPoolDescription" Type="Text" Text="!(loc.IIS6ConfigDlg_AppPoolDescription)" X="20" Y="210" Width="240" Height="30" />
 
                 <Control Id="Next" Type="PushButton" X="236" Y="243" Width="56" Height="17" Default="yes" Text="!(loc.NextButtonText)" />
                 <Control Id="Back" Type="PushButton" X="180" Y="243" Width="56" Height="17" Text="!(loc.BackButtonText)" />
@@ -495,6 +506,11 @@
 
         </UI>
 
+        <!-- Trac #361: Run our custom CA as part of the UI install sequence -->
+        <InstallUISequence>
+            <Custom Action="EnumerateIIS6WebSites" After="CostFinalize" Overridable="yes">NOT Installed AND IISVERSIONMAJOR=&quot;#6&quot;</Custom>
+        </InstallUISequence>
+
         <InstallExecuteSequence>
 
           <!-- IIS7 Base properties for deferred actions -->

Modified: trunk/Installer/Libraries/MapGuide Web Extensions/IIS.wxs
===================================================================
--- trunk/Installer/Libraries/MapGuide Web Extensions/IIS.wxs	2010-02-23 05:34:10 UTC (rev 4608)
+++ trunk/Installer/Libraries/MapGuide Web Extensions/IIS.wxs	2010-02-24 15:02:55 UTC (rev 4609)
@@ -2,124 +2,143 @@
 <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
      xmlns:iis="http://schemas.microsoft.com/wix/IIsExtension"
      xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">
-	<Fragment>
-    <Property Id="FRAMEWORKDIR">
-        <RegistrySearch Id="DotNetSearch" Root="HKLM" Key="Software\Microsoft\.NETFramework" Name="InstallRoot" Type="directory" />
-    </Property>
-    <PropertyRef Id="MGWEB_CONFIG"/>
-    <PropertyRef Id="IISVERSIONMAJOR"/>
-    <PropertyRef Id="IIS_API_TYPE"/>
+    <Fragment>
+        <Property Id="FRAMEWORKDIR">
+            <RegistrySearch Id="DotNetSearch" Root="HKLM" Key="Software\Microsoft\.NETFramework" Name="InstallRoot" Type="directory" />
+        </Property>
+        <PropertyRef Id="MGWEB_CONFIG"/>
+        <PropertyRef Id="IISVERSIONMAJOR"/>
+        <PropertyRef Id="IIS_API_TYPE"/>
 
-    <CustomAction Id="AspNetRegIIS_Cmd" Property="AspNetRegIIS" Execute="immediate"
-        Value="&quot;[FRAMEWORKDIR]v2.0.50727\aspnet_regiis.exe&quot; -s W3SVC/[SITE_ID]/ROOT/[VIRTUALDIR]" />
-    <CustomAction Id="AspNetRegIIS" BinaryKey="WixCA" DllEntry="CAQuietExec" Execute="deferred" Return="ignore" Impersonate="no" />
+        <CustomAction Id="AspNetRegIIS_Cmd" Property="AspNetRegIIS" Execute="immediate"
+            Value="&quot;[FRAMEWORKDIR]v2.0.50727\aspnet_regiis.exe&quot; -s W3SVC/[SITE_ID]/ROOT/[VIRTUALDIR]" />
+        <CustomAction Id="AspNetRegIIS" BinaryKey="WixCA" DllEntry="CAQuietExec" Execute="deferred" Return="ignore" Impersonate="no" />
 
-    <!-- This doesn't do anything; just a pointer -->
-    <iis:WebSite Id="IISDefaultWebSite" Description="[MG_WEBSITE]">
-      <iis:WebAddress Id="AllUnassigned" Port="80" />
-    </iis:WebSite>
+        <!-- Begin Trac Ticket #361 stuff -->
+        
 
-    <Feature Id="IISSetupFeature" Level="1" Display="hidden" >
+        <!-- CA dll reference -->
+        <Binary Id="iis_uihelper" SourceFile="..\..\Custom\bin\iis_actions.dll" />
+        <CustomAction Id="EnumerateIIS6WebSites" BinaryKey="iis_uihelper" DllEntry="PopulateWebSites" Return="check" Execute="immediate" />
+        
+        <!-- 
+        This is no longer a pointer, this will reference the site we choose from the UI selection. The key is in
+        the SiteId attribute, which is * to allow for a selection by web site name, instead of name/port/ip/header
+        
+        For more information: http://www.mail-archive.com/wix-users@lists.sourceforge.net/msg27928.html
+        -->
+        <iis:WebSite Id="IISDefaultWebSite" Description="[MG_WEBSITE]" SiteId="*">
+            <iis:WebAddress Id="AllUnassigned" Port="80" />
+        </iis:WebSite>
 
-      <!-- IIS5 Base component -->
-      <Component Id="IIS5BaseMapGuideComponent" Guid="4174B322-8449-4299-813F-E2B1FCB4ECB4" Directory="WEBEXTENSIONSLOCATION">
-        <Condition>MGWEB_CONFIG=&quot;IIS&quot; AND IISVERSIONMAJOR=&quot;#5&quot;</Condition>
-        <CreateFolder />
-        <iis:WebVirtualDir Id="IIS5MapGuideVDir" Alias="[VIRTUALDIR]" Directory="WEBROOTLOCATION" WebSite="IISDefaultWebSite">
-          <iis:WebDirProperties Id="IIS5MapGuideDocuments" DefaultDocuments="index.php,index.html,index.htm,default.aspx,index.aspx,default.htm,default.html" AnonymousAccess="yes" BasicAuthentication="no" WindowsAuthentication="no"/>
-          <iis:WebApplication Id="IIS5MapGuideWebApp" Name="[VIRTUALDIR]">
-            <iis:WebApplicationExtension Extension="php" Script="yes" Verbs="GET,POST" CheckPath="no" Executable="[!file_PHPFILES_40]" />
-          </iis:WebApplication>
-          <iis:WebVirtualDir Id="IIS5MapAgentVDir" Alias="mapagent" Directory="dir_mapagent_0" >
-            <iis:WebDirProperties Id="IIS5MapAgentProperties" DefaultDocuments="index.html" AnonymousAccess="yes" BasicAuthentication="no" WindowsAuthentication="no"/>
-            <iis:WebError ErrorCode="401" SubCode="0" />
-            <iis:WebError ErrorCode="401" SubCode="1" />
-            <iis:WebError ErrorCode="401" SubCode="2" />
-            <iis:WebError ErrorCode="401" SubCode="3" />
-            <iis:WebError ErrorCode="401" SubCode="4" />
-            <iis:WebError ErrorCode="401" SubCode="5" />
-            <iis:WebApplication Id="IIS5MapAgentWebApp" Name="mapagent" >
-              <iis:WebApplicationExtension Extension="fcgi" Script="yes" Verbs="GET,POST" CheckPath="no" Executable="[!file_MAPAGENTFILES_96]" />
-              <iis:WebApplicationExtension Extension="php" Script="yes" Verbs="GET,POST" CheckPath="no" Executable="[!file_PHPFILES_40]" />
-            </iis:WebApplication>
-          </iis:WebVirtualDir>
-          <iis:WebVirtualDir Id="IIS5MapAdminVDir" Alias="mapadmin" Directory="dir_mapadmin_0" >
-            <iis:WebDirProperties Id="IIS5MapAdminDocument" DefaultDocuments="login.php" AnonymousAccess="yes" BasicAuthentication="no" WindowsAuthentication="no"/>
-          </iis:WebVirtualDir>
-        </iis:WebVirtualDir>
-      </Component>
+        <!-- End Trac Ticket #361 stuff -->
 
-      <!-- IIS5 PHP MapViewer component -->
-      <Component Id="IIS5PhpViewerComponent" Guid="1E56B410-1305-4406-BDFB-1252E159B746" Directory="WEBEXTENSIONSLOCATION">
-        <Condition>MGWEB_CONFIG=&quot;IIS&quot; AND IIS_API_TYPE=&quot;PHP&quot; AND IISVERSIONMAJOR=&quot;#5&quot;</Condition>
-        <CreateFolder />
-        <iis:WebVirtualDir Id="IIS5PhpViewerVDir" Alias="mapguide/mapviewerajax" Directory="dir_mapviewerphp_0" WebSite="IISDefaultWebSite">
-          <iis:WebDirProperties Id="IIS5PhpViewerDocument" DefaultDocuments="ajaxviewer.php" AnonymousAccess="yes" BasicAuthentication="no" WindowsAuthentication="no"/>
-        </iis:WebVirtualDir>
-      </Component>
+        <Feature Id="IISSetupFeature" Level="1" Display="hidden" >
 
-      <!-- IIS5 DotNet MapViewer component -->
-      <Component Id="IIS5DotNetViewerComponent" Guid="EC460125-D5D4-4596-BD03-B8D920F02E7F" Directory="WEBEXTENSIONSLOCATION">
-        <Condition>NETFRAMEWORK20 AND MGWEB_CONFIG=&quot;IIS&quot; AND IIS_API_TYPE=&quot;DOTNET&quot; AND IISVERSIONMAJOR=&quot;#5&quot;</Condition>
-        <CreateFolder />
-        <iis:WebVirtualDir Id="IIS5DotNetViewerVDir" Alias="mapguide/mapviewerajax" Directory="dir_mapviewernet_0" WebSite="IISDefaultWebSite">
-          <iis:WebDirProperties Id="IIS5DotNetViewerDocument" DefaultDocuments="ajaxviewer.aspx"  AnonymousAccess="yes" BasicAuthentication="no" WindowsAuthentication="no" />
-          <iis:WebApplication Id="IIS5MapViewerWebApp" Name="mapviewerajax" />
-        </iis:WebVirtualDir>
-      </Component>
+            <!-- IIS5 Base component -->
+            <Component Id="IIS5BaseMapGuideComponent" Guid="4174B322-8449-4299-813F-E2B1FCB4ECB4" Directory="WEBEXTENSIONSLOCATION">
+                <Condition>MGWEB_CONFIG=&quot;IIS&quot; AND IISVERSIONMAJOR=&quot;#5&quot;</Condition>
+                <CreateFolder />
+                <iis:WebVirtualDir Id="IIS5MapGuideVDir" Alias="[VIRTUALDIR]" Directory="WEBROOTLOCATION" WebSite="IISDefaultWebSite">
+                    <iis:WebDirProperties Id="IIS5MapGuideDocuments" DefaultDocuments="index.php,index.html,index.htm,default.aspx,index.aspx,default.htm,default.html" AnonymousAccess="yes" BasicAuthentication="no" WindowsAuthentication="no"/>
+                    <iis:WebApplication Id="IIS5MapGuideWebApp" Name="[VIRTUALDIR]">
+                        <iis:WebApplicationExtension Extension="php" Script="yes" Verbs="GET,POST" CheckPath="no" Executable="[!file_PHPFILES_40]" />
+                    </iis:WebApplication>
+                    <iis:WebVirtualDir Id="IIS5MapAgentVDir" Alias="mapagent" Directory="dir_mapagent_0" >
+                        <iis:WebDirProperties Id="IIS5MapAgentProperties" DefaultDocuments="index.html" AnonymousAccess="yes" BasicAuthentication="no" WindowsAuthentication="no"/>
+                        <iis:WebError ErrorCode="401" SubCode="0" />
+                        <iis:WebError ErrorCode="401" SubCode="1" />
+                        <iis:WebError ErrorCode="401" SubCode="2" />
+                        <iis:WebError ErrorCode="401" SubCode="3" />
+                        <iis:WebError ErrorCode="401" SubCode="4" />
+                        <iis:WebError ErrorCode="401" SubCode="5" />
+                        <iis:WebApplication Id="IIS5MapAgentWebApp" Name="mapagent" >
+                            <iis:WebApplicationExtension Extension="fcgi" Script="yes" Verbs="GET,POST" CheckPath="no" Executable="[!file_MAPAGENTFILES_96]" />
+                            <iis:WebApplicationExtension Extension="php" Script="yes" Verbs="GET,POST" CheckPath="no" Executable="[!file_PHPFILES_40]" />
+                        </iis:WebApplication>
+                    </iis:WebVirtualDir>
+                    <iis:WebVirtualDir Id="IIS5MapAdminVDir" Alias="mapadmin" Directory="dir_mapadmin_0" >
+                        <iis:WebDirProperties Id="IIS5MapAdminDocument" DefaultDocuments="login.php" AnonymousAccess="yes" BasicAuthentication="no" WindowsAuthentication="no"/>
+                    </iis:WebVirtualDir>
+                </iis:WebVirtualDir>
+            </Component>
 
-      <!-- IIS6 Base component -->
-      <Component Id="IIS6BaseMapGuideComponent" Guid="BC77760D-55D5-4111-BC1D-50CEC0482D60" Directory="WEBEXTENSIONSLOCATION">
-        <Condition>MGWEB_CONFIG=&quot;IIS&quot; AND IISVERSIONMAJOR=&quot;#6&quot;</Condition>
-        <CreateFolder />
-        <iis:WebAppPool Id="IIS6MapGuideAppPool" Name="[APP_POOL_NAME]" />
-        <iis:WebServiceExtension Id="IIS6PhpWebServiceExt" Allow="yes" Description="MapGuide PHP ISAPI Extension" File="[!file_PHPFILES_40]" />
-        <iis:WebServiceExtension Id="IIS6MapGuideWebServiceExt" Allow="yes" Description="MapGuide MapAgent ISAPI Extension" File="[!file_MAPAGENTFILES_96]" />
-        <iis:WebVirtualDir Id="IIS6MapGuideVDir" Alias="[VIRTUALDIR]" Directory="WEBROOTLOCATION" WebSite="IISDefaultWebSite" >
-          <iis:WebDirProperties Id="IIS6MapGuideDocuments" DefaultDocuments="index.php,index.html,index.htm,default.aspx,index.aspx,default.htm,default.html"  AnonymousAccess="yes" BasicAuthentication="no" WindowsAuthentication="no" />
-          <iis:MimeMap Id="IIS6JsonMimeType" Type="application/json" Extension =".json" />
-          <iis:WebApplication Id="IIS6MapGuideWebApp" Name="[VIRTUALDIR]" WebAppPool="IIS6MapGuideAppPool" >
-            <iis:WebApplicationExtension Extension="php" Script="yes" Verbs="GET,POST" CheckPath="no" Executable="[!file_PHPFILES_40]" />
-          </iis:WebApplication>
-          <iis:WebVirtualDir Id="IIS6MapAgentVDir" Alias="mapagent" Directory="dir_mapagent_0" >
-            <iis:WebDirProperties Id="IIS6MapAgentProperties" DefaultDocuments="index.html" AnonymousAccess="yes" BasicAuthentication="no" WindowsAuthentication="no" />
-            <iis:WebError ErrorCode="401" SubCode="0"/>
-            <iis:WebError ErrorCode="401" SubCode="1" />
-            <iis:WebError ErrorCode="401" SubCode="2" />
-            <iis:WebError ErrorCode="401" SubCode="3" />
-            <iis:WebError ErrorCode="401" SubCode="4" />
-            <iis:WebError ErrorCode="401" SubCode="5" />
-            <iis:WebApplication Id="IIS6MapAgentWebApp" Name="mapagent" WebAppPool="IIS6MapGuideAppPool">
-              <iis:WebApplicationExtension Extension="fcgi" Script="yes" Verbs="GET,POST" CheckPath="no" Executable="[!file_MAPAGENTFILES_96]" />
-              <iis:WebApplicationExtension Extension="php" Script="yes" Verbs="GET,POST" CheckPath="no" Executable="[!file_PHPFILES_40]" />
-            </iis:WebApplication>
-          </iis:WebVirtualDir>
-          <iis:WebVirtualDir Id="IIS6MapAdminVDir" Alias="mapadmin" Directory="dir_mapadmin_0" >
-            <iis:WebDirProperties Id="IIS6MapAdminDocument" DefaultDocuments="login.php"  AnonymousAccess="yes" BasicAuthentication="no" WindowsAuthentication="no" />
-          </iis:WebVirtualDir>
-        </iis:WebVirtualDir>
-      </Component>
+            <!-- IIS5 PHP MapViewer component -->
+            <Component Id="IIS5PhpViewerComponent" Guid="1E56B410-1305-4406-BDFB-1252E159B746" Directory="WEBEXTENSIONSLOCATION">
+                <Condition>MGWEB_CONFIG=&quot;IIS&quot; AND IIS_API_TYPE=&quot;PHP&quot; AND IISVERSIONMAJOR=&quot;#5&quot;</Condition>
+                <CreateFolder />
+                <iis:WebVirtualDir Id="IIS5PhpViewerVDir" Alias="mapguide/mapviewerajax" Directory="dir_mapviewerphp_0" WebSite="IISDefaultWebSite">
+                    <iis:WebDirProperties Id="IIS5PhpViewerDocument" DefaultDocuments="ajaxviewer.php" AnonymousAccess="yes" BasicAuthentication="no" WindowsAuthentication="no"/>
+                </iis:WebVirtualDir>
+            </Component>
 
-      <!-- IIS6 PHP MapViewer component -->
-      <Component Id="IIS6PhpViewerComponent" Guid="6CDC8E73-B6B1-4A2E-98E3-953C399D1D0D" Directory="WEBEXTENSIONSLOCATION">
-        <Condition>MGWEB_CONFIG=&quot;IIS&quot; AND IIS_API_TYPE=&quot;PHP&quot; AND IISVERSIONMAJOR=&quot;#6&quot;</Condition>
-        <CreateFolder />
-        <iis:WebVirtualDir Id="IIS6PhpViewerVDir" Alias="mapguide/mapviewerajax" Directory="dir_mapviewerphp_0" WebSite="IISDefaultWebSite">
-          <iis:WebDirProperties Id="IIS6PhpViewerDocument" DefaultDocuments="ajaxviewer.php"  AnonymousAccess="yes" BasicAuthentication="no" WindowsAuthentication="no" />
-        </iis:WebVirtualDir>
-      </Component>
+            <!-- IIS5 DotNet MapViewer component -->
+            <Component Id="IIS5DotNetViewerComponent" Guid="EC460125-D5D4-4596-BD03-B8D920F02E7F" Directory="WEBEXTENSIONSLOCATION">
+                <Condition>NETFRAMEWORK20 AND MGWEB_CONFIG=&quot;IIS&quot; AND IIS_API_TYPE=&quot;DOTNET&quot; AND IISVERSIONMAJOR=&quot;#5&quot;</Condition>
+                <CreateFolder />
+                <iis:WebVirtualDir Id="IIS5DotNetViewerVDir" Alias="mapguide/mapviewerajax" Directory="dir_mapviewernet_0" WebSite="IISDefaultWebSite">
+                    <iis:WebDirProperties Id="IIS5DotNetViewerDocument" DefaultDocuments="ajaxviewer.aspx"  AnonymousAccess="yes" BasicAuthentication="no" WindowsAuthentication="no" />
+                    <iis:WebApplication Id="IIS5MapViewerWebApp" Name="mapviewerajax" />
+                </iis:WebVirtualDir>
+            </Component>
+            
+            <!-- Trac #361 -->
+            <Component Id="PersistWebsiteSelection" Guid="0C0CBB26-C99B-486a-9367-15D49AC9726B" Directory="WEBEXTENSIONSLOCATION">
+                <RegistryKey Root="HKLM" Key="$(var.MgRegKey)">
+                    <RegistryValue Name="MG_WEBSITE" Type="string" Value="[MG_WEBSITE]" />
+                </RegistryKey>
+            </Component>
+            
+            <!-- IIS6 Base component -->
+            <Component Id="IIS6BaseMapGuideComponent" Guid="BC77760D-55D5-4111-BC1D-50CEC0482D60" Directory="WEBEXTENSIONSLOCATION">
+                <Condition>MGWEB_CONFIG=&quot;IIS&quot; AND IISVERSIONMAJOR=&quot;#6&quot;</Condition>
+                <CreateFolder />
+                <iis:WebAppPool Id="IIS6MapGuideAppPool" Name="[APP_POOL_NAME]" />
+                <iis:WebServiceExtension Id="IIS6PhpWebServiceExt" Allow="yes" Description="MapGuide PHP ISAPI Extension" File="[!file_PHPFILES_40]" />
+                <iis:WebServiceExtension Id="IIS6MapGuideWebServiceExt" Allow="yes" Description="MapGuide MapAgent ISAPI Extension" File="[!file_MAPAGENTFILES_96]" />
+                <iis:WebVirtualDir Id="IIS6MapGuideVDir" Alias="[VIRTUALDIR]" Directory="WEBROOTLOCATION" WebSite="IISDefaultWebSite" >
+                    <iis:WebDirProperties Id="IIS6MapGuideDocuments" DefaultDocuments="index.php,index.html,index.htm,default.aspx,index.aspx,default.htm,default.html"  AnonymousAccess="yes" BasicAuthentication="no" WindowsAuthentication="no" />
+                    <iis:MimeMap Id="IIS6JsonMimeType" Type="application/json" Extension =".json" />
+                    <iis:WebApplication Id="IIS6MapGuideWebApp" Name="[VIRTUALDIR]" WebAppPool="IIS6MapGuideAppPool" >
+                        <iis:WebApplicationExtension Extension="php" Script="yes" Verbs="GET,POST" CheckPath="no" Executable="[!file_PHPFILES_40]" />
+                    </iis:WebApplication>
+                    <iis:WebVirtualDir Id="IIS6MapAgentVDir" Alias="mapagent" Directory="dir_mapagent_0" >
+                        <iis:WebDirProperties Id="IIS6MapAgentProperties" DefaultDocuments="index.html" AnonymousAccess="yes" BasicAuthentication="no" WindowsAuthentication="no" />
+                        <iis:WebError ErrorCode="401" SubCode="0"/>
+                        <iis:WebError ErrorCode="401" SubCode="1" />
+                        <iis:WebError ErrorCode="401" SubCode="2" />
+                        <iis:WebError ErrorCode="401" SubCode="3" />
+                        <iis:WebError ErrorCode="401" SubCode="4" />
+                        <iis:WebError ErrorCode="401" SubCode="5" />
+                        <iis:WebApplication Id="IIS6MapAgentWebApp" Name="mapagent" WebAppPool="IIS6MapGuideAppPool">
+                            <iis:WebApplicationExtension Extension="fcgi" Script="yes" Verbs="GET,POST" CheckPath="no" Executable="[!file_MAPAGENTFILES_96]" />
+                            <iis:WebApplicationExtension Extension="php" Script="yes" Verbs="GET,POST" CheckPath="no" Executable="[!file_PHPFILES_40]" />
+                        </iis:WebApplication>
+                    </iis:WebVirtualDir>
+                    <iis:WebVirtualDir Id="IIS6MapAdminVDir" Alias="mapadmin" Directory="dir_mapadmin_0" >
+                        <iis:WebDirProperties Id="IIS6MapAdminDocument" DefaultDocuments="login.php"  AnonymousAccess="yes" BasicAuthentication="no" WindowsAuthentication="no" />
+                    </iis:WebVirtualDir>
+                </iis:WebVirtualDir>
+            </Component>
 
-      <!-- IIS6 DotNet MapViewer component -->
-      <Component Id="IIS6DotNetViewerComponent" Guid="357E1C68-9E29-474F-A783-6F8FD8BCEAB4" Directory="WEBEXTENSIONSLOCATION">
-        <Condition>NETFRAMEWORK20 AND MGWEB_CONFIG=&quot;IIS&quot; AND IIS_API_TYPE=&quot;DOTNET&quot; AND IISVERSIONMAJOR=&quot;#6&quot;</Condition>
-        <CreateFolder />
-        <iis:WebVirtualDir Id="IIS6DotNetViewerVDir" Alias="mapguide/mapviewerajax" Directory="dir_mapviewernet_0" WebSite="IISDefaultWebSite">
-          <iis:WebDirProperties Id="IIS6DotNetViewerDocument" DefaultDocuments="ajaxviewer.aspx"  AnonymousAccess="yes" BasicAuthentication="no" WindowsAuthentication="no" />
-          <iis:WebApplication Id="IIS6MapViewerWebApp" Name="mapviewerajax" WebAppPool="IIS6MapGuideAppPool" />
-        </iis:WebVirtualDir>
-      </Component>
+            <!-- IIS6 PHP MapViewer component -->
+            <Component Id="IIS6PhpViewerComponent" Guid="6CDC8E73-B6B1-4A2E-98E3-953C399D1D0D" Directory="WEBEXTENSIONSLOCATION">
+                <Condition>MGWEB_CONFIG=&quot;IIS&quot; AND IIS_API_TYPE=&quot;PHP&quot; AND IISVERSIONMAJOR=&quot;#6&quot;</Condition>
+                <CreateFolder />
+                <iis:WebVirtualDir Id="IIS6PhpViewerVDir" Alias="mapguide/mapviewerajax" Directory="dir_mapviewerphp_0" WebSite="IISDefaultWebSite">
+                    <iis:WebDirProperties Id="IIS6PhpViewerDocument" DefaultDocuments="ajaxviewer.php"  AnonymousAccess="yes" BasicAuthentication="no" WindowsAuthentication="no" />
+                </iis:WebVirtualDir>
+            </Component>
 
-    </Feature>
-
-  </Fragment>
+            <!-- IIS6 DotNet MapViewer component -->
+            <Component Id="IIS6DotNetViewerComponent" Guid="357E1C68-9E29-474F-A783-6F8FD8BCEAB4" Directory="WEBEXTENSIONSLOCATION">
+                <Condition>NETFRAMEWORK20 AND MGWEB_CONFIG=&quot;IIS&quot; AND IIS_API_TYPE=&quot;DOTNET&quot; AND IISVERSIONMAJOR=&quot;#6&quot;</Condition>
+                <CreateFolder />
+                <iis:WebVirtualDir Id="IIS6DotNetViewerVDir" Alias="mapguide/mapviewerajax" Directory="dir_mapviewernet_0" WebSite="IISDefaultWebSite">
+                    <iis:WebDirProperties Id="IIS6DotNetViewerDocument" DefaultDocuments="ajaxviewer.aspx"  AnonymousAccess="yes" BasicAuthentication="no" WindowsAuthentication="no" />
+                    <iis:WebApplication Id="IIS6MapViewerWebApp" Name="mapviewerajax" WebAppPool="IIS6MapGuideAppPool" />
+                </iis:WebVirtualDir>
+            </Component>
+        </Feature>
+    </Fragment>
 </Wix>
\ No newline at end of file



More information about the mapguide-commits mailing list