PHP Installer for Win32, by Wez Furlong ============================================================== $Id$ Here are the supporting scripts for building the win32 PHP installer. Requirements: MSI-2-XML from http://msi2xml.sourceforge.net/#Installation Installer Layout: We have the following features: o PHP Core - Always installed. Includes php4ts.dll, php.ini + common dlls and config files o SAPI Contains a node for each stable SAPI o Extensions Contains a node for each stable extension o Experimental o SAPI Experimental SAPIs o Extensions Experimental Extensions You need to have the Super-Pimp Installer from Nullsoft (Open Source). It is available here: http://nsis.sourceforge.net/ To build an installer, you need: o A Source Tree o A win32 snapshot (extracted from the .zip) (The source tree and snapshot should have matching versions!) A Script/Batch file. I'm using this (in a .bat file): ---------------------------------------------------------------- cd cli\php \win32\installer\gen-nsis.php > php.nsi "C:\Program Files\NSIS\makensis" /pause /nocd php.nsi ---------------------------------------------------------------- ** It is a good idea to examine the php.nsi file for WARNING ** comments. These indicate inconsistencies about your source ** tree structure. This will generate InstallPHP.exe, where is the version of the php in the snapshot. The Installer will be placed in the snapshot root. Installer Concept ================= Maintaining installers is a real chore, so we use PHP to generate as much as possible. The gen-nsis.php script will examine the extensions dir from the snapshot and then attempt to extract information about the extensions from the source code. The sapi dir is subjected to similar treatment. Throughout the installation, values for php.ini settings are decided; these are appended to a temporary file. After everything has been installed, the iniset.php script is run and merges the values from the temporary file into the "official" php.ini. These scripts take advantage of features found in PHP 4.3.0 and later, so you can't build a PHP 4.2.x distro with it. Hacking ======= While hacking, it's a good idea to comment out the SetCompressor line; it will speed up your installer builds... Also, switch the logic for the $SYSDIR define at the top to install vital DLLs to a fake system dir. vim:et:tw=78