From svn_mapguide at osgeo.org Wed Sep 9 07:29:46 2026 From: svn_mapguide at osgeo.org (svn_mapguide at osgeo.org) Date: Wed, 9 Sep 2026 07:29:46 -0700 Subject: [mapguide-commits] r10210 - in trunk/Tools/MgInstantSetup: . InstantSetupCmd Message-ID: <20260909142946.5E02B1C0882@trac.osgeo.org> Author: jng Date: 2026-09-09 07:29:44 -0700 (Wed, 09 Sep 2026) New Revision: 10210 Removed: trunk/Tools/MgInstantSetup/.nuget/ trunk/Tools/MgInstantSetup/InstantSetupCmd/packages.config Modified: trunk/Tools/MgInstantSetup/InstantSetupCmd/InstantSetupCmd.csproj trunk/Tools/MgInstantSetup/MgInstantSetup.sln Log: Remove "legacy" nuget package restoration Modified: trunk/Tools/MgInstantSetup/InstantSetupCmd/InstantSetupCmd.csproj =================================================================== --- trunk/Tools/MgInstantSetup/InstantSetupCmd/InstantSetupCmd.csproj 2026-08-24 07:40:13 UTC (rev 10209) +++ trunk/Tools/MgInstantSetup/InstantSetupCmd/InstantSetupCmd.csproj 2026-09-09 14:29:44 UTC (rev 10210) @@ -13,8 +13,6 @@ 512 - ..\ - true AnyCPU @@ -43,9 +41,6 @@ app.manifest - - ..\packages\CommandLineParser.1.9.71\lib\net40\CommandLine.dll - @@ -55,6 +50,9 @@ + + + @@ -62,7 +60,6 @@ - @@ -71,13 +68,6 @@ - - - - This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. - - - Modified: sandbox/jng/installer_wix6/Libraries/MapGuide Web Extensions/Apache.wxs =================================================================== --- sandbox/jng/installer_wix6/Libraries/MapGuide Web Extensions/Apache.wxs 2026-09-11 09:04:17 UTC (rev 10213) +++ sandbox/jng/installer_wix6/Libraries/MapGuide Web Extensions/Apache.wxs 2026-09-11 14:35:46 UTC (rev 10214) @@ -1,7 +1,6 @@ ? Deleted: sandbox/jng/installer_wix6/Paraffin.exe =================================================================== (Binary files differ) From svn_mapguide at osgeo.org Sun Sep 13 02:13:41 2026 From: svn_mapguide at osgeo.org (svn_mapguide at osgeo.org) Date: Sun, 13 Sep 2026 02:13:41 -0700 Subject: [mapguide-commits] r10215 - in sandbox/jng/installer_wix6: Libraries/MapGuide Web Extensions scripts Message-ID: <20260913091341.CA8DF1B6432@trac.osgeo.org> Author: jng Date: 2026-09-13 02:13:38 -0700 (Sun, 13 Sep 2026) New Revision: 10215 Modified: sandbox/jng/installer_wix6/Libraries/MapGuide Web Extensions/HarvestFiles.wxs sandbox/jng/installer_wix6/scripts/List-MsiFiles.ps1 Log: Fix some incorrect file > feature assignments and ensure List-MsiFiles.ps1 releases its msi file handles. Modified: sandbox/jng/installer_wix6/Libraries/MapGuide Web Extensions/HarvestFiles.wxs =================================================================== --- sandbox/jng/installer_wix6/Libraries/MapGuide Web Extensions/HarvestFiles.wxs 2026-09-11 14:35:46 UTC (rev 10214) +++ sandbox/jng/installer_wix6/Libraries/MapGuide Web Extensions/HarvestFiles.wxs 2026-09-13 09:13:38 UTC (rev 10215) @@ -64,7 +64,6 @@ - @@ -72,6 +71,7 @@ + Modified: sandbox/jng/installer_wix6/scripts/List-MsiFiles.ps1 =================================================================== --- sandbox/jng/installer_wix6/scripts/List-MsiFiles.ps1 2026-09-11 14:35:46 UTC (rev 10214) +++ sandbox/jng/installer_wix6/scripts/List-MsiFiles.ps1 2026-09-13 09:13:38 UTC (rev 10215) @@ -129,7 +129,15 @@ if (-not (Test-Path -LiteralPath $Msi)) { throw "MSI file not found: $Msi" } $full = (Resolve-Path -LiteralPath $Msi).Path $installer = New-Object -ComObject WindowsInstaller.Installer - return $installer.GetType().InvokeMember('OpenDatabase', 'InvokeMethod', $null, $installer, @($full, 0)) + try { + return $installer.GetType().InvokeMember('OpenDatabase', 'InvokeMethod', $null, $installer, @($full, 0)) + } + finally { + # Release the Installer COM object immediately so it cannot keep the MSI open. + if ($null -ne $installer) { + try { [void][System.Runtime.InteropServices.Marshal]::FinalReleaseComObject($installer) } catch { } + } + } } function Split-FeatureList { @@ -157,6 +165,7 @@ function Read-MsiData { param([string]$Msi) $db = Open-Msi -Msi $Msi + try { $dirs = @{} foreach ($rec in (Invoke-MsiQuery $db 'SELECT `Directory`, `Directory_Parent`, `DefaultDir` FROM `Directory`')) { @@ -225,6 +234,13 @@ CompFeat = $compFeat Files = $files } + } + finally { + # Release the Database COM object so the MSI file handle is closed immediately. + if ($null -ne $db) { + try { [void][System.Runtime.InteropServices.Marshal]::FinalReleaseComObject($db) } catch { } + } + } } function Resolve-DirectoryPath { From svn_mapguide at osgeo.org Mon Sep 21 05:39:48 2026 From: svn_mapguide at osgeo.org (svn_mapguide at osgeo.org) Date: Mon, 21 Sep 2026 05:39:48 -0700 Subject: [mapguide-commits] r10216 - in branches/4.0/MgDev: Common/Renderers Oem/DWFTK/develop/global/src/dwf Oem/DWFTK/develop/global/src/dwf/whiptk Server/src/UnitTesting Message-ID: <20260921123949.09207157FBC@trac.osgeo.org> Author: jng Date: 2026-09-21 05:39:45 -0700 (Mon, 21 Sep 2026) New Revision: 10216 Modified: branches/4.0/MgDev/Common/Renderers/AGGRenderer.cpp branches/4.0/MgDev/Common/Renderers/AGGRenderer.h branches/4.0/MgDev/Common/Renderers/DWFRenderer.cpp branches/4.0/MgDev/Common/Renderers/DWFRenderer.h branches/4.0/MgDev/Oem/DWFTK/develop/global/src/dwf/CMakeLists.txt branches/4.0/MgDev/Oem/DWFTK/develop/global/src/dwf/whiptk/color.cpp branches/4.0/MgDev/Oem/DWFTK/develop/global/src/dwf/whiptk/ellipse.cpp branches/4.0/MgDev/Oem/DWFTK/develop/global/src/dwf/whiptk/plotinfo.cpp branches/4.0/MgDev/Oem/DWFTK/develop/global/src/dwf/whiptk/plotinfo.h branches/4.0/MgDev/Oem/DWFTK/develop/global/src/dwf/whiptk/transform.h branches/4.0/MgDev/Oem/DWFTK/develop/global/src/dwf/whiptk/typedefs_defines.h branches/4.0/MgDev/Oem/DWFTK/develop/global/src/dwf/whiptk/usrhatchpat.cpp branches/4.0/MgDev/Server/src/UnitTesting/TestDrawingService.cpp Log: Fix MgDrawingService::EnumerateLayers() returning an empty list on Linux Like our initial woes porting MapGuide to 64-bit Linux, the issue ultimately was incorrect typedefs on fundamental integral types in DWF Toolkit that caused the reading of DWF content to mis-behave due to these incorrect typedefs. Our long-disabled test case for this API has been re-activated as proof this API is now working as advertised. Fixes #2500 Modified: branches/4.0/MgDev/Common/Renderers/AGGRenderer.cpp =================================================================== --- branches/4.0/MgDev/Common/Renderers/AGGRenderer.cpp 2026-09-13 09:13:38 UTC (rev 10215) +++ branches/4.0/MgDev/Common/Renderers/AGGRenderer.cpp 2026-09-21 12:39:45 UTC (rev 10216) @@ -3159,7 +3159,7 @@ // of the destination DWF or be much larger, we need to take that scaling // into account when carrying over things like line weight, font height, // etc. This helper function determines and applies that scale. -double AGGRenderer::ScaleW2DNumber(WT_File& file, WT_Integer32 number) +double AGGRenderer::ScaleW2DNumber(WT_File& file, int number) { WT_Matrix xform = file.desired_rendition().drawing_info().units().dwf_to_application_adjoint_transform(); Modified: branches/4.0/MgDev/Common/Renderers/AGGRenderer.h =================================================================== --- branches/4.0/MgDev/Common/Renderers/AGGRenderer.h 2026-09-13 09:13:38 UTC (rev 10215) +++ branches/4.0/MgDev/Common/Renderers/AGGRenderer.h 2026-09-21 12:39:45 UTC (rev 10216) @@ -338,7 +338,7 @@ WT_Logical_Point* srcpts, int numpts, bool checkInBounds); - /*Do not export from DLL*/ double ScaleW2DNumber(WT_File& file, long number); + /*Do not export from DLL*/ double ScaleW2DNumber(WT_File& file, int number); private: void AddW2DContent(RS_InputStream* in, CSysTransformer* xformer, const RS_String& w2dfilter); Modified: branches/4.0/MgDev/Common/Renderers/DWFRenderer.cpp =================================================================== --- branches/4.0/MgDev/Common/Renderers/DWFRenderer.cpp 2026-09-13 09:13:38 UTC (rev 10215) +++ branches/4.0/MgDev/Common/Renderers/DWFRenderer.cpp 2026-09-21 12:39:45 UTC (rev 10216) @@ -3636,7 +3636,7 @@ //scaling into account when carrying over things like line weight, //font height, etc. this helper funtion determines and applies //that scale -WT_Integer32 DWFRenderer::ScaleW2DNumber(WT_File& file, WT_Integer32 number) +int DWFRenderer::ScaleW2DNumber(WT_File& file, int number) { WT_Matrix xform = file.desired_rendition().drawing_info().units().dwf_to_application_adjoint_transform(); @@ -3662,7 +3662,7 @@ dDstSpace *= m_scale; } - return (WT_Integer32)dDstSpace; + return (int)dDstSpace; } Modified: branches/4.0/MgDev/Common/Renderers/DWFRenderer.h =================================================================== --- branches/4.0/MgDev/Common/Renderers/DWFRenderer.h 2026-09-13 09:13:38 UTC (rev 10215) +++ branches/4.0/MgDev/Common/Renderers/DWFRenderer.h 2026-09-21 12:39:45 UTC (rev 10216) @@ -384,8 +384,8 @@ int numpts ); - /*Do not export from DLL*/ long ScaleW2DNumber(WT_File& file, - long number); + /*Do not export from DLL*/ int ScaleW2DNumber(WT_File& file, + int number); /*Do not export from DLL*/ void UpdateSymbolTrans(WT_File& file, WT_Viewport& viewport); Modified: branches/4.0/MgDev/Oem/DWFTK/develop/global/src/dwf/CMakeLists.txt =================================================================== --- branches/4.0/MgDev/Oem/DWFTK/develop/global/src/dwf/CMakeLists.txt 2026-09-13 09:13:38 UTC (rev 10215) +++ branches/4.0/MgDev/Oem/DWFTK/develop/global/src/dwf/CMakeLists.txt 2026-09-21 12:39:45 UTC (rev 10216) @@ -1,6 +1,33 @@ include_directories(${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/..) +# Sanity-check the whiptk fundamental type sizes at configure time. +# The W2D binary parser reads and writes 32-bit fields using WT_Integer32 / +# WT_Unsigned_Integer32. If those are not exactly 4 bytes the parser silently +# desynchronizes (e.g. `long` is 8 bytes on 64-bit Linux), producing empty or +# corrupted drawing results. Fail the build early rather than at runtime. +include(CheckCXXSourceCompiles) + +set(CMAKE_REQUIRED_INCLUDES + ${CMAKE_CURRENT_SOURCE_DIR} + ${CMAKE_CURRENT_SOURCE_DIR}/..) + +check_cxx_source_compiles( + "#include \"whiptk/typedefs_defines.h\" + typedef char DWFTK_WT_INT32_MUST_BE_4_BYTES[(sizeof(WT_Integer32) == 4) ? 1 : -1]; + typedef char DWFTK_WT_UINT32_MUST_BE_4_BYTES[(sizeof(WT_Unsigned_Integer32) == 4) ? 1 : -1]; + typedef char DWFTK_WT_INT16_MUST_BE_2_BYTES[(sizeof(WT_Integer16) == 2) ? 1 : -1]; + typedef char DWFTK_WT_UINT16_MUST_BE_2_BYTES[(sizeof(WT_Unsigned_Integer16) == 2) ? 1 : -1]; + typedef char DWFTK_WT_BYTE_MUST_BE_1_BYTE[(sizeof(WT_Byte) == 1) ? 1 : -1]; + int main() { return 0; }" + DWFTK_WT_TYPES_HAVE_EXPECTED_SIZES) + +unset(CMAKE_REQUIRED_INCLUDES) + +if(NOT DWFTK_WT_TYPES_HAVE_EXPECTED_SIZES) + message(FATAL_ERROR "DWFTK whiptk fundamental types have unexpected sizes. WT_Integer32/WT_Unsigned_Integer32 must be exactly 4 bytes; see whiptk/typedefs_defines.h") +endif() + set (dwftk_SRCS Toolkit.cpp #dwfx Modified: branches/4.0/MgDev/Oem/DWFTK/develop/global/src/dwf/whiptk/color.cpp =================================================================== --- branches/4.0/MgDev/Oem/DWFTK/develop/global/src/dwf/whiptk/color.cpp 2026-09-13 09:13:38 UTC (rev 10215) +++ branches/4.0/MgDev/Oem/DWFTK/develop/global/src/dwf/whiptk/color.cpp 2026-09-21 12:39:45 UTC (rev 10216) @@ -43,7 +43,7 @@ { // calc heidi color // cube index - long lr,lg,lb; + WT_Integer32 lr,lg,lb; short sr,sg,sb; lr = ( rgba.m_rgb.r * 6 ) << 8; lg = ( rgba.m_rgb.g * 6 ) << 8; Modified: branches/4.0/MgDev/Oem/DWFTK/develop/global/src/dwf/whiptk/ellipse.cpp =================================================================== --- branches/4.0/MgDev/Oem/DWFTK/develop/global/src/dwf/whiptk/ellipse.cpp 2026-09-13 09:13:38 UTC (rev 10215) +++ branches/4.0/MgDev/Oem/DWFTK/develop/global/src/dwf/whiptk/ellipse.cpp 2026-09-21 12:39:45 UTC (rev 10216) @@ -214,8 +214,8 @@ else { // merge any ellipse tilt into the circle angles - long start = ((long)m_start + (long)m_tilt) & 0x0000FFFF; - long end = ((long)m_end + (long)m_tilt) & 0x0000FFFF; + WT_Integer32 start = ((WT_Integer32)m_start + (WT_Integer32)m_tilt) & 0x0000FFFF; + WT_Integer32 end = ((WT_Integer32)m_end + (WT_Integer32)m_tilt) & 0x0000FFFF; // Output a circle in ASCII if (start != end) Modified: branches/4.0/MgDev/Oem/DWFTK/develop/global/src/dwf/whiptk/plotinfo.cpp =================================================================== --- branches/4.0/MgDev/Oem/DWFTK/develop/global/src/dwf/whiptk/plotinfo.cpp 2026-09-13 09:13:38 UTC (rev 10215) +++ branches/4.0/MgDev/Oem/DWFTK/develop/global/src/dwf/whiptk/plotinfo.cpp 2026-09-21 12:39:45 UTC (rev 10216) @@ -132,7 +132,7 @@ else { WD_CHECK( file.read_ascii(m_rotation) ); - m_rotation = ((long)((m_rotation / 90.0) + 0.5)) * 90; // Only allow 90 degree rotations in this release + m_rotation = ((WT_Integer32)((m_rotation / 90.0) + 0.5)) * 90; // Only allow 90 degree rotations in this release } } m_stage = Getting_Units_String; Modified: branches/4.0/MgDev/Oem/DWFTK/develop/global/src/dwf/whiptk/plotinfo.h =================================================================== --- branches/4.0/MgDev/Oem/DWFTK/develop/global/src/dwf/whiptk/plotinfo.h 2026-09-13 09:13:38 UTC (rev 10215) +++ branches/4.0/MgDev/Oem/DWFTK/develop/global/src/dwf/whiptk/plotinfo.h 2026-09-21 12:39:45 UTC (rev 10216) @@ -59,7 +59,7 @@ WT_Paper_Units m_units; WT_Boolean m_show; WT_String m_temp_string; - long m_rotation; + WT_Integer32 m_rotation; enum WT_Materialize_Stage { Eating_Initial_Whitespace, @@ -117,9 +117,9 @@ /// Returns the paper width (in paper units.) inline const double& paper_width() const { return m_width; } /// Returns a writable accessor to the rotation angle (in degrees, one of 0, 90, 180, 270.) - inline const long& rotation() const { return m_rotation; } + inline const WT_Integer32& rotation() const { return m_rotation; } /// Returns a the pre-applied rotation angle (in degrees, one of 0, 90, 180, 270, typically portrait==0 or landscape==90.) - inline long& rotation() { return m_rotation; } + inline WT_Integer32& rotation() { return m_rotation; } /// Returns a writable accessor to the 3x3 matrix which facilitates transforming DWF coordinate space to paper coordinate space. inline WT_Matrix2D& to_paper() { return m_dwf2paper; } /// Returns the 3x3 matrix which facilitates transforming DWF coordinate space to paper coordinate space. Modified: branches/4.0/MgDev/Oem/DWFTK/develop/global/src/dwf/whiptk/transform.h =================================================================== --- branches/4.0/MgDev/Oem/DWFTK/develop/global/src/dwf/whiptk/transform.h 2026-09-13 09:13:38 UTC (rev 10215) +++ branches/4.0/MgDev/Oem/DWFTK/develop/global/src/dwf/whiptk/transform.h 2026-09-21 12:39:45 UTC (rev 10216) @@ -32,7 +32,7 @@ WT_Logical_Point m_translate; /**< \brief Translation vector. */ double m_x_scale; /**< \brief X scale factor. */ double m_y_scale; /**< \brief Y scale factor. */ - long m_rotation; /**< \brief Rotation (in degrees, one of 0, 90, 180, 270). */ + WT_Integer32 m_rotation; /**< \brief Rotation (in degrees, one of 0, 90, 180, 270). */ /// Constructs a WT_Transform object. WT_Transform() @@ -66,13 +66,13 @@ double rotation /**< Rotation (in degrees, one of 0, 90, 180, 270). */ ) { - switch ((long)rotation) + switch ((WT_Integer32)rotation) { case 0: case 90: case 180: case 270: - m_rotation = (long)rotation; + m_rotation = (WT_Integer32)rotation; break; default: m_rotation = 0; @@ -81,7 +81,7 @@ } /// Returns the rotation value (in degrees, one of 0, 90, 180, 270). - long rotation() const + WT_Integer32 rotation() const { return m_rotation; } }; Modified: branches/4.0/MgDev/Oem/DWFTK/develop/global/src/dwf/whiptk/typedefs_defines.h =================================================================== --- branches/4.0/MgDev/Oem/DWFTK/develop/global/src/dwf/whiptk/typedefs_defines.h 2026-09-13 09:13:38 UTC (rev 10215) +++ branches/4.0/MgDev/Oem/DWFTK/develop/global/src/dwf/whiptk/typedefs_defines.h 2026-09-21 12:39:45 UTC (rev 10216) @@ -29,19 +29,33 @@ /// \brief Simple boolean. typedef char WT_Boolean; +// The W2D binary format stores 32-bit integers as exactly 4 bytes. +// On Windows `long` is 4 bytes, but on 64-bit Linux (LP64) `long` is +// 8 bytes, which silently desynchronizes the W2D parser. Keep the +// original Windows typedefs and use fixed 4-byte types elsewhere. +#if defined(_WIN32) /// \typedef typedef long WT_Integer32 /// \brief 32-bit signed integer. typedef long WT_Integer32; -/// \typedef typedef long WT_Integer16 -/// \brief 16-bit signed integer. -typedef short WT_Integer16; - /// \typedef typedef unsigned long WT_Unsigned_Integer32 /// \brief 32-bit unsigned integer. typedef unsigned long WT_Unsigned_Integer32; +#else +/// \typedef typedef int WT_Integer32 +/// \brief 32-bit signed integer. +typedef int WT_Integer32; -/// \typedef typedef unsigned long WT_Unsigned_Integer16 +/// \typedef typedef unsigned int WT_Unsigned_Integer32 +/// \brief 32-bit unsigned integer. +typedef unsigned int WT_Unsigned_Integer32; +#endif + +/// \typedef typedef short WT_Integer16 +/// \brief 16-bit signed integer. +typedef short WT_Integer16; + +/// \typedef typedef unsigned short WT_Unsigned_Integer16 /// \brief 16-bit unsigned integer. typedef unsigned short WT_Unsigned_Integer16; Modified: branches/4.0/MgDev/Oem/DWFTK/develop/global/src/dwf/whiptk/usrhatchpat.cpp =================================================================== --- branches/4.0/MgDev/Oem/DWFTK/develop/global/src/dwf/whiptk/usrhatchpat.cpp 2026-09-13 09:13:38 UTC (rev 10215) +++ branches/4.0/MgDev/Oem/DWFTK/develop/global/src/dwf/whiptk/usrhatchpat.cpp 2026-09-21 12:39:45 UTC (rev 10216) @@ -18,7 +18,7 @@ #include "whiptk/pch.h" -#define DOUBLE_TO_LONG_BIT_SHIFT_16(x) (long) ((float)x * 65536) +#define DOUBLE_TO_LONG_BIT_SHIFT_16(x) (WT_Integer32) ((float)x * 65536) #define LONG_TO_DOUBLE_BIT_SHIFT_16(x) (double) ((double)x * 0.0000152587890625) /////////////////////////////////////////////////////////////////////////// WT_User_Hatch_Pattern::WT_User_Hatch_Pattern(WT_User_Hatch_Pattern const & pattern) Modified: branches/4.0/MgDev/Server/src/UnitTesting/TestDrawingService.cpp =================================================================== --- branches/4.0/MgDev/Server/src/UnitTesting/TestDrawingService.cpp 2026-09-13 09:13:38 UTC (rev 10215) +++ branches/4.0/MgDev/Server/src/UnitTesting/TestDrawingService.cpp 2026-09-21 12:39:45 UTC (rev 10216) @@ -109,11 +109,7 @@ } } -#ifdef _WIN32 TEST_CASE("EnumerateLayers", "[DrawingService]") -#else -TEST_CASE("EnumerateLayers", "[Broken]") -#endif { try { From svn_mapguide at osgeo.org Mon Sep 21 05:56:43 2026 From: svn_mapguide at osgeo.org (svn_mapguide at osgeo.org) Date: Mon, 21 Sep 2026 05:56:43 -0700 Subject: [mapguide-commits] r10217 - in trunk/Installer: . Custom/apache_actions FdoRegUtil Installers/MapGuide Installers/MapGuide/Lang Libraries/CS Map Libraries/CS Map/Lang Libraries/MapGuide Server Libraries/MapGuide Server/Lang Libraries/MapGuide Web Extensions Libraries/MapGuide Web Extensions/Lang Support scripts Message-ID: <20260921125643.ED782157972@trac.osgeo.org> Author: jng Date: 2026-09-21 05:56:43 -0700 (Mon, 21 Sep 2026) New Revision: 10217 Added: trunk/Installer/Libraries/CS Map/HarvestFiles.wxs trunk/Installer/Libraries/MapGuide Server/HarvestFiles.wxs trunk/Installer/Libraries/MapGuide Web Extensions/HarvestFiles.wxs trunk/Installer/scripts/List-MsiFiles.ps1 Removed: trunk/Installer/Features.xml trunk/Installer/Paraffin.exe trunk/Installer/Support/Paraffin/ Modified: trunk/Installer/ trunk/Installer/Custom/apache_actions/apache_actions.vcxproj trunk/Installer/FdoRegUtil/FdoRegUtil.vcxproj trunk/Installer/InstallerPreReq.sln trunk/Installer/InstallerWix.sln trunk/Installer/Installers/MapGuide/Lang/MapGuide_en-US.wxl trunk/Installer/Installers/MapGuide/MapGuide.wixproj trunk/Installer/Installers/MapGuide/MapGuide.wxs trunk/Installer/Libraries/CS Map/CS Map.wixproj trunk/Installer/Libraries/CS Map/CSMap.wxs trunk/Installer/Libraries/CS Map/Lang/CSMap_en-US.wxl trunk/Installer/Libraries/MapGuide Server/FDO.wxs trunk/Installer/Libraries/MapGuide Server/InstallService.wxs trunk/Installer/Libraries/MapGuide Server/Lang/MapGuideServer_en-US.wxl trunk/Installer/Libraries/MapGuide Server/MapGuide Server.wixproj trunk/Installer/Libraries/MapGuide Server/MapGuideServer.wxs trunk/Installer/Libraries/MapGuide Web Extensions/Apache.wxs trunk/Installer/Libraries/MapGuide Web Extensions/IIS7.wxs trunk/Installer/Libraries/MapGuide Web Extensions/Lang/MapGuideWebExtensions_en-US.wxl trunk/Installer/Libraries/MapGuide Web Extensions/MapGuide Web Extensions.wixproj trunk/Installer/Libraries/MapGuide Web Extensions/MapGuideWebExtensions.wxs trunk/Installer/Libraries/MapGuide Web Extensions/Shortcuts.wxs trunk/Installer/build.bat Log: Update Windows installer to target Wix 6.x. Remove paraffin (Wix 6.x supports native file harvesting) and remove 32-bit targets on some projects. Index: trunk/Installer =================================================================== --- trunk/Installer 2026-09-21 12:39:45 UTC (rev 10216) +++ trunk/Installer 2026-09-21 12:56:43 UTC (rev 10217) Property changes on: trunk/Installer ___________________________________________________________________ Modified: svn:ignore ## -3,3 +3,4 ## *.ncb *.cache ipch +.vs Modified: svn:mergeinfo ## -1,6 +1,7 ## /branches/2.4/Installer:6987-6988 /branches/3.0/Installer:8611,8688 /branches/3.1/Installer:9025,9325,9327-9328,9330,9373,9427,9429,9454 +/sandbox/jng/installer_wix6:10207-10216 /sandbox/jng/php56x_installer:8976-8978 /sandbox/jng/rfc155_installer:8873-8885 /trunk/Installer:8690-8872 \ No newline at end of property Modified: trunk/Installer/Custom/apache_actions/apache_actions.vcxproj =================================================================== --- trunk/Installer/Custom/apache_actions/apache_actions.vcxproj 2026-09-21 12:39:45 UTC (rev 10216) +++ trunk/Installer/Custom/apache_actions/apache_actions.vcxproj 2026-09-21 12:56:43 UTC (rev 10217) @@ -1,18 +1,10 @@ ? - - Debug - Win32 - Debug x64 - - Release - Win32 - Release x64 @@ -25,20 +17,11 @@ 10.0 - - DynamicLibrary - MultiByte - v142 - DynamicLibrary MultiByte v142 - - DynamicLibrary - v142 - DynamicLibrary v142 @@ -46,18 +29,10 @@ - - - - - - - - @@ -65,13 +40,7 @@ <_ProjectFileVersion>10.0.40219.1 - .\bin$(PlatformToolsetVersion)_$(Platform)\ - .\Release$(PlatformToolsetVersion)_$(Platform)\ - false false - .\Debug$(PlatformToolsetVersion)_$(Platform)\ - .\Debug$(PlatformToolsetVersion)_$(Platform)\ - true true @@ -82,54 +51,6 @@ .\Debug$(PlatformToolsetVersion)_$(Platform)\ .\Debug$(PlatformToolsetVersion)_$(Platform)\ - - - NDEBUG;%(PreprocessorDefinitions) - true - true - Win32 - .\../bin/apache_actions.tlb - - - - - MaxSpeed - OnlyExplicitInline - WIN32;NDEBUG;_WINDOWS;APACHE_ACTIONS_EXPORTS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) - true - MultiThreaded - true - Use - stdafx.h - .\Release$(PlatformToolsetVersion)_$(Platform)\apache_actions.pch - - - .\Release$(PlatformToolsetVersion)_$(Platform)\ - .\Release$(PlatformToolsetVersion)_$(Platform)\ - Level3 - true - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - msi.lib;%(AdditionalDependencies) - $(OutDir)$(ProjectName).dll - true - .\apache_actions.def - .\bin$(PlatformToolsetVersion)_$(Platform)\apache_actions.pdb - false - - - .\bin$(PlatformToolsetVersion)_$(Platform)\apache_actions.lib - MachineX86 - - - true - .\../bin/apache_actions.bsc - - NDEBUG;%(PreprocessorDefinitions) @@ -176,54 +97,6 @@ .\../bin/apache_actions.bsc - - - _DEBUG;%(PreprocessorDefinitions) - true - true - Win32 - .\Debug/apache_actions.tlb - - - - - Disabled - WIN32;_DEBUG;_WINDOWS;_USRDLL;APACHE_ACTIONS_EXPORTS;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebug - Use - stdafx.h - .\Debug$(PlatformToolsetVersion)_$(Platform)\apache_actions.pch - .\Debug$(PlatformToolsetVersion)_$(Platform)\ - .\Debug$(PlatformToolsetVersion)_$(Platform)\ - .\Debug$(PlatformToolsetVersion)_$(Platform)\ - Level3 - true - EditAndContinue - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - odbc32.lib;odbccp32.lib;msi.lib;%(AdditionalDependencies) - .\Debug$(PlatformToolsetVersion)_$(Platform)\apache_actions.dll - true - .\apache_actions.def - true - .\Debug$(PlatformToolsetVersion)_$(Platform)\apache_actions.pdb - false - - - .\Debug$(PlatformToolsetVersion)_$(Platform)\apache_actions.lib - MachineX86 - - - true - .\Debug/apache_actions.bsc - - _DEBUG;%(PreprocessorDefinitions) @@ -271,17 +144,12 @@ - %(PreprocessorDefinitions) %(PreprocessorDefinitions) - %(PreprocessorDefinitions) %(PreprocessorDefinitions) - %(PreprocessorDefinitions) %(PreprocessorDefinitions) - %(PreprocessorDefinitions) %(PreprocessorDefinitions) - Create Create Modified: trunk/Installer/FdoRegUtil/FdoRegUtil.vcxproj =================================================================== --- trunk/Installer/FdoRegUtil/FdoRegUtil.vcxproj 2026-09-21 12:39:45 UTC (rev 10216) +++ trunk/Installer/FdoRegUtil/FdoRegUtil.vcxproj 2026-09-21 12:56:43 UTC (rev 10217) @@ -1,18 +1,10 @@ ? - - Debug - Win32 - Debug x64 - - Release - Win32 - Release x64 @@ -21,21 +13,10 @@ {F671A5C4-A796-4CF4-A71F-97B0265B4FBE} FdoRegUtil - Win32Proj + ConsoleApplication 10.0 - - Application - Unicode - true - v142 - - - Application - Unicode - v142 - Application Unicode @@ -50,12 +31,6 @@ - - - - - - @@ -65,39 +40,13 @@ <_ProjectFileVersion>10.0.40219.1 - .\Debug\ - .\Debug\ - true .\Debug64\ .\Debug64\ true - .\Release\ - .\Release\ - false .\Release64\ .\Release64\ false - - - Disabled - ..\..\MgDev\Oem\Fdo\Inc;%(AdditionalIncludeDirectories) - WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Use - Level3 - EditAndContinue - - - FDO.lib;FDOCommon.lib;%(AdditionalDependencies) - ..\..\MgDev\Oem\Fdo\Lib;%(AdditionalLibraryDirectories) - true - Console - MachineX86 - - X64 @@ -121,28 +70,6 @@ MachineX64 - - - MaxSpeed - true - ..\..\MgDev\Oem\Fdo\Inc;%(AdditionalIncludeDirectories) - WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - MultiThreadedDLL - true - Use - Level3 - ProgramDatabase - - - FDO.lib;FDOCommon.lib;%(AdditionalDependencies) - ..\..\MgDev\Oem\Fdo\Lib;%(AdditionalLibraryDirectories) - true - Console - true - true - MachineX86 - - X64 @@ -171,9 +98,7 @@ - Create Create - Create Create Deleted: trunk/Installer/Features.xml =================================================================== --- trunk/Installer/Features.xml 2026-09-21 12:39:45 UTC (rev 10216) +++ trunk/Installer/Features.xml 2026-09-21 12:56:43 UTC (rev 10217) @@ -1,13 +0,0 @@ -? - - - - - - - - - - - - \ No newline at end of file Modified: trunk/Installer/InstallerPreReq.sln =================================================================== --- trunk/Installer/InstallerPreReq.sln 2026-09-21 12:39:45 UTC (rev 10216) +++ trunk/Installer/InstallerPreReq.sln 2026-09-21 12:56:43 UTC (rev 10217) @@ -8,26 +8,16 @@ EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Win32 = Debug|Win32 Debug|x64 = Debug|x64 - Release|Win32 = Release|Win32 Release|x64 = Release|x64 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution - {03FD713E-15EB-453E-AFDF-21F8DB45C11E}.Debug|Win32.ActiveCfg = Debug|Win32 - {03FD713E-15EB-453E-AFDF-21F8DB45C11E}.Debug|Win32.Build.0 = Debug|Win32 - {03FD713E-15EB-453E-AFDF-21F8DB45C11E}.Debug|x64.ActiveCfg = Debug|Win32 - {03FD713E-15EB-453E-AFDF-21F8DB45C11E}.Debug|x64.Build.0 = Debug|Win32 - {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}.Debug|x64.ActiveCfg = Debug|x64 + {03FD713E-15EB-453E-AFDF-21F8DB45C11E}.Debug|x64.Build.0 = Debug|x64 {03FD713E-15EB-453E-AFDF-21F8DB45C11E}.Release|x64.ActiveCfg = Release|x64 {03FD713E-15EB-453E-AFDF-21F8DB45C11E}.Release|x64.Build.0 = Release|x64 - {F671A5C4-A796-4CF4-A71F-97B0265B4FBE}.Debug|Win32.ActiveCfg = Debug|Win32 - {F671A5C4-A796-4CF4-A71F-97B0265B4FBE}.Debug|Win32.Build.0 = Debug|Win32 {F671A5C4-A796-4CF4-A71F-97B0265B4FBE}.Debug|x64.ActiveCfg = Debug|x64 {F671A5C4-A796-4CF4-A71F-97B0265B4FBE}.Debug|x64.Build.0 = Debug|x64 - {F671A5C4-A796-4CF4-A71F-97B0265B4FBE}.Release|Win32.ActiveCfg = Release|Win32 - {F671A5C4-A796-4CF4-A71F-97B0265B4FBE}.Release|Win32.Build.0 = Release|Win32 {F671A5C4-A796-4CF4-A71F-97B0265B4FBE}.Release|x64.ActiveCfg = Release|x64 {F671A5C4-A796-4CF4-A71F-97B0265B4FBE}.Release|x64.Build.0 = Release|x64 EndGlobalSection Modified: trunk/Installer/InstallerWix.sln =================================================================== --- trunk/Installer/InstallerWix.sln 2026-09-21 12:39:45 UTC (rev 10216) +++ trunk/Installer/InstallerWix.sln 2026-09-21 12:56:43 UTC (rev 10217) @@ -11,39 +11,25 @@ Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|x64 = Debug|x64 - Debug|x86 = Debug|x86 Release|x64 = Release|x64 - Release|x86 = Release|x86 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution - {01313DB9-2AAF-4791-9B81-69BCE3194531}.Debug|x64.ActiveCfg = Debug|x86 - {01313DB9-2AAF-4791-9B81-69BCE3194531}.Debug|x86.ActiveCfg = Debug|x86 - {01313DB9-2AAF-4791-9B81-69BCE3194531}.Debug|x86.Build.0 = Debug|x86 - {01313DB9-2AAF-4791-9B81-69BCE3194531}.Release|x64.ActiveCfg = Release|x86 - {01313DB9-2AAF-4791-9B81-69BCE3194531}.Release|x64.Build.0 = Release|x86 - {01313DB9-2AAF-4791-9B81-69BCE3194531}.Release|x86.ActiveCfg = Release|x86 - {01313DB9-2AAF-4791-9B81-69BCE3194531}.Release|x86.Build.0 = Release|x86 - {715E2D88-E822-4A9A-A5A2-DBB71CD9B320}.Debug|x64.ActiveCfg = Debug|x86 - {715E2D88-E822-4A9A-A5A2-DBB71CD9B320}.Debug|x86.ActiveCfg = Debug|x86 - {715E2D88-E822-4A9A-A5A2-DBB71CD9B320}.Debug|x86.Build.0 = Debug|x86 - {715E2D88-E822-4A9A-A5A2-DBB71CD9B320}.Release|x64.ActiveCfg = Release|x86 - {715E2D88-E822-4A9A-A5A2-DBB71CD9B320}.Release|x64.Build.0 = Release|x86 - {715E2D88-E822-4A9A-A5A2-DBB71CD9B320}.Release|x86.ActiveCfg = Release|x86 - {715E2D88-E822-4A9A-A5A2-DBB71CD9B320}.Release|x86.Build.0 = Release|x86 - {D41D53C4-433E-47B5-B663-E79B5569EE22}.Debug|x64.ActiveCfg = Debug|x86 - {D41D53C4-433E-47B5-B663-E79B5569EE22}.Debug|x86.ActiveCfg = Debug|x86 - {D41D53C4-433E-47B5-B663-E79B5569EE22}.Debug|x86.Build.0 = Debug|x86 - {D41D53C4-433E-47B5-B663-E79B5569EE22}.Release|x64.ActiveCfg = Release|x86 - {D41D53C4-433E-47B5-B663-E79B5569EE22}.Release|x64.Build.0 = Release|x86 - {D41D53C4-433E-47B5-B663-E79B5569EE22}.Release|x86.ActiveCfg = Release|x86 - {D41D53C4-433E-47B5-B663-E79B5569EE22}.Release|x86.Build.0 = Release|x86 - {12C62F60-6F52-4112-84AB-0FA8ED44EE77}.Debug|x64.ActiveCfg = Debug|x86 - {12C62F60-6F52-4112-84AB-0FA8ED44EE77}.Debug|x86.ActiveCfg = Debug|x86 - {12C62F60-6F52-4112-84AB-0FA8ED44EE77}.Debug|x86.Build.0 = Debug|x86 - {12C62F60-6F52-4112-84AB-0FA8ED44EE77}.Release|x64.ActiveCfg = Release|x86 - {12C62F60-6F52-4112-84AB-0FA8ED44EE77}.Release|x64.Build.0 = Release|x86 - {12C62F60-6F52-4112-84AB-0FA8ED44EE77}.Release|x86.ActiveCfg = Release|x86 - {12C62F60-6F52-4112-84AB-0FA8ED44EE77}.Release|x86.Build.0 = Release|x86 + {01313DB9-2AAF-4791-9B81-69BCE3194531}.Debug|x64.ActiveCfg = Debug|x64 + {01313DB9-2AAF-4791-9B81-69BCE3194531}.Debug|x64.Build.0 = Debug|x64 + {01313DB9-2AAF-4791-9B81-69BCE3194531}.Release|x64.ActiveCfg = Release|x64 + {01313DB9-2AAF-4791-9B81-69BCE3194531}.Release|x64.Build.0 = Release|x64 + {715E2D88-E822-4A9A-A5A2-DBB71CD9B320}.Debug|x64.ActiveCfg = Debug|x64 + {715E2D88-E822-4A9A-A5A2-DBB71CD9B320}.Debug|x64.Build.0 = Debug|x64 + {715E2D88-E822-4A9A-A5A2-DBB71CD9B320}.Release|x64.ActiveCfg = Release|x64 + {715E2D88-E822-4A9A-A5A2-DBB71CD9B320}.Release|x64.Build.0 = Release|x64 + {D41D53C4-433E-47B5-B663-E79B5569EE22}.Debug|x64.ActiveCfg = Debug|x64 + {D41D53C4-433E-47B5-B663-E79B5569EE22}.Debug|x64.Build.0 = Debug|x64 + {D41D53C4-433E-47B5-B663-E79B5569EE22}.Release|x64.ActiveCfg = Release|x64 + {D41D53C4-433E-47B5-B663-E79B5569EE22}.Release|x64.Build.0 = Release|x64 + {12C62F60-6F52-4112-84AB-0FA8ED44EE77}.Debug|x64.ActiveCfg = Debug|x64 + {12C62F60-6F52-4112-84AB-0FA8ED44EE77}.Debug|x64.Build.0 = Debug|x64 + {12C62F60-6F52-4112-84AB-0FA8ED44EE77}.Release|x64.ActiveCfg = Release|x64 + {12C62F60-6F52-4112-84AB-0FA8ED44EE77}.Release|x64.Build.0 = Release|x64 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE Modified: trunk/Installer/Installers/MapGuide/Lang/MapGuide_en-US.wxl =================================================================== --- trunk/Installer/Installers/MapGuide/Lang/MapGuide_en-US.wxl 2026-09-21 12:39:45 UTC (rev 10216) +++ trunk/Installer/Installers/MapGuide/Lang/MapGuide_en-US.wxl 2026-09-21 12:56:43 UTC (rev 10217) @@ -1,149 +1,148 @@ - - +? - 1033 - MapGuide Open Source 2.4 - Open Source Geospatial Foundation + + + - [ProductName] Setup + - MapGuide - MapGuide Install Location + + - Next - Back - Cancel + + + - Disabled Features - Some features will not be available - IIS is not installed, so it will not be available as an installation choice. - The .NET Framework 4.0 was not found, so the .NET Web Extensions for IIS will not be available - If you want to use these features, click on cancel and correct the problem before proceeding with installation + + + + + - FastCGI is required - FastCGI needs to be installed - MapGuide IIS Configuration requires FastCGI to be installed on this system - You can follow the link below for more information on how to enable FastCGI - http://www.iis.net/fastcgi/configuration - You can ignore this message if FastCGI for IIS is already enabled. Otherwise you must cancel this installation and enable FastCGI first + + + + + + - Server Port Configuration - Set up the listening ports for MapGuide Server - MapGuide Server will be installed using the following port numbers. The Server and Web Tier configuration files will be set to use the specified port numbers below. - Admin Connection Port - Client Connection Port - Site Connection Port + + + + + + - Select configuration type - Select the type of web server configuration you want - Bundled Configuration - IIS Configuration - Manual Configuration - Install and configure Apache, PHP, and Tomcat. - Install PHP and auto-configure IIS. - Manually install and configure MapGuide. + + + + + + + + - Bundled Configuration Settings - Set up the development environment - Web Server Port Number - Development Environment - Virtual Directory Name + + + + + - IIS Configuration Settings - Set up the development environment - Development Environment - Virtual Directory Name + + + + - IIS 6.0 Configuration - Configure IIS 6.0 Settings - Install Web Extensions to the following website - Create an application pool - An application pool allows MapGuide applications to be isolated from other applications running on the web server + + + + + - IIS not found - IIS not found - IIS could not be found on your system. Please go back and choose a different web configuration or install IIS. + + + - Server IP address - Enter the MapGuide Server site server IP address. - Enter the MapGuide Server site server IP address: - The site server IP address defaults to localhost (127.0.0.1) + + + + - Setting values for httpd.conf - Setting values for php.ini - Installing Apache Service - Installing Tomcat Service - Installing MapGuide Service - Removing MapGuide Service - Removing Apache Service - Removing Tomcat Service + + + + + + + + - Unlocking site handler config - Creating IIS application pool - Creating FastCgi application mapping - Setting Application Pool properties - Creating mapguide virtual dir - Applying compatibility settings for selection XML to work - Creating PHP handler mapping - Creating mapagent virtual dir - Setting access policy for mapagent virtual dir - Creating handler mapping for mapagent virtual dir - Enabling mapagent ISAPI extension - Assigning application pool to mapguide virtual dir - Assigning application pool to mapagent virtual dir - Unlocking http errors config - Unlocking http errors config for web site - Unlocking http errors config for mapguide virtual dir - Resetting 401 handler - Adding JSON mime type - Creating mapviewerajax virtual dir to point to mapviewerphp - Setting default document for mapviewerajax virtual dir - Setting application pool for mapviewerajax - Creating mapviewerajax virtual dir to point to mapviewernet - Setting default document for mapviewerajax virtual dir - Setting application pool for mapviewerajax - Creating mapviewernet virtual dir - Setting default document for mapviewernet virtual dir - Setting application pool for mapviewernet virtual dir - Creating dotnetviewersample virtual dir - Setting default document for dotnetviewersample virtual dir - Setting application pool for dotnetviewersample virtual dir - Creating dotnetsamples virtual dir - Setting default document for dotnetsamples virtual dir - Setting application pool for dotnetsamples virtual dir - Clearing mapagent restrictions - Removing mapviewerajax virtual dir - Removing mapagent virtual dir - Removing mapguide virtual dir - Deleting application pool - Registering ASP.net - Registering FDO Provider: OSGeo.ArcSDE - Registering FDO Provider: OSGeo.SDF - Registering FDO Provider: OSGeo.SHP - Registering FDO Provider: OSGeo.WFS - Registering FDO Provider: OSGeo.WMS - Registering FDO Provider: OSGeo.ODBC - Registering FDO Provider: OSGeo.MySQL - Registering FDO Provider: OSGeo.Gdal - Registering FDO Provider: OSGeo.OGR - Registering FDO Provider: OSGeo.PostgreSQL - Registering FDO Provider: King.Oracle - Registering FDO Provider: OSGeo.SQLServerSpatial - Registering FDO Provider: OSGeo.SQLite - Un-registering FDO Provider: OSGeo.ArcSDE - Un-registering FDO Provider: OSGeo.SDF - Un-registering FDO Provider: OSGeo.SHP - Un-registering FDO Provider: OSGeo.WFS - Un-registering FDO Provider: OSGeo.WMS - Un-registering FDO Provider: OSGeo.ODBC - Un-registering FDO Provider: OSGeo.MySQL - Un-registering FDO Provider: OSGeo.Gdal - Un-registering FDO Provider: OSGeo.OGR - Un-registering FDO Provider: OSGeo.PostgreSQL - Un-registering FDO Provider: King.Oracle - Un-registering FDO Provider: OSGeo.SQLServerSpatial - Un-registering FDO Provider: OSGeo.SQLite + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file Modified: trunk/Installer/Installers/MapGuide/MapGuide.wixproj =================================================================== --- trunk/Installer/Installers/MapGuide/MapGuide.wixproj 2026-09-21 12:39:45 UTC (rev 10216) +++ trunk/Installer/Installers/MapGuide/MapGuide.wixproj 2026-09-21 12:56:43 UTC (rev 10217) @@ -1,48 +1,30 @@ ? - + - Debug - x86 - 3.0 - {12c62f60-6f52-4112-84ab-0fa8ed44ee77} - 2.0 - MapGuideOpenSource + Debug + x64 + false + MapGuideOpenSource Package - $(MSBuildExtensionsPath)\Microsoft\WiX\v3.x\Wix.targets MapGuide - en-US - MapGuide Open Source 2.1.0 Ux - 2.1.0.0 - Software\OSGeo\MapGuide - $(MSBuildProjectDirectory)\..\..\..\MgDev\$(Configuration) + en-US + MapGuide Open Source 2.1.0 Ux + 2.1.0.0 + Software\OSGeo\MapGuide + $(MSBuildProjectDirectory)\..\..\..\MgDev\$(Configuration) + $([System.String]::Copy('$(MgSource)').Replace('"', '')) - - bin\$(Configuration)\ - obj\$(Configuration)\ - Debug;MgTitle=$(MgTitle);MgVersion=$(MgVersion);MgRegKey=$(MgRegKey);MgSource=$(MgSource);MgPlatform=$(MgPlatform);Have_ArcSde=$(Have_ArcSde) + + Debug;MgTitle=$(MgTitle);MgVersion=$(MgVersion);MgRegKey=$(MgRegKey);MgSource=$(MgSourceSanitized);MgPlatform=$(Platform);Have_ArcSde=$(Have_ArcSde) $(MgCulture) ICE47 - - - ..\..\Output\ - obj\$(Configuration)\ - False - True - MgTitle=$(MgTitle);MgVersion=$(MgVersion);MgRegKey=$(MgRegKey);MgSource=$(MgSource);MgPlatform=$(MgPlatform);Have_ArcSde=$(Have_ArcSde) - $(MgCulture) - ICE47 - - - Debug;MgTitle=$(MgTitle);MgVersion=$(MgVersion);MgRegKey=$(MgRegKey);MgSource=$(MgSource);MgPlatform=$(MgPlatform);Have_ArcSde=$(Have_ArcSde) - $(MgCulture) - ICE47 bin\$(Platform)\$(Configuration)\ obj\$(Platform)\$(Configuration)\ - + False True - MgTitle=$(MgTitle);MgVersion=$(MgVersion);MgRegKey=$(MgRegKey);MgSource=$(MgSource);MgPlatform=$(MgPlatform);Have_ArcSde=$(Have_ArcSde) + MgTitle=$(MgTitle);MgVersion=$(MgVersion);MgRegKey=$(MgRegKey);MgSource=$(MgSourceSanitized);MgPlatform=$(Platform);Have_ArcSde=$(Have_ArcSde) $(MgCulture) ICE47 bin\$(Platform)\$(Configuration)\ @@ -57,10 +39,6 @@ - - - - CS Map {01313db9-2aaf-4791-9b81-69bce3194531} @@ -81,30 +59,9 @@ - - $(WixExtDir)\WixUtilExtension.dll - WixUtilExtension - - - $(WixExtDir)\WixUIExtension.dll - WixUIExtension - - - $(WixExtDir)\WixNetFxExtension.dll - WixNetFxExtension - - - $(WixExtDir)\WixIIsExtension.dll - WixIIsExtension - + + + + - - \ No newline at end of file Modified: trunk/Installer/Installers/MapGuide/MapGuide.wxs =================================================================== --- trunk/Installer/Installers/MapGuide/MapGuide.wxs 2026-09-21 12:39:45 UTC (rev 10216) +++ trunk/Installer/Installers/MapGuide/MapGuide.wxs 2026-09-21 12:56:43 UTC (rev 10217) @@ -1,48 +1,19 @@ - - + - - - - - - - + + + + + - - - - - + - + @@ -50,13 +21,7 @@ - + @@ -77,22 +42,10 @@ --> - + - + @@ -100,50 +53,22 @@ - 1 - - + - - - - + - - - - - - - - - - - - - - - - - - - - + + + - + @@ -197,12 +122,8 @@ - - NOT IISVERSIONMAJOR="#0" - - - NETFRAMEWORK40FULL - + + @@ -444,38 +365,38 @@ - 1 - "1"]]> + + - 1 + - 1 - LicenseAccepted="1" - LicenseAccepted="1" AND (IISVERSIONMAJOR="#0" OR (NOT NETFRAMEWORK40FULL)) + + + - 1 - 1 - 1 + + + - NOT IISVERSIONMAJOR="#0" - IISVERSIONMAJOR="#0" - 1 - 1 + + + + - 1 + - 1 + - 1 - 1 - 1 + + + - (MGWEB_CONFIG="APACHE") OR (MGWEB_CONFIG="IIS" AND NOT NETFRAMEWORK40FULL) - MGWEB_CONFIG="APACHE" - MGWEB_CONFIG="IIS" + + + - MGWEB_CONFIG="IIS" - MGWEB_CONFIG="IIS" - MGWEB_CONFIG="IIS" - MGWEB_CONFIG="IIS" - MGWEB_CONFIG="IIS" - MGWEB_CONFIG="IIS" - MGWEB_CONFIG="IIS" - MGWEB_CONFIG="MANUAL" - 1 - 1 + + + + + + + + + + - MGWEB_CONFIG="IIS" AND NETFRAMEWORK40FULL - MGWEB_CONFIG="IIS" AND (NOT IISVERSIONMAJOR="#0") AND (NOT NETFRAMEWORK40FULL) - 1 - 1 + + + + - 1 + - 1 + - 1 - 1 - 1 - 1 + + + + - MGWEB_CONFIG="APACHE" - MGWEB_CONFIG="APACHE" - MGWEB_CONFIG="APACHE" - MGWEB_CONFIG="APACHE" - MGWEB_CONFIG="MANUAL" - 1 - 1 + + + + + + + - 1 + - APACHE_API_TYPE="JAVA" - APACHE_API_TYPE="JAVA" - APACHE_API_TYPE="JAVA" - APACHE_API_TYPE="JAVA" - APACHE_API_TYPE="JAVA" - APACHE_API_TYPE="JAVA" - APACHE_API_TYPE="JAVA" - APACHE_API_TYPE="JAVA" + + + + + + + + - APACHE_API_TYPE="PHP" - APACHE_API_TYPE="PHP" - APACHE_API_TYPE="PHP" - APACHE_API_TYPE="PHP" - APACHE_API_TYPE="PHP" - APACHE_API_TYPE="PHP" - APACHE_API_TYPE="PHP" - APACHE_API_TYPE="PHP" + + + + + + + + - IISVERSIONMAJOR="#0" - IISVERSIONMAJOR="#0" - NOT IISVERSIONMAJOR="#0" - NOT IISVERSIONMAJOR="#0" - 1 + + + + + - (NOT IISVERSIONMAJOR="#0") + - IIS_API_TYPE="PHP" - IIS_API_TYPE="PHP" - IIS_API_TYPE="PHP" - IIS_API_TYPE="PHP" + + + + - IIS_API_TYPE="DOTNET" - IIS_API_TYPE="DOTNET" - IIS_API_TYPE="DOTNET" - IIS_API_TYPE="DOTNET" + + + + - 1 - 1 - 1 + + + - 1 - NETFRAMEWORK40FULL - NOT NETFRAMEWORK40FULL - NOT NETFRAMEWORK40FULL - 1 + + + + + - 1 - (NOT IISVERSIONMAJOR="#0") AND MGWEB_CONFIG="IIS" - MGWEB_CONFIG="APACHE" - (NOT IISVERSIONMAJOR="#0") AND ( (IISVERSIONMAJOR="#5" AND (NOT NETFRAMEWORK40FULL)) OR (MGWEB_CONFIG="MANUAL" )) - (NOT IISVERSIONMAJOR="#0") AND ( (IISVERSIONMAJOR="#5" AND (NOT NETFRAMEWORK40FULL) AND MGWEB_CONFIG="IIS" ) OR (MGWEB_CONFIG="MANUAL" )) - IISVERSIONMAJOR="#0" - IISVERSIONMAJOR="#0" AND MGWEB_CONFIG="MANUAL" - 1 + + + + + + + + - 1 - 1 - 1 - "1"]]> - - 1 - 1 + + + + + + + - Installed - NOT Installed - 1 + + + - NOT Installed OR WixUI_InstallMode = "Change" - Installed + + - 1 + - 1 - 1 - 1 - 1 + + + + - 1 + - !(loc.UpdateApacheConfig) - !(loc.UpdatePhpIni) - !(loc.InstallApacheServiceCA) - !(loc.InstallTomcatServiceCA) - !(loc.MgServerInstallCA) - !(loc.MgServerUninstallCA) - !(loc.RemoveApacheServiceCA) - !(loc.RemoveTomcatServiceCA) - !(loc.MapGuideIIS7_I_UnlockSiteHandlers) - !(loc.MapGuideIIS7_I_CreateMapGuideApp) - !(loc.MapGuideIIS7_I_SelectXmlCompat) - !(loc.MapGuideIIS7_I_CreatePhpScriptMapping) - !(loc.MapGuideIIS7_I_CreateMapAgentApp) - !(loc.MapGuideIIS7_I_SetMapAgentHandlerAccess) - !(loc.MapGuideIIS7_I_CreateMapAgentScriptHandling) - !(loc.MapGuideIIS7_I_EnableMapAgentExtension) - !(loc.MapGuideIIS7_I_AssignMapGuideAppPool) - !(loc.MapGuideIIS7_I_AssignMapAgentAppPool) - !(loc.MapGuideIIS7_I_UnlockHttpErrorsMain) - !(loc.MapGuideIIS7_I_UnlockHttpErrorsWebSite) - !(loc.MapGuideIIS7_I_UnlockHttpErrorsMapGuide) - !(loc.MapGuideIIS7_I_Reset401Handler) - !(loc.MapGuideIIS7_I_AddJsonMime) - !(loc.MapGuideIIS7_I_CreateViewerPhp) - !(loc.MapGuideIIS7_I_SetViewerDocPhp) - !(loc.MapGuideIIS7_I_AssignViewerAppPoolPhp) - !(loc.MapGuideIIS7_I_CreateViewerNet) - !(loc.MapGuideIIS7_I_SetViewerDocNet) - !(loc.MapGuideIIS7_I_AssignViewerAppPoolNet) - !(loc.MapGuideIIS7_I_CreateMapViewerNet) - !(loc.MapGuideIIS7_I_SetMapViewerDocNet) - !(loc.MapGuideIIS7_I_AssignMapViewerAppPoolNet) - !(loc.MapGuideIIS7_I_CreateViewerSampleNet) - !(loc.MapGuideIIS7_I_SetViewerDocViewerSampleNet) - !(loc.MapGuideIIS7_I_AssignViewerAppPoolViewerSampleNet) - !(loc.MapGuideIIS7_I_CreateViewerDevGuideSamplesNet) - !(loc.MapGuideIIS7_I_SetViewerDocDevGuideSamplesNet) - !(loc.MapGuideIIS7_I_AssignViewerAppPoolDevGuideSamplesNet) - !(loc.MapGuideIIS7_U_ClearMapAgentRestriction) - !(loc.MapGuideIIS7_U_RemoveViewer) - !(loc.MapGuideIIS7_U_RemoveMapAgent) - !(loc.MapGuideIIS7_U_RemoveMapGuide) - !(loc.MapGuideIIS7_U_DeleteAppPool) - !(loc.AspNetRegIIS) - !(loc.FdoRegArcSde) - !(loc.FdoRegSdf) - !(loc.FdoRegShp) - !(loc.FdoRegWfs) - !(loc.FdoRegWms) - !(loc.FdoRegOdbc) - !(loc.FdoRegMySql) - !(loc.FdoRegGdal) - !(loc.FdoRegOgr) - !(loc.FdoRegPostgreSql) - !(loc.FdoRegOracle) - !(loc.FdoRegSqlServer) - !(loc.FdoRegSlt) - !(loc.FdoUnRegArcSde) - !(loc.FdoUnRegSdf) - !(loc.FdoUnRegShp) - !(loc.FdoUnRegWfs) - !(loc.FdoUnRegWms) - !(loc.FdoUnRegOdbc) - !(loc.FdoUnRegMySql) - !(loc.FdoUnRegGdal) - !(loc.FdoUnRegOgr) - !(loc.FdoUnRegPostgreSql) - !(loc.FdoUnRegOracle) - !(loc.FdoUnRegSqlServer) - !(loc.FdoUnRegSlt) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -707,210 +628,198 @@ - MGWEB_CONFIG="IIS" AND (NOT IISVERSIONMAJOR="#0") AND &WebExtensionsFeature>2 - MGWEB_CONFIG="IIS" AND (NOT IISVERSIONMAJOR="#0") AND &WebExtensionsFeature>2 - MGWEB_CONFIG="IIS" AND (NOT IISVERSIONMAJOR="#0") AND &WebExtensionsFeature>2 - MGWEB_CONFIG="IIS" AND (NOT IISVERSIONMAJOR="#0") AND &WebExtensionsFeature>2 + + + + - MGWEB_CONFIG="IIS" AND (NOT IISVERSIONMAJOR="#0") AND &WebExtensionsFeature>2 - - MGWEB_CONFIG="IIS" AND (NOT IISVERSIONMAJOR="#0") AND &WebExtensionsFeature>2 - MGWEB_CONFIG="IIS" AND (NOT IISVERSIONMAJOR="#0") AND &WebExtensionsFeature>2 - + + + + + - MGWEB_CONFIG="IIS" AND (NOT IISVERSIONMAJOR="#0") AND &WebExtensionsFeature>2 - MGWEB_CONFIG="IIS" AND (NOT IISVERSIONMAJOR="#0") AND &WebExtensionsFeature>2 - MGWEB_CONFIG="IIS" AND (NOT IISVERSIONMAJOR="#0") AND &WebExtensionsFeature>2 - MGWEB_CONFIG="IIS" AND (NOT IISVERSIONMAJOR="#0") AND &WebExtensionsFeature>2 - MGWEB_CONFIG="IIS" AND (NOT IISVERSIONMAJOR="#0") AND &WebExtensionsFeature>2 - MGWEB_CONFIG="IIS" AND (NOT IISVERSIONMAJOR="#0") AND &WebExtensionsFeature>2 - MGWEB_CONFIG="IIS" AND (NOT IISVERSIONMAJOR="#0") AND &WebExtensionsFeature>2 - MGWEB_CONFIG="IIS" AND (NOT IISVERSIONMAJOR="#0") AND &WebExtensionsFeature>2 - MGWEB_CONFIG="IIS" AND (NOT IISVERSIONMAJOR="#0") AND &WebExtensionsFeature>2 - MGWEB_CONFIG="IIS" AND (NOT IISVERSIONMAJOR="#0") AND &WebExtensionsFeature>2 - MGWEB_CONFIG="IIS" AND (NOT IISVERSIONMAJOR="#0") AND &WebExtensionsFeature>2 - MGWEB_CONFIG="IIS" AND (NOT IISVERSIONMAJOR="#0") AND &WebExtensionsFeature>2 - MGWEB_CONFIG="IIS" AND (NOT IISVERSIONMAJOR="#0") AND &WebExtensionsFeature>2 - MGWEB_CONFIG="IIS" AND (NOT IISVERSIONMAJOR="#0") AND &WebExtensionsFeature>2 - MGWEB_CONFIG="IIS" AND (NOT IISVERSIONMAJOR="#0") AND &WebExtensionsFeature>2 + + + + + + + + + + + + + + + - MGWEB_CONFIG="IIS" AND IIS_API_TYPE="PHP" AND (NOT IISVERSIONMAJOR="#0") AND &WebExtensionsFeature>2 - MGWEB_CONFIG="IIS" AND IIS_API_TYPE="PHP" AND (NOT IISVERSIONMAJOR="#0") AND &WebExtensionsFeature>2 - MGWEB_CONFIG="IIS" AND IIS_API_TYPE="PHP" AND (NOT IISVERSIONMAJOR="#0") AND &WebExtensionsFeature>2 + + + - MGWEB_CONFIG="IIS" AND IIS_API_TYPE="DOTNET" AND (NOT IISVERSIONMAJOR="#0") AND &WebExtensionsFeature>2 - MGWEB_CONFIG="IIS" AND IIS_API_TYPE="DOTNET" AND (NOT IISVERSIONMAJOR="#0") AND &WebExtensionsFeature>2 - MGWEB_CONFIG="IIS" AND IIS_API_TYPE="DOTNET" AND (NOT IISVERSIONMAJOR="#0") AND &WebExtensionsFeature>2 + + + - MGWEB_CONFIG="IIS" AND IIS_API_TYPE="DOTNET" AND (NOT IISVERSIONMAJOR="#0") AND &WebExtensionsFeature>2 - MGWEB_CONFIG="IIS" AND IIS_API_TYPE="DOTNET" AND (NOT IISVERSIONMAJOR="#0") AND &WebExtensionsFeature>2 - MGWEB_CONFIG="IIS" AND IIS_API_TYPE="DOTNET" AND (NOT IISVERSIONMAJOR="#0") AND &WebExtensionsFeature>2 + + + - MGWEB_CONFIG="IIS" AND IIS_API_TYPE="DOTNET" AND (NOT IISVERSIONMAJOR="#0") AND &WebExtensionsFeature>2 AND &WebExtDotNetViewerSampleFeature>2 - MGWEB_CONFIG="IIS" AND IIS_API_TYPE="DOTNET" AND (NOT IISVERSIONMAJOR="#0") AND &WebExtensionsFeature>2 AND &WebExtDotNetViewerSampleFeature>2 - MGWEB_CONFIG="IIS" AND IIS_API_TYPE="DOTNET" AND (NOT IISVERSIONMAJOR="#0") AND &WebExtensionsFeature>2 AND &WebExtDotNetViewerSampleFeature>2 + + + - MGWEB_CONFIG="IIS" AND IIS_API_TYPE="DOTNET" AND (NOT IISVERSIONMAJOR="#0") AND &WebExtensionsFeature>2 AND &WebExtDotNetDevGuideSamplesFeature>2 - MGWEB_CONFIG="IIS" AND IIS_API_TYPE="DOTNET" AND (NOT IISVERSIONMAJOR="#0") AND &WebExtensionsFeature>2 AND &WebExtDotNetDevGuideSamplesFeature>2 - MGWEB_CONFIG="IIS" AND IIS_API_TYPE="DOTNET" AND (NOT IISVERSIONMAJOR="#0") AND &WebExtensionsFeature>2 AND &WebExtDotNetDevGuideSamplesFeature>2 + + + - MGWEB_CONFIG="IIS" AND (NOT IISVERSIONMAJOR="#0") AND &WebExtensionsFeature>2 - MGWEB_CONFIG="IIS" AND (NOT IISVERSIONMAJOR="#0") AND &WebExtensionsFeature>2 - MGWEB_CONFIG="IIS" AND (NOT IISVERSIONMAJOR="#0") AND &WebExtensionsFeature>2 + + + - MGWEB_CONFIG="IIS" AND (NOT IISVERSIONMAJOR="#0") AND &WebExtensionsFeature>2 - - MGWEB_CONFIG="IIS" AND (NOT IISVERSIONMAJOR="#0") AND &WebExtensionsFeature>2 - MGWEB_CONFIG="IIS" AND (NOT IISVERSIONMAJOR="#0") AND &WebExtensionsFeature>2 - + + + + + - MGWEB_CONFIG="IIS" AND (NOT IISVERSIONMAJOR="#0") AND &WebExtensionsFeature>2 - MGWEB_CONFIG="IIS" AND (NOT IISVERSIONMAJOR="#0") AND &WebExtensionsFeature>2 - MGWEB_CONFIG="IIS" AND (NOT IISVERSIONMAJOR="#0") AND &WebExtensionsFeature>2 - MGWEB_CONFIG="IIS" AND (NOT IISVERSIONMAJOR="#0") AND &WebExtensionsFeature>2 - MGWEB_CONFIG="IIS" AND (NOT IISVERSIONMAJOR="#0") AND &WebExtensionsFeature>2 - MGWEB_CONFIG="IIS" AND (NOT IISVERSIONMAJOR="#0") AND &WebExtensionsFeature>2 - MGWEB_CONFIG="IIS" AND (NOT IISVERSIONMAJOR="#0") AND &WebExtensionsFeature>2 - MGWEB_CONFIG="IIS" AND (NOT IISVERSIONMAJOR="#0") AND &WebExtensionsFeature>2 - MGWEB_CONFIG="IIS" AND (NOT IISVERSIONMAJOR="#0") AND &WebExtensionsFeature>2 - MGWEB_CONFIG="IIS" AND (NOT IISVERSIONMAJOR="#0") AND &WebExtensionsFeature>2 - MGWEB_CONFIG="IIS" AND (NOT IISVERSIONMAJOR="#0") AND &WebExtensionsFeature>2 - MGWEB_CONFIG="IIS" AND (NOT IISVERSIONMAJOR="#0") AND &WebExtensionsFeature>2 - MGWEB_CONFIG="IIS" AND (NOT IISVERSIONMAJOR="#0") AND &WebExtensionsFeature>2 - MGWEB_CONFIG="IIS" AND (NOT IISVERSIONMAJOR="#0") AND &WebExtensionsFeature>2 - MGWEB_CONFIG="IIS" AND (NOT IISVERSIONMAJOR="#0") AND &WebExtensionsFeature>2 + + + + + + + + + + + + + + + - MGWEB_CONFIG="IIS" AND IIS_API_TYPE="PHP" AND (NOT IISVERSIONMAJOR="#0") AND &WebExtensionsFeature>2 - MGWEB_CONFIG="IIS" AND IIS_API_TYPE="PHP" AND (NOT IISVERSIONMAJOR="#0") AND &WebExtensionsFeature>2 - MGWEB_CONFIG="IIS" AND IIS_API_TYPE="PHP" AND (NOT IISVERSIONMAJOR="#0") AND &WebExtensionsFeature>2 + + + - MGWEB_CONFIG="IIS" AND IIS_API_TYPE="DOTNET" AND (NOT IISVERSIONMAJOR="#0") AND &WebExtensionsFeature>2 - MGWEB_CONFIG="IIS" AND IIS_API_TYPE="DOTNET" AND (NOT IISVERSIONMAJOR="#0") AND &WebExtensionsFeature>2 - MGWEB_CONFIG="IIS" AND IIS_API_TYPE="DOTNET" AND (NOT IISVERSIONMAJOR="#0") AND &WebExtensionsFeature>2 + + + - MGWEB_CONFIG="IIS" AND IIS_API_TYPE="DOTNET" AND (NOT IISVERSIONMAJOR="#0") AND &WebExtensionsFeature>2 AND &WebExtMapViewerASPXFeature>2 - MGWEB_CONFIG="IIS" AND IIS_API_TYPE="DOTNET" AND (NOT IISVERSIONMAJOR="#0") AND &WebExtensionsFeature>2 AND &WebExtMapViewerASPXFeature>2 - MGWEB_CONFIG="IIS" AND IIS_API_TYPE="DOTNET" AND (NOT IISVERSIONMAJOR="#0") AND &WebExtensionsFeature>2 AND &WebExtMapViewerASPXFeature>2 + + + - MGWEB_CONFIG="IIS" AND IIS_API_TYPE="DOTNET" AND (NOT IISVERSIONMAJOR="#0") AND &WebExtensionsFeature>2 AND &WebExtDotNetViewerSampleFeature>2 - MGWEB_CONFIG="IIS" AND IIS_API_TYPE="DOTNET" AND (NOT IISVERSIONMAJOR="#0") AND &WebExtensionsFeature>2 AND &WebExtDotNetViewerSampleFeature>2 - MGWEB_CONFIG="IIS" AND IIS_API_TYPE="DOTNET" AND (NOT IISVERSIONMAJOR="#0") AND &WebExtensionsFeature>2 AND &WebExtDotNetViewerSampleFeature>2 + + + - MGWEB_CONFIG="IIS" AND IIS_API_TYPE="DOTNET" AND (NOT IISVERSIONMAJOR="#0") AND &WebExtensionsFeature>2 AND &WebExtDotNetDevGuideSamplesFeature>2 - MGWEB_CONFIG="IIS" AND IIS_API_TYPE="DOTNET" AND (NOT IISVERSIONMAJOR="#0") AND &WebExtensionsFeature>2 AND &WebExtDotNetDevGuideSamplesFeature>2 - MGWEB_CONFIG="IIS" AND IIS_API_TYPE="DOTNET" AND (NOT IISVERSIONMAJOR="#0") AND &WebExtensionsFeature>2 AND &WebExtDotNetDevGuideSamplesFeature>2 + + + - MGWEB_CONFIG="IIS" AND (NOT IISVERSIONMAJOR="#0") AND &WebExtensionsFeature=2 - MGWEB_CONFIG="IIS" AND (NOT IISVERSIONMAJOR="#0") AND &WebExtensionsFeature=2 - MGWEB_CONFIG="IIS" AND (NOT IISVERSIONMAJOR="#0") AND &WebExtensionsFeature=2 - MGWEB_CONFIG="IIS" AND (NOT IISVERSIONMAJOR="#0") AND &WebExtensionsFeature=2 - MGWEB_CONFIG="IIS" AND (NOT IISVERSIONMAJOR="#0") AND &WebExtensionsFeature=2 - MGWEB_CONFIG="IIS" AND (NOT IISVERSIONMAJOR="#0") AND &WebExtensionsFeature=2 - MGWEB_CONFIG="IIS" AND (NOT IISVERSIONMAJOR="#0") AND &WebExtensionsFeature=2 - MGWEB_CONFIG="IIS" AND (NOT IISVERSIONMAJOR="#0") AND &WebExtensionsFeature=2 - MGWEB_CONFIG="IIS" AND (NOT IISVERSIONMAJOR="#0") AND &WebExtensionsFeature=2 + + + + + + + + + - MGWEB_CONFIG="IIS" AND (NOT IISVERSIONMAJOR="#0") AND &WebExtensionsFeature=2 - MGWEB_CONFIG="IIS" AND (NOT IISVERSIONMAJOR="#0") AND &WebExtensionsFeature=2 - MGWEB_CONFIG="IIS" AND (NOT IISVERSIONMAJOR="#0") AND &WebExtensionsFeature=2 - MGWEB_CONFIG="IIS" AND (NOT IISVERSIONMAJOR="#0") AND &WebExtensionsFeature=2 - MGWEB_CONFIG="IIS" AND (NOT IISVERSIONMAJOR="#0") AND &WebExtensionsFeature=2 - MGWEB_CONFIG="IIS" AND (NOT IISVERSIONMAJOR="#0") AND &WebExtensionsFeature=2 - MGWEB_CONFIG="IIS" AND (NOT IISVERSIONMAJOR="#0") AND &WebExtensionsFeature=2 - MGWEB_CONFIG="IIS" AND (NOT IISVERSIONMAJOR="#0") AND &WebExtensionsFeature=2 + + + + + + + + - &FdoArcSdeProviderFeature>2 - &FdoSdfProviderFeature>2 - &FdoShpProviderFeature>2 - &FdoWfsProviderFeature>2 - &FdoWmsProviderFeature>2 - &FdoOdbcProviderFeature>2 - &FdoMySqlProviderFeature>2 - &FdoGdalProviderFeature>2 - &FdoOgrProviderFeature>2 - &FdoPostgreSqlProviderFeature>2 - &FdoKingOracleProviderFeature>2 - &FdoSqlServerSpatialProviderFeature>2 - &FdoSltProviderFeature>2 + + + + + + + + + + + + + - &FdoArcSdeProviderFeature>2 - &FdoSdfProviderFeature>2 - &FdoShpProviderFeature>2 - &FdoWfsProviderFeature>2 - &FdoWmsProviderFeature>2 - &FdoOdbcProviderFeature>2 - &FdoMySqlProviderFeature>2 - &FdoGdalProviderFeature>2 - &FdoOgrProviderFeature>2 - &FdoPostgreSqlProviderFeature>2 - &FdoKingOracleProviderFeature>2 - &FdoSqlServerSpatialProviderFeature>2 - &FdoSltProviderFeature>2 + + + + + + + + + + + + + - &FdoArcSdeProviderFeature=2 - &FdoSdfProviderFeature=2 - &FdoShpProviderFeature=2 - &FdoWfsProviderFeature=2 - &FdoWmsProviderFeature=2 - &FdoOdbcProviderFeature=2 - &FdoMySqlProviderFeature=2 - &FdoGdalProviderFeature=2 - &FdoOgrProviderFeature=2 - &FdoPostgreSqlProviderFeature=2 - &FdoKingOracleProviderFeature=2 - &FdoSqlServerSpatialProviderFeature=2 - &FdoSltProviderFeature=2 + + + + + + + + + + + + + - &FdoArcSdeProviderFeature=2 - &FdoSdfProviderFeature=2 - &FdoShpProviderFeature=2 - &FdoWfsProviderFeature=2 - &FdoWmsProviderFeature=2 - &FdoOdbcProviderFeature=2 - &FdoMySqlProviderFeature=2 - &FdoGdalProviderFeature=2 - &FdoOgrProviderFeature=2 - &FdoPostgreSqlProviderFeature=2 - &FdoKingOracleProviderFeature=2 - &FdoSqlServerSpatialProviderFeature=2 - &FdoSltProviderFeature=2 + + + + + + + + + + + + + - &WebExtPhpFeature>2 AND &WebExtApacheFeature>2 - &WebExtPhpFeature>2 AND &WebExtApacheFeature>2 - &WebExtPhpFeature>2 - &WebExtPhpFeature>2 - MGWEB_CONFIG="APACHE" AND &WebExtApacheFeature>2 - MGWEB_CONFIG="APACHE" AND &WebExtApacheFeature>2 + + + + + + - &ServerFeature>2 - &ServerFeature=2 - MGWEB_CONFIG="APACHE" AND &WebExtApacheFeature=2 + + + - + + + + + + + + + + + + + + + + + + + + + Modified: trunk/Installer/Libraries/CS Map/CS Map.wixproj =================================================================== --- trunk/Installer/Libraries/CS Map/CS Map.wixproj 2026-09-21 12:39:45 UTC (rev 10216) +++ trunk/Installer/Libraries/CS Map/CS Map.wixproj 2026-09-21 12:56:43 UTC (rev 10217) @@ -1,55 +1,28 @@ ? - + - Debug - x86 - 3.0 - {01313db9-2aaf-4791-9b81-69bce3194531} - 2.0 + Debug + x64 + false CS Map Library - $(MSBuildExtensionsPath)\Microsoft\WiX\v3.x\Wix.targets - SOFTWARE\OSGeo\MapGuide - $(MSBuildProjectDirectory)\..\..\..\MgDev\$(Configuration) + SOFTWARE\OSGeo\MapGuide + $(MSBuildProjectDirectory)\..\..\..\MgDev\$(Configuration) + $([System.String]::Copy('$(MgSource)').Replace('"', '')) - - bin\$(Configuration)\ - obj\$(Configuration)\ - Debug;MgRegKey=$(MgRegKey);MgSource=$(MgSource);MgPlatform=$(MgPlatform) - - - bin\$(Configuration)\ - obj\$(Configuration)\ - MgRegKey=$(MgRegKey);MgSource=$(MgSource);MgPlatform=$(MgPlatform) - - - Debug;MgRegKey=$(MgRegKey);MgSource=$(MgSource);MgPlatform=$(MgPlatform) + + Debug;MgRegKey=$(MgRegKey);MgSource=$(MgSourceSanitized);MgPlatform=$(Platform) bin\$(Platform)\$(Configuration)\ obj\$(Platform)\$(Configuration)\ - - MgRegKey=$(MgRegKey);MgSource=$(MgSource);MgPlatform=$(MgPlatform) + + MgRegKey=$(MgRegKey);MgSource=$(MgSourceSanitized);MgPlatform=$(Platform) bin\$(Platform)\$(Configuration)\ obj\$(Platform)\$(Configuration)\ - + - - - - - - - - \ No newline at end of file Modified: trunk/Installer/Libraries/CS Map/CSMap.wxs =================================================================== --- trunk/Installer/Libraries/CS Map/CSMap.wxs 2026-09-21 12:39:45 UTC (rev 10216) +++ trunk/Installer/Libraries/CS Map/CSMap.wxs 2026-09-21 12:56:43 UTC (rev 10217) @@ -1,37 +1,25 @@ - - + - + - - + + - + - + + - - + + - - - + + + Copied: trunk/Installer/Libraries/CS Map/HarvestFiles.wxs (from rev 10216, sandbox/jng/installer_wix6/Libraries/CS Map/HarvestFiles.wxs) =================================================================== --- trunk/Installer/Libraries/CS Map/HarvestFiles.wxs (rev 0) +++ trunk/Installer/Libraries/CS Map/HarvestFiles.wxs 2026-09-21 12:56:43 UTC (rev 10217) @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file Modified: trunk/Installer/Libraries/CS Map/Lang/CSMap_en-US.wxl =================================================================== --- trunk/Installer/Libraries/CS Map/Lang/CSMap_en-US.wxl 2026-09-21 12:39:45 UTC (rev 10216) +++ trunk/Installer/Libraries/CS Map/Lang/CSMap_en-US.wxl 2026-09-21 12:56:43 UTC (rev 10217) @@ -1,5 +1,4 @@ - - - CS-Map - CS-Map Open Source is a required component for MapGuide Server and Web Extensions. +? + + \ No newline at end of file Modified: trunk/Installer/Libraries/MapGuide Server/FDO.wxs =================================================================== --- trunk/Installer/Libraries/MapGuide Server/FDO.wxs 2026-09-21 12:39:45 UTC (rev 10216) +++ trunk/Installer/Libraries/MapGuide Server/FDO.wxs 2026-09-21 12:56:43 UTC (rev 10217) @@ -1,17 +1,23 @@ - - + - + - - + + - + + + + + + + + - + @@ -19,24 +25,24 @@ - + - + - - - - - - - - - - - - - + + + + + + + + + + + + + @@ -52,41 +58,35 @@ - - - - - - - - - - - - - + + + + + + + + + + + + + - + - + - + - + @@ -106,43 +106,43 @@ - + - + - + - + - + - + - + - + - + @@ -153,32 +153,32 @@ - + - + - + - + - + - + @@ -185,8 +185,8 @@ - - + + @@ -193,11 +193,11 @@ - + - + Copied: trunk/Installer/Libraries/MapGuide Server/HarvestFiles.wxs (from rev 10216, sandbox/jng/installer_wix6/Libraries/MapGuide Server/HarvestFiles.wxs) =================================================================== --- trunk/Installer/Libraries/MapGuide Server/HarvestFiles.wxs (rev 0) +++ trunk/Installer/Libraries/MapGuide Server/HarvestFiles.wxs 2026-09-21 12:56:43 UTC (rev 10217) @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file Modified: trunk/Installer/Libraries/MapGuide Server/InstallService.wxs =================================================================== --- trunk/Installer/Libraries/MapGuide Server/InstallService.wxs 2026-09-21 12:39:45 UTC (rev 10216) +++ trunk/Installer/Libraries/MapGuide Server/InstallService.wxs 2026-09-21 12:56:43 UTC (rev 10217) @@ -1,24 +1,12 @@ - - +? - + - + Modified: trunk/Installer/Libraries/MapGuide Server/Lang/MapGuideServer_en-US.wxl =================================================================== --- trunk/Installer/Libraries/MapGuide Server/Lang/MapGuideServer_en-US.wxl 2026-09-21 12:39:45 UTC (rev 10216) +++ trunk/Installer/Libraries/MapGuide Server/Lang/MapGuideServer_en-US.wxl 2026-09-21 12:56:43 UTC (rev 10217) @@ -1,51 +1,50 @@ - - - Server - MapGuide Server provides geographic analysis and rendering services. - Log Files - You may choose a location to place the server logfiles. - Packages - You may choose a location where the server will access Packages (*.mgp). - Repositories - You may choose a parent location for the server repositories. - Library - You may choose a location for the Library repository. - Session - You may choose a location for the Session repository. - Site - You may choose a location for the Site repository. - TileCache - You may choose a location for the Tile Cache repository. - Temp Directory - You may choose a location where MapGuide will store temporary files. +? + + + + + + + + + + + + + + + + + + - FDO (Feature Data Objects) allows abstract access to many different data sources. - ArcSDE Provider - Read/write access to an ESRI ArcSDE-based data store, using Oracle and SQL Server. (Requires external ArcSDE dlls) - GDAL Provider - FDO Raster Provider for GDAL - Oracle Provider - Read/write access to spatial and attribute data in an Oracle Spatial. (requires Oracle Instant Client libraries) - MySQL Provider - FDO Provider for MySQL (requires libmysql.dll) - ODBC Provider - FDO Provider for ODBC - OGR Provider - FDO Access to OGR Data Sources - PostGIS Provider - Read/write access to spatial and attribute data in a PostGIS database. (requires libpq.dll) - PostgreSQL/PostGIS Provider - Read/write access to PostgreSQL/PostGIS-based data store. Supports spatial data types and spatial query operations. - SDF Provider - Read/write access to Autodesk's spatial database format, a file-based personal geodatabase that supports multiple features/attributes, spatial indexing, and file-locking. - SHP Provider - Read/write access to spatial and attribute data in an ESRI SHP file. - SQLite Provider - The SQLite Provider - MS SQL Server Spatial Provider - Read/Write access to feature data in a MS SQL Server spatially enabled data store. Supports geospatial and non-geospatial data and schema. - WFS Provider - Read access to OGC WFS-based data store. - WMS Provider - Read access to OGC WMS-based data store. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file Modified: trunk/Installer/Libraries/MapGuide Server/MapGuide Server.wixproj =================================================================== --- trunk/Installer/Libraries/MapGuide Server/MapGuide Server.wixproj 2026-09-21 12:39:45 UTC (rev 10216) +++ trunk/Installer/Libraries/MapGuide Server/MapGuide Server.wixproj 2026-09-21 12:56:43 UTC (rev 10217) @@ -1,71 +1,37 @@ ? - + - Debug - x86 - 3.0 - {715e2d88-e822-4a9a-a5a2-dbb71cd9b320} - 2.0 + Debug + x64 + false MapGuideServer Library - $(MSBuildExtensionsPath)\Microsoft\WiX\v3.x\Wix.targets MapGuide Server - SOFTWARE\OSGeo\MapGuide - $(MSBuildProjectDirectory)\..\..\..\MgDev\$(Configuration) + SOFTWARE\OSGeo\MapGuide + $(MSBuildProjectDirectory)\..\..\..\MgDev\$(Configuration) + $([System.String]::Copy('$(MgSource)').Replace('"', '')) - - bin\$(Configuration)\ - obj\$(Configuration)\ - Debug;MgRegKey=$(MgRegKey);MgSource=$(MgSource);MgPlatform=$(MgPlatform);Have_ArcSde=$(Have_ArcSde) + + Debug;MgRegKey=$(MgRegKey);MgSource=$(MgSourceSanitized);MgPlatform=$(Platform);Have_ArcSde=$(Have_ArcSde) True - - - bin\$(Configuration)\ - obj\$(Configuration)\ - MgCulture=$(MgCulture);MgRegKey=$(MgRegKey);MgSource=$(MgSource);MgPlatform=$(MgPlatform);Have_ArcSde=$(Have_ArcSde) - - - Debug;MgRegKey=$(MgRegKey);MgSource=$(MgSource);MgPlatform=$(MgPlatform);Have_ArcSde=$(Have_ArcSde) - True bin\$(Platform)\$(Configuration)\ obj\$(Platform)\$(Configuration)\ - - MgCulture=$(MgCulture);MgRegKey=$(MgRegKey);MgSource=$(MgSource);MgPlatform=$(MgPlatform);Have_ArcSde=$(Have_ArcSde) + + MgCulture=$(MgCulture);MgRegKey=$(MgRegKey);MgSource=$(MgSourceSanitized);MgPlatform=$(Platform);Have_ArcSde=$(Have_ArcSde) bin\$(Platform)\$(Configuration)\ obj\$(Platform)\$(Configuration)\ - - - - - - + - - - - - - $(WixExtDir)\WixUtilExtension.dll - WixUtilExtension - + - - \ No newline at end of file Modified: trunk/Installer/Libraries/MapGuide Server/MapGuideServer.wxs =================================================================== --- trunk/Installer/Libraries/MapGuide Server/MapGuideServer.wxs 2026-09-21 12:39:45 UTC (rev 10216) +++ trunk/Installer/Libraries/MapGuide Server/MapGuideServer.wxs 2026-09-21 12:56:43 UTC (rev 10217) @@ -1,230 +1,131 @@ - - + - + - - + + - + - + - - - + + + - + - + - + - + - + - + - + - + - + - - - + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - - - - - - + + + + + + + + + - - - - - - - - - - - + + + + + + + + + + + Modified: trunk/Installer/Libraries/MapGuide Web Extensions/Apache.wxs =================================================================== --- trunk/Installer/Libraries/MapGuide Web Extensions/Apache.wxs 2026-09-21 12:39:45 UTC (rev 10216) +++ trunk/Installer/Libraries/MapGuide Web Extensions/Apache.wxs 2026-09-21 12:56:43 UTC (rev 10217) @@ -1,25 +1,23 @@ - - +? - + - + - - - - - - + + + + + + @@ -11,121 +8,98 @@ - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + @@ -206,44 +168,36 @@ --> - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + \ No newline at end of file Modified: trunk/Installer/Libraries/MapGuide Web Extensions/Lang/MapGuideWebExtensions_en-US.wxl =================================================================== --- trunk/Installer/Libraries/MapGuide Web Extensions/Lang/MapGuideWebExtensions_en-US.wxl 2026-09-21 12:39:45 UTC (rev 10216) +++ trunk/Installer/Libraries/MapGuide Web Extensions/Lang/MapGuideWebExtensions_en-US.wxl 2026-09-21 12:56:43 UTC (rev 10217) @@ -1,68 +1,67 @@ - - - Web - MapGuide Web provides the components needed to serve MapGuide resources over the internet. - Apache - A bundled version of Apache with MapGuide enabled, running on port [APACHE_PORT]. - PHP - A bundled version of PHP with MapGuide enabled. - Tomcat - A bundled version of Tomcat with MapGuide enabled. - Development HTTP Server - A simple development HTTP server to easily spin up a mapagent or static HTML/JS content for development/testing without IIS or Apache - API Help - Web Extension API documentation - Map Viewer files - The support files for the map viewer, language independent. - PHP Viewer - The PHP version of the map viewer. - JSP Viewer - The JSP version of the map viewer. - .NET Viewer - The .NET version of the map viewer. - Samples - Sample code and data - Developer's Guide Sample Code (PHP) - PHP sample code from the MapGuide Developer's Guide. This requires the Sheboygan sample data. - Developer's Guide Sample Code (Java) - Java sample code from the MapGuide Developer's Guide. This requires the Sheboygan sample data. - Developer's Guide Sample Code (.net) - .net sample code from the MapGuide Developer's Guide. This requires the Sheboygan sample data. - Viewer Sample (PHP) - Viewer Sample code (PHP) - Viewer Sample (Java) - Viewer Sample code (Java) - Viewer Sample (.net) - Viewer Sample code (.net) - OpenLayers Samples - Samples demonstrating OpenLayers integration with MapGuide - Localization Files - Localization files for the web tier - Fusion - Fusion is a web-mapping application framework, allowing non-spatial web developers to build rich mapping applications quickly and easily - Site Administrator - The MapGuide Site Administrator is a web-based administrative front-end for the MapGuide Server - Map Agent - The map agent allows client applications to communicate with MapGuide over HTTP - Schema Report - The schema report allows the user to describe and preview MapGuide feature sources - Standard Icons - Icons for the AJAX viewer - Temp Directory - You may choose a location where MapGuide will store temporary files. - mapagent test pages - mapagent test harness web pages and scripts +? + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - MapGuide Developer's Guide - Web API Documentation - MapGuide Samples - Autodesk WikiHelp - Viewer API Documentation - Fusion API Documentation - MapGuide Site Administrator - MapAgent Test Pages - Get MapGuide Maestro - MapGuide Project Home - MapGuide Trac - Start MapGuide Development HTTP Server + + + + + + + + + + + + \ No newline at end of file Modified: trunk/Installer/Libraries/MapGuide Web Extensions/MapGuide Web Extensions.wixproj =================================================================== --- trunk/Installer/Libraries/MapGuide Web Extensions/MapGuide Web Extensions.wixproj 2026-09-21 12:39:45 UTC (rev 10216) +++ trunk/Installer/Libraries/MapGuide Web Extensions/MapGuide Web Extensions.wixproj 2026-09-21 12:56:43 UTC (rev 10217) @@ -1,95 +1,38 @@ ? - + - Debug - x86 - 3.0 - {d41d53c4-433e-47b5-b663-e79b5569ee22} - 2.0 + Debug + x64 + false MapGuide Web Extensions Library - $(MSBuildExtensionsPath)\Microsoft\WiX\v3.x\Wix.targets - SOFTWARE\OSGeo\MapGuide - $(MSBuildProjectDirectory)\..\..\..\MgDev\$(Configuration) + SOFTWARE\OSGeo\MapGuide + $(MSBuildProjectDirectory)\..\..\..\MgDev\$(Configuration) + $([System.String]::Copy('$(MgSource)').Replace('"', '')) - - bin\$(Configuration)\ - obj\$(Configuration)\ - Debug;MgRegKey=$(MgRegKey);MgSource=$(MgSource);MgPlatform=$(MgPlatform) - - - bin\$(Configuration)\ - obj\$(Configuration)\ - MgRegKey=$(MgRegKey);MgSource=$(MgSource);MgPlatform=$(MgPlatform) - - - Debug;MgRegKey=$(MgRegKey);MgSource=$(MgSource);MgPlatform=$(MgPlatform) + + Debug;MgRegKey=$(MgRegKey);MgSource=$(MgSourceSanitized);MgPlatform=$(Platform) bin\$(Platform)\$(Configuration)\ obj\$(Platform)\$(Configuration)\ - - MgRegKey=$(MgRegKey);MgSource=$(MgSource);MgPlatform=$(MgPlatform) + + MgRegKey=$(MgRegKey);MgSource=$(MgSourceSanitized);MgPlatform=$(Platform) bin\$(Platform)\$(Configuration)\ obj\$(Platform)\$(Configuration)\ - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - $(WixExtDir)\WixUtilExtension.dll - WixUtilExtension - - - $(WixExtDir)\WixNetFxExtension.dll - WixNetFxExtension - - - $(WixExtDir)\WixIIsExtension.dll - WixIIsExtension - + + + - - \ No newline at end of file Modified: trunk/Installer/Libraries/MapGuide Web Extensions/MapGuideWebExtensions.wxs =================================================================== --- trunk/Installer/Libraries/MapGuide Web Extensions/MapGuideWebExtensions.wxs 2026-09-21 12:39:45 UTC (rev 10216) +++ trunk/Installer/Libraries/MapGuide Web Extensions/MapGuideWebExtensions.wxs 2026-09-21 12:56:43 UTC (rev 10217) @@ -1,47 +1,27 @@ - - + - + - - + + - + - - - + + + - + - - - + + + - - + + @@ -50,15 +30,17 @@ - + - + + + - + - - + + + + + - + @@ -97,7 +75,7 @@ - + @@ -105,54 +83,18 @@ - + - - - - - - - - - + + + + + + + + + @@ -160,56 +102,56 @@ - - - - - - - - - + + + + + + + + + - - + + - - + + - - + + - - - + + + - - - - - - - - + + + + + + + + - - + + - - + + - - - + + + - - + + - + - + @@ -235,25 +177,26 @@ - + - - + + - + - + - + - + + Modified: trunk/Installer/Libraries/MapGuide Web Extensions/Shortcuts.wxs =================================================================== --- trunk/Installer/Libraries/MapGuide Web Extensions/Shortcuts.wxs 2026-09-21 12:39:45 UTC (rev 10216) +++ trunk/Installer/Libraries/MapGuide Web Extensions/Shortcuts.wxs 2026-09-21 12:56:43 UTC (rev 10217) @@ -1,262 +1,147 @@ - - + - + - - + + - + - + - + - + - - MGWEB_CONFIG="APACHE" + + - + - + - - MGWEB_CONFIG="APACHE" + + - + - + - - MGWEB_CONFIG="APACHE" + + - + - + - - MGWEB_CONFIG="APACHE" + + - + - + - - MGWEB_CONFIG="APACHE" - - + + + + - + - - MGWEB_CONFIG="APACHE" - + + + - + - - MGWEB_CONFIG="APACHE" - + + + - + - - MGWEB_CONFIG="IIS" + + - + - + - - MGWEB_CONFIG="IIS" + + - + - + - - MGWEB_CONFIG="IIS" + + - + - + - - MGWEB_CONFIG="IIS" + + - + - + - - MGWEB_CONFIG="IIS" - + + + - + - - MGWEB_CONFIG="IIS" - - + + + + - + - - MGWEB_CONFIG="IIS" - + + + - + - - - - + + + - + - - - + + + - + - + \ No newline at end of file Deleted: trunk/Installer/Paraffin.exe =================================================================== (Binary files differ) Modified: trunk/Installer/build.bat =================================================================== --- trunk/Installer/build.bat 2026-09-21 12:39:45 UTC (rev 10216) +++ trunk/Installer/build.bat 2026-09-21 12:56:43 UTC (rev 10217) @@ -8,8 +8,8 @@ rem value of INSTALLER_OUTPUT defined in this file rem rem Requirements: -rem 1. Wix 3.5 (http://wix.codeplex.com) -rem 2. Paraffin (http://www.wintellect.com/CS/blogs/jrobbins/archive/2008/12/22/paraffin-3-0-now-with-full-wix-3-0-support.aspx) +rem 1. WiX Toolset 6.0.2 SDK (restored through SDK-style .wixproj) +rem 2. Staged MapGuide output under ..\MgDev\ rem rem Usage: rem @@ -23,7 +23,7 @@ rem [-name=MapGuideInstallerFilename] rem [-title=MapGuideInstallerTitle] rem -rem Action: build(default), clean, prepare, generate (only use generate when creating new GIDs) +rem Action: build(default), clean, prepare, generate (generate is a no-op) rem SourceDirectory: The directory that was used for MapGuide build output rem MapGuideVersion: The version associated with the installer in the format 2.1.0.0 rem MapGuideInstallerFilename: File name of output .exe in the format MapGuideOpenSource-2.1.0-Something @@ -38,6 +38,8 @@ rem Command Line Option Defaults rem ================================================== +SET TYPEBUILD=Release +SET PLATFORM_CLR=x64 SET TYPEACTION=build SET CULTURE=en-US SET INSTALLER_VERSION_MAJOR_MINOR=4.0 @@ -74,8 +76,7 @@ SET INSTALLER_DEV_INSTALLER=%INSTALLER_DEV%\Installers\MapGuide SET NSIS=%CD%\Support\NSIS -SET PARAFFIN=%CD% -SET PATH=%PATH%;%PARAFFIN%;%NSIS%;%WIX%\bin\;%CD%\..\MgDev\BuildTools\WebTools\7-Zip +SET PATH=%PATH%;%NSIS%;%CD%\..\MgDev\BuildTools\WebTools\7-Zip rem ================================================== rem Web dependencies @@ -101,6 +102,9 @@ if "%1"=="-lang" goto get_language +if "%1"=="-build" goto get_typebuild +if "%1"=="-platform" goto get_platform + if "%1"=="-source" goto get_source if "%1"=="-version" goto get_version @@ -114,6 +118,20 @@ shift goto study_params +:get_typebuild +SET TYPEBUILD=%2 +SET INSTALLER_NAME=MapGuideOpenSource-%INSTALLER_VERSION_MAJOR_MINOR_REV%-Trunk-%CULTURE%-%TYPEBUILD%-%PLATFORM_CLR% +SET INSTALLER_TITLE="MapGuide Open Source %INSTALLER_VERSION_MAJOR_MINOR% Trunk (%TYPEBUILD%)" +SET MG_SOURCE=%CD%\..\MgDev\%TYPEBUILD% +SET MG_SOURCE_INC=%MG_SOURCE% +goto next_param + +:get_platform +SET PLATFORM_CLR=%2 +SET INSTALLER_NAME=MapGuideOpenSource-%INSTALLER_VERSION_MAJOR_MINOR_REV%-Trunk-%CULTURE%-%TYPEBUILD%-%PLATFORM_CLR% +SET PHP_TS_PACKAGE=php-%PHP_VERSION%-nts-Win32-vs16-%PLATFORM_CLR%.zip +goto next_param + :get_language SET CULTURE=%2 SET INSTALLER_OUTPUT=%INSTALLER_DEV%\Output\%CULTURE% @@ -158,6 +176,8 @@ echo Bundling ArcSDE Provider: %MG_WITH_ARCSDE% echo =================================================== +if /I not "%PLATFORM_CLR%"=="x64" goto error_x64_only + if "%TYPEACTION%"=="build" goto build if "%TYPEACTION%"=="prepare" goto prepare if "%TYPEACTION%"=="clean" goto clean @@ -165,9 +185,9 @@ :clean echo [clean]: Installer Pre-Reqs -%MSBUILD_CLEAN% InstallerPreReq.sln +%MSBUILD_CLEAN% InstallerPreReq.sln /p:Platform=x64 echo [clean]: Installer -%MSBUILD_CLEAN_CLR% InstallerWix.sln +%MSBUILD_CLEAN_CLR% InstallerWix.sln /p:Platform=x64 goto quit :prepare @@ -176,7 +196,11 @@ if not exist "%MG_SOURCE%\Web" goto error_mg_web_not_found if not exist "%MG_SOURCE%\CS-Map" goto error_mg_csmap_not_found echo [prepare] Installer Pre-Requisites -%MSBUILD% InstallerPreReq.sln +%MSBUILD% InstallerPreReq.sln /p:Platform=x64 +if not exist "%INSTALLER_FDO_REG_UTIL%\%TYPEBUILD%\FdoRegUtil.exe" ( + echo [prepare] FdoRegUtil.exe not found in [%INSTALLER_FDO_REG_UTIL%\%TYPEBUILD%] + goto error +) copy %INSTALLER_FDO_REG_UTIL%\%TYPEBUILD%\FdoRegUtil.exe %MG_SOURCE%\Server\FDO popd echo [prepare] Unpack Apache httpd @@ -226,99 +250,12 @@ :generate echo [generate]: MapGuide Installer +echo [generate]: No-op. WiX-native harvesting is now defined in HarvestFiles.wxs. -SET PARAFFIN=paraffin.exe -guids -IF "%PLATFORM_CLR%" == "x64" SET PARAFFIN=paraffin.exe -Win64 -guids - -SET WIX_INC_SERVER="%INSTALLER_DEV%\Libraries\MapGuide Server\FileIncludes" -SET WIX_INC_WEB="%INSTALLER_DEV%\Libraries\MapGuide Web Extensions\FileIncludes" -SET WIX_INC_CSMAP="%INSTALLER_DEV%\Libraries\CS Map\FileIncludes" - -echo [generate]: Server - binaries -%PARAFFIN% -dir %MG_SOURCE%\Server\bin -alias $(var.MgSource)\Server\bin -custom SRVBINFILES -dirref SERVERROOTLOCATION -norecurse %WIX_INC_SERVER%\incBinFiles.wxs - -echo [generate]: Server - RepositoryAdmin -%PARAFFIN% -dir %MG_SOURCE%\Server\RepositoryAdmin -alias $(var.MgSource)\Server\RepositoryAdmin -custom SRVREPADMINFILES -dirref SERVERROOTLOCATION %WIX_INC_SERVER%\incRepositoryAdminFiles.wxs - -echo [generate]: Server - resources -%PARAFFIN% -dir %MG_SOURCE%\Server\Resources -alias $(var.MgSource)\Server\Resources -custom SRVRESOURCESFILES -dirref SERVERROOTLOCATION %WIX_INC_SERVER%\incResourcesFiles.wxs - -echo [generate]: Server - schema -%PARAFFIN% -dir %MG_SOURCE%\Server\Schema -alias $(var.MgSource)\Server\Schema -custom SRVSCHEMAFILES -dirref SERVERROOTLOCATION %WIX_INC_SERVER%\incSchemaFiles.wxs - -echo [generate]: Server - WMS -%PARAFFIN% -dir %MG_SOURCE%\Server\wms -alias $(var.MgSource)\Server\wms -custom SRVWMSFILES -dirref SERVERROOTLOCATION -norecurse %WIX_INC_SERVER%\incWmsFiles.wxs - -echo [generate]: Server - WFS -%PARAFFIN% -dir %MG_SOURCE%\Server\wfs -alias $(var.MgSource)\Server\wfs -custom SRVWFSFILES -dirref SERVERROOTLOCATION -norecurse %WIX_INC_SERVER%\incWfsFiles.wxs - -echo [generate]: CS-Map - dictionaries -%PARAFFIN% -dir %MG_SOURCE%\CS-Map\Dictionaries -alias $(var.MgSource)\CS-Map\Dictionaries -custom CSMAPDICTFILES -dirref CSMAPLOCATION -ext ASC -ext C -ext CNT -ext GID -ext HLP -ext MAK -ext NMK -ext VCPROJ -ext USER %WIX_INC_CSMAP%\incCSMapDictionaryFiles.wxs - -echo [generate]: Web - Apache -%PARAFFIN% -dir %MG_SOURCE%\Web\Apache24 -alias $(var.MgSource)\Web\Apache24 -custom APACHEFILES -dirref WEBEXTENSIONSLOCATION -dirExclude .svn %WIX_INC_WEB%\incApacheFiles.wxs - -echo [generate]: Web - Php TS -%PARAFFIN% -dir %MG_SOURCE%\Web\Php -alias $(var.MgSource)\Web\Php -custom PHPFILES -dirref WEBEXTENSIONSLOCATION %WIX_INC_WEB%\incPhpFiles.wxs - -echo [generate]: Web - Tomcat -%PARAFFIN% -dir %MG_SOURCE%\Web\Tomcat -alias $(var.MgSource)\Web\Tomcat -custom TOMCATFILES -dirref WEBEXTENSIONSLOCATION %WIX_INC_WEB%\incTomcatFiles.wxs - -echo [generate]: Web - DevHttpServer -%PARAFFIN% -dir %MG_SOURCE%\Web\DevHttpServer -alias $(var.MgSource)\Web\DevHttpServer -custom DEVHTTPSERVER -dirref WEBEXTENSIONSLOCATION %WIX_INC_WEB%\incDevHttpServerFiles.wxs - -echo [generate]: Web - Help -%PARAFFIN% -dir %MG_SOURCE%\Web\www\help -alias $(var.MgSource)\Web\www\help -custom HELPFILES -dirref WEBROOTLOCATION %WIX_INC_WEB%\incHelpFiles.wxs - -echo [generate]: Web - Developer's Guide Samples (PHP) -%PARAFFIN% -dir %MG_SOURCE%\Web\www\phpsamples -alias $(var.MgSource)\Web\www\phpsamples -custom PHPDEVGUIDEFILES -dirref WEBROOTLOCATION %WIX_INC_WEB%\incPhpDevGuideFiles.wxs - -echo [generate]: Web - Developer's Guide Samples (Java) -%PARAFFIN% -dir %MG_SOURCE%\Web\www\javasamples -alias $(var.MgSource)\Web\www\javasamples -custom JAVADEVGUIDEFILES -dirref WEBROOTLOCATION %WIX_INC_WEB%\incJavaDevGuideFiles.wxs - -echo [generate]: Web - Developer's Guide Samples (DotNet) -%PARAFFIN% -dir %MG_SOURCE%\Web\www\dotnetsamples -alias $(var.MgSource)\Web\www\dotnetsamples -custom DOTNETDEVGUIDEFILES -dirref WEBROOTLOCATION %WIX_INC_WEB%\incDotNetDevGuideFiles.wxs - -echo [generate]: Web - Developer's Guide Samples (PHP) -%PARAFFIN% -dir %MG_SOURCE%\Web\www\phpviewersample -alias $(var.MgSource)\Web\www\phpviewersample -custom PHPVIEWERSAMPLEFILES -dirref WEBROOTLOCATION %WIX_INC_WEB%\incPhpViewerSampleFiles.wxs - -echo [generate]: Web - Developer's Guide Samples (Java) -%PARAFFIN% -dir %MG_SOURCE%\Web\www\javaviewersample -alias $(var.MgSource)\Web\www\javaviewersample -custom JAVAVIEWERSAMPLEFILES -dirref WEBROOTLOCATION %WIX_INC_WEB%\incJavaViewerSampleFiles.wxs - -echo [generate]: Web - Developer's Guide Samples (DotNet) -%PARAFFIN% -dir %MG_SOURCE%\Web\www\dotnetviewersample -alias $(var.MgSource)\Web\www\dotnetviewersample -custom DOTNETVIEWERSAMPLEFILES -dirref WEBROOTLOCATION %WIX_INC_WEB%\incDotNetViewerSampleFiles.wxs - -echo [generate]: Web - OpenLayers Samples -%PARAFFIN% -dir %MG_SOURCE%\Web\www\clientsamples -alias $(var.MgSource)\Web\www\clientsamples -custom OPENLAYERSSAMPLEFILES -dirref WEBROOTLOCATION %WIX_INC_WEB%\incOpenLayersSampleFiles.wxs - -echo [generate]: Web - mapagent -%PARAFFIN% -dir %MG_SOURCE%\Web\www\mapagent -alias $(var.MgSource)\Web\www\mapagent -custom MAPAGENTFILES -dirref WEBROOTLOCATION %WIX_INC_WEB%\incMapAgentFiles.wxs - -echo [generate]: Web - mapviewernet -%PARAFFIN% -dir %MG_SOURCE%\Web\www\mapviewernet -alias $(var.MgSource)\Web\www\mapviewernet -custom MAPVIEWERASPXFILES -dirref WEBROOTLOCATION %WIX_INC_WEB%\incMapViewerAspxFiles.wxs - -echo [generate]: Web - mapviewerphp -%PARAFFIN% -dir %MG_SOURCE%\Web\www\mapviewerphp -alias $(var.MgSource)\Web\www\mapviewerphp -custom MAPVIEWERPHPFILES -dirref WEBROOTLOCATION %WIX_INC_WEB%\incMapViewerPhpFiles.wxs - -echo [generate]: Web - mapviewerjava -%PARAFFIN% -dir %MG_SOURCE%\Web\www\mapviewerjava -alias $(var.MgSource)\Web\www\mapviewerjava -custom MAPVIEWERJSPFILES -dirref WEBROOTLOCATION %WIX_INC_WEB%\incMapViewerJspFiles.wxs - -echo [generate]: Web - fusion -%PARAFFIN% -dir %MG_SOURCE%\Web\www\fusion -alias $(var.MgSource)\Web\www\fusion -custom FUSIONFILES -dirref WEBROOTLOCATION %WIX_INC_WEB%\incFusionFiles.wxs - -echo [generate]: Web - misc web root -%PARAFFIN% -dir %MG_SOURCE%\Web\www -alias $(var.MgSource)\Web\www -custom WEBROOTFILES -dirref WEBEXTENSIONSLOCATION -norecurse %WIX_INC_WEB%\incWebRootFiles.wxs -%PARAFFIN% -dir %MG_SOURCE%\Web\www\viewerfiles -alias $(var.MgSource)\Web\www\viewerfiles -custom MAPVIEWERFILES -dirref WEBROOTLOCATION %WIX_INC_WEB%\incMapViewerFiles.wxs -%PARAFFIN% -dir %MG_SOURCE%\Web\www\stdicons -alias $(var.MgSource)\Web\www\stdicons -custom MAPVIEWERSTDICONFILES -dirref WEBROOTLOCATION %WIX_INC_WEB%\incMapViewerStdiconFiles.wxs -%PARAFFIN% -dir %MG_SOURCE%\Web\www\schemareport -alias $(var.MgSource)\Web\www\schemareport -custom MAPVIEWERSCHEMAREPORTFILES -dirref WEBROOTLOCATION %WIX_INC_WEB%\incMapViewerSchemareportFiles.wxs -%PARAFFIN% -dir %MG_SOURCE%\Web\www\mapadmin -alias $(var.MgSource)\Web\www\mapadmin -custom MAPVIEWERMAPADMINFILES -dirref WEBROOTLOCATION %WIX_INC_WEB%\incMapViewerMapAdminFiles.wxs -%PARAFFIN% -dir %MG_SOURCE%\Web\www\localized -alias $(var.MgSource)\Web\www\localized -custom MAPVIEWERLOCALIZEDFILES -dirref WEBROOTLOCATION %WIX_INC_WEB%\incMapViewerLocalizedFiles.wxs -%PARAFFIN% -dir %MG_SOURCE%\Web\www\WEB-INF -alias $(var.MgSource)\Web\www\WEB-INF -custom WEBINFFILES -dirref WEBROOTLOCATION %WIX_INC_WEB%\incWebInfFiles.wxs - goto quit :build -SET RUN_BUILD=%MSBUILD% /p:OutputName=%INSTALLER_NAME%;MgCulture=%CULTURE%;MgTitle=%INSTALLER_TITLE%;MgVersion=%INSTALLER_VERSION%;MgRegKey=%MG_REG_KEY%;MgPlatform=%PLATFORM_CLR%;Have_ArcSde=%MG_WITH_ARCSDE% +SET RUN_BUILD=%MSBUILD% /restore /p:Platform=x64;OutputName=%INSTALLER_NAME%;MgCulture=%CULTURE%;MgTitle=%INSTALLER_TITLE%;MgVersion=%INSTALLER_VERSION%;MgRegKey=%MG_REG_KEY%;MgPlatform=%PLATFORM_CLR%;Have_ArcSde=%MG_WITH_ARCSDE% if not ""=="%MG_SOURCE_INC%" set RUN_BUILD=%RUN_BUILD%;MgSource=%MG_SOURCE_INC% echo [build]: Installer @@ -325,6 +262,10 @@ %RUN_BUILD% InstallerWix.sln if "%errorlevel%"=="1" goto error if not exist "%INSTALLER_OUTPUT%" mkdir "%INSTALLER_OUTPUT%" +echo [bootstrap]: Copying MSI +if "%CONFIGURATION%"=="" SET CONFIGURATION=%TYPEBUILD:64=% +copy /Y "%INSTALLER_DEV_INSTALLER%\bin\%PLATFORM_CLR%\%CONFIGURATION%\%CULTURE%\%INSTALLER_NAME%.msi" "%INSTALLER_OUTPUT%\%INSTALLER_NAME%.msi" +if "%errorlevel%"=="1" goto error pushd "%INSTALLER_DEV_BOOTSTRAP%" echo [bootstrap]: Copying vcredist copy /Y vc_redist.%PLATFORM_CLR%.exe "%INSTALLER_OUTPUT%\vc_redist.%PLATFORM_CLR%.exe" @@ -363,6 +304,10 @@ echo [ERROR]: Could not find CS-Map directory at %MG_SOURCE%\CS-Map exit /B 1 +:error_x64_only +echo [ERROR]: x86/Win32 installer builds are no longer supported. Please use x64 build environment. +exit /B 1 + :error echo [ERROR]: There was an error building the component exit /B 1 @@ -380,6 +325,8 @@ echo ************************************************************************ echo build.bat [-h] echo [-a=Action] +echo [-build=TypeBuild] +echo [-platform=PlatformCLR] echo [-lang=Culture] echo [-source=SourceDirectory] echo [-version=MapGuideVersion] @@ -387,7 +334,9 @@ echo [-title=MapGuideInstallerTitle] echo echo Help: -h -echo Action: build(default), clean, prepare, generate (only use generate for creating new GIDs, or if not installing from ..\MgDev\Release) +echo Action: build(default), clean, prepare, generate (generate is now a no-op) +echo TypeBuild: Release(default) or Debug +echo PlatformCLR: x64(default) echo SourceDirectory: The directory that the MapGuide build process installed the source files into echo MapGuideVersion: The version associated with the installer in the format 2.1.0.0 echo MapGuideInstallerFilename: File name of output .exe in the format MapGuideOpenSource-2.1.0-Something (such as Beta, RC1, Final, etc) Copied: trunk/Installer/scripts/List-MsiFiles.ps1 (from rev 10216, sandbox/jng/installer_wix6/scripts/List-MsiFiles.ps1) =================================================================== --- trunk/Installer/scripts/List-MsiFiles.ps1 (rev 0) +++ trunk/Installer/scripts/List-MsiFiles.ps1 2026-09-21 12:56:43 UTC (rev 10217) @@ -0,0 +1,371 @@ +<# +.SYNOPSIS + Dumps the installable file listing (target paths) from one or more MSI files, + optionally filtered by which features are enabled/disabled. + +.DESCRIPTION + Uses the Windows Installer COM automation object (no extra dependencies) to read the + Directory, Component, Feature, FeatureComponents and File tables and reconstruct the + full target path of every file the MSI installs. Output is one path per line, sorted, + which makes it easy to diff two MSIs to confirm file coverage. + + Feature support: + -ListFeatures Print the feature tree (id / title / parent) and exit. + -Features "A,B" Only list files belonging to the given features. Enabling a + feature also enables its descendant features (mirrors MSI). + -ExcludeFeatures "A,B" List all files EXCEPT those belonging to the given features + (and their descendants). Can be combined with -Features. + +.EXAMPLE + .\List-MsiFiles.ps1 .\MapGuide.msi -Features ServerFeature + +.EXAMPLE + .\List-MsiFiles.ps1 .\MapGuide.msi -ExcludeFeatures FdoArcSdeProviderFeature + +.EXAMPLE + # full coverage comparison between two MSIs + .\List-MsiFiles.ps1 .\old.msi -RelativeTo INSTALLLOCATION -Quiet > old.txt + .\List-MsiFiles.ps1 .\new.msi -RelativeTo INSTALLLOCATION -Quiet > new.txt + Compare-Object (Get-Content old.txt) (Get-Content new.txt) + +.PARAMETER Path + One or more MSI files to inspect. + +.PARAMETER RelativeTo + Optional Directory Id (e.g. INSTALLLOCATION). When specified, paths are printed + relative to that directory instead of as full absolute paths. + +.PARAMETER Quiet + Suppress the per-file header lines so only the paths are printed. + +.PARAMETER ListFeatures + List the feature tree instead of the file listing. + +.PARAMETER Features + Comma-separated feature Ids to include (plus their descendants). + +.PARAMETER ExcludeFeatures + Comma-separated feature Ids to exclude (plus their descendants). +#> +[CmdletBinding()] +param( + [Parameter(Mandatory = $true, ValueFromRemainingArguments = $true, Position = 0)] + [string[]]$Path, + + [Parameter()] + [string]$RelativeTo, + + [Parameter()] + [switch]$Quiet, + + [Parameter()] + [switch]$ListFeatures, + + [Parameter()] + [string]$Features, + + [Parameter()] + [string]$ExcludeFeatures +) + +Set-StrictMode -Version 2.0 +$ErrorActionPreference = 'Stop' + +# Best-effort resolution of the standard directories that MSI resolves at install time. +# Anything not listed here is left as its raw directory id (still fine for diffing). +$script:StandardDirs = [ordered]@{ + 'TARGETDIR' = '' + 'ProgramFilesFolder' = 'C:\Program Files (x86)' + 'ProgramFiles64Folder' = 'C:\Program Files' + 'CommonFilesFolder' = 'C:\Program Files (x86)\Common Files' + 'CommonFiles64Folder' = 'C:\Program Files\Common Files' + 'WindowsFolder' = 'C:\Windows' + 'SystemFolder' = 'C:\Windows\System32' + 'System32Folder' = 'C:\Windows\System32' + 'ProgramMenuFolder' = 'C:\ProgramData\Microsoft\Windows\Start Menu\Programs' + 'StartupFolder' = 'C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup' + 'DesktopFolder' = 'C:\Users\Public\Desktop' + 'FavoritesFolder' = 'C:\Users\Public\Favorites' + 'FontsFolder' = 'C:\Windows\Fonts' + 'TempFolder' = 'C:\Windows\Temp' + 'TemplateFolder' = 'C:\ProgramData\Microsoft\Windows\Templates' +} + +function Get-RecordField { + param([object]$Record, [int]$Index) + return $Record.GetType().InvokeMember('StringData', 'GetProperty', $null, $Record, @($Index)) +} + +function Invoke-MsiQuery { + param([object]$Db, [string]$Sql) + $view = $Db.GetType().InvokeMember('OpenView', 'InvokeMethod', $null, $Db, @($Sql)) + [void]$view.GetType().InvokeMember('Execute', 'InvokeMethod', $null, $view, $null) + $rows = New-Object System.Collections.ArrayList + $rec = $view.GetType().InvokeMember('Fetch', 'InvokeMethod', $null, $view, $null) + while ($null -ne $rec) { + [void]$rows.Add($rec) + $rec = $view.GetType().InvokeMember('Fetch', 'InvokeMethod', $null, $view, $null) + } + [void]$view.GetType().InvokeMember('Close', 'InvokeMethod', $null, $view, $null) + return $rows +} + +function Get-DirectoryName { + param([string]$DefaultDir) + if ([string]::IsNullOrEmpty($DefaultDir)) { return '' } + if ($DefaultDir -eq '.') { return '' } + # property-resolved directory marker (e.g. "name:." or ".:name") + $DefaultDir = $DefaultDir -replace ':+\.$', '' + $DefaultDir = $DefaultDir -replace '^\.:', '' + # short|long -> long + if ($DefaultDir.Contains('|')) { + return $DefaultDir.Substring($DefaultDir.IndexOf('|') + 1) + } + return $DefaultDir +} + +function Open-Msi { + param([string]$Msi) + if (-not (Test-Path -LiteralPath $Msi)) { throw "MSI file not found: $Msi" } + $full = (Resolve-Path -LiteralPath $Msi).Path + $installer = New-Object -ComObject WindowsInstaller.Installer + try { + return $installer.GetType().InvokeMember('OpenDatabase', 'InvokeMethod', $null, $installer, @($full, 0)) + } + finally { + # Release the Installer COM object immediately so it cannot keep the MSI open. + if ($null -ne $installer) { + try { [void][System.Runtime.InteropServices.Marshal]::FinalReleaseComObject($installer) } catch { } + } + } +} + +function Split-FeatureList { + param([string]$Value) + if ([string]::IsNullOrWhiteSpace($Value)) { return ,@() } + $result = @($Value -split ',' | ForEach-Object { $_.Trim() } | Where-Object { $_ -ne '' }) + return ,$result +} + +function Get-DescendantFeatures { + param([string]$Root, [hashtable]$Children) + $result = New-Object System.Collections.Generic.HashSet[string] + $queue = New-Object System.Collections.Queue + [void]$queue.Enqueue($Root) + while ($queue.Count -gt 0) { + $cur = $queue.Dequeue() + if (-not $result.Add($cur)) { continue } + if ($Children.ContainsKey($cur)) { + foreach ($c in $Children[$cur]) { [void]$queue.Enqueue($c) } + } + } + return $result +} + +function Read-MsiData { + param([string]$Msi) + $db = Open-Msi -Msi $Msi + try { + + $dirs = @{} + foreach ($rec in (Invoke-MsiQuery $db 'SELECT `Directory`, `Directory_Parent`, `DefaultDir` FROM `Directory`')) { + $id = Get-RecordField $rec 1 + $dirs[$id] = [pscustomobject]@{ + Parent = Get-RecordField $rec 2 + Name = Get-DirectoryName (Get-RecordField $rec 3) + IsStandard = $script:StandardDirs.Contains($id) + } + } + + $compDir = @{} + foreach ($rec in (Invoke-MsiQuery $db 'SELECT `Component`, `Directory_` FROM `Component`')) { + $compDir[(Get-RecordField $rec 1)] = Get-RecordField $rec 2 + } + + # Features: id -> { Parent, Title, Level } + $featInfo = @{} + $featChildren = @{} + foreach ($rec in (Invoke-MsiQuery $db 'SELECT `Feature`, `Feature_Parent`, `Title`, `Level` FROM `Feature`')) { + $id = Get-RecordField $rec 1 + $parent = Get-RecordField $rec 2 + $featInfo[$id] = [pscustomobject]@{ + Parent = $parent + Title = Get-RecordField $rec 3 + Level = Get-RecordField $rec 4 + } + if (-not [string]::IsNullOrEmpty($parent)) { + if (-not $featChildren.ContainsKey($parent)) { $featChildren[$parent] = New-Object System.Collections.ArrayList } + [void]$featChildren[$parent].Add($id) + } + } + + # FeatureComponents: feature -> components ; component -> features + $featComp = @{} + $compFeat = @{} + foreach ($rec in (Invoke-MsiQuery $db 'SELECT `Feature_`, `Component_` FROM `FeatureComponents`')) { + $f = Get-RecordField $rec 1 + $c = Get-RecordField $rec 2 + if (-not $featComp.ContainsKey($f)) { $featComp[$f] = New-Object System.Collections.Generic.HashSet[string] } + [void]$featComp[$f].Add($c) + if (-not $compFeat.ContainsKey($c)) { $compFeat[$c] = New-Object System.Collections.ArrayList } + [void]$compFeat[$c].Add($f) + } + + # File table -> FileName, Component_, FileSize + $files = New-Object System.Collections.ArrayList + foreach ($rec in (Invoke-MsiQuery $db 'SELECT `FileName`, `Component_`, `FileSize` FROM `File`')) { + $fileName = Get-RecordField $rec 1 + $comp = Get-RecordField $rec 2 + $size = Get-RecordField $rec 3 + if ($fileName.Contains('|')) { $fileName = $fileName.Substring($fileName.IndexOf('|') + 1) } + [void]$files.Add([pscustomobject]@{ + FileName = $fileName + Component = $comp + Size = if ([string]::IsNullOrEmpty($size)) { 0 } else { [long]$size } + }) + } + + return [pscustomobject]@{ + Dirs = $dirs + CompDir = $compDir + FeatInfo = $featInfo + FeatChild = $featChildren + FeatComp = $featComp + CompFeat = $compFeat + Files = $files + } + } + finally { + # Release the Database COM object so the MSI file handle is closed immediately. + if ($null -ne $db) { + try { [void][System.Runtime.InteropServices.Marshal]::FinalReleaseComObject($db) } catch { } + } + } +} + +function Resolve-DirectoryPath { + param([string]$Id, [hashtable]$Dirs) + $segments = New-Object System.Collections.ArrayList + $cur = $Id + $guard = 0 + while ($null -ne $cur -and $Dirs.ContainsKey($cur)) { + $node = $Dirs[$cur] + if ($node.IsStandard) { + $prefix = $script:StandardDirs[$cur] + if ($prefix) { [void]$segments.Insert(0, $prefix.TrimEnd('\')) } + break + } + if ($node.Name) { [void]$segments.Insert(0, $node.Name) } + if ($null -eq $node.Parent -or $node.Parent -eq '') { break } + $cur = $node.Parent + if (++$guard -gt 1000) { break } + } + return ($segments -join '\') +} + +function Write-FeatureTree { + param($Info, $Children, [string]$Root, [int]$Depth) + $pad = ' ' * $Depth + $node = $Info[$Root] + $title = if ($null -ne $node -and $node.Title) { $node.Title } else { '' } + Write-Output ("{0}{1} ({2})" -f $pad, $Root, $title) + if ($Children.ContainsKey($Root)) { + foreach ($c in ($Children[$Root] | Sort-Object)) { + Write-FeatureTree -Info $Info -Children $Children -Root $c -Depth ($Depth + 1) + } + } +} + +foreach ($msi in $Path) { + $data = Read-MsiData -Msi $msi + + if ($ListFeatures) { + if (-not $Quiet) { + Write-Output ("# {0}" -f (Split-Path -Leaf $msi)) + } + # top-level features (no parent) + $roots = $data.FeatInfo.Keys | Where-Object { [string]::IsNullOrEmpty($data.FeatInfo[$_].Parent) } | Sort-Object + foreach ($r in $roots) { + Write-FeatureTree -Info $data.FeatInfo -Children $data.FeatChild -Root $r -Depth 0 + } + if (-not $Quiet) { Write-Output '' } + continue + } + + # --- Resolve which features are enabled / excluded --- + $enabled = $null + $excluded = $null + + $incList = Split-FeatureList $Features + if ($incList.Count -gt 0) { + $enabled = New-Object System.Collections.Generic.HashSet[string] + foreach ($f in $incList) { + if (-not $data.FeatInfo.ContainsKey($f)) { + Write-Warning "Feature not found in MSI: $f" + continue + } + foreach ($d in (Get-DescendantFeatures -Root $f -Children $data.FeatChild)) { + [void]$enabled.Add($d) + } + } + } + + $excList = Split-FeatureList $ExcludeFeatures + if ($excList.Count -gt 0) { + $excluded = New-Object System.Collections.Generic.HashSet[string] + foreach ($f in $excList) { + if (-not $data.FeatInfo.ContainsKey($f)) { + Write-Warning "Feature not found in MSI: $f" + continue + } + foreach ($d in (Get-DescendantFeatures -Root $f -Children $data.FeatChild)) { + [void]$excluded.Add($d) + } + } + } + + # --- Anchor for relative output --- + $anchor = '' + if ($RelativeTo) { + if (-not $data.Dirs.ContainsKey($RelativeTo)) { throw "Directory id not found in MSI: $RelativeTo" } + $anchor = Resolve-DirectoryPath -Id $RelativeTo -Dirs $data.Dirs + } + $anchorPrefix = if ($anchor) { $anchor.TrimEnd('\') + '\' } else { '' } + + # --- Build the file list, applying feature filter --- + $targets = New-Object System.Collections.ArrayList + foreach ($f in $data.Files) { + $fileFeats = @() + if ($data.CompFeat.ContainsKey($f.Component)) { $fileFeats = $data.CompFeat[$f.Component] } + + if ($null -ne $enabled) { + $any = $false + foreach ($ff in $fileFeats) { if ($enabled.Contains($ff)) { $any = $true; break } } + if (-not $any) { continue } + } + if ($null -ne $excluded) { + $skip = $false + foreach ($ff in $fileFeats) { if ($excluded.Contains($ff)) { $skip = $true; break } } + if ($skip) { continue } + } + + $dirId = $data.CompDir[$f.Component] + $dirPath = '' + if ($null -ne $dirId -and $dirId -ne '') { + $dirPath = Resolve-DirectoryPath -Id $dirId -Dirs $data.Dirs + } + $target = if ($dirPath) { "$dirPath\$($f.FileName)" } else { $f.FileName } + + if ($anchorPrefix -and $target.StartsWith($anchorPrefix, [System.StringComparison]::OrdinalIgnoreCase)) { + $target = $target.Substring($anchorPrefix.Length) + } + [void]$targets.Add($target) + } + + if (-not $Quiet) { + Write-Output ("# {0}" -f (Split-Path -Leaf $msi)) + Write-Output ("# total files: {0}" -f $targets.Count) + } + $targets | Sort-Object -Unique | ForEach-Object { Write-Output $_ } + if (-not $Quiet) { Write-Output '' } +}