Differences

This shows you the differences between two versions of the page.

Link to this comparison view

devel:windowsinstaller [2010/02/21 13:54] – The comparison table is still not correct - need to fix the minimal Perl first xueshengdevel:windowsinstaller [2011/09/18 19:58] (current) – external edit 127.0.0.1
Line 1: Line 1:
-====== How to build the Windows installer for POPFile ====== +====== How to build the Windows installer for POPFile 1.1.2 (draft) ====== 
-====== (This is an incomplete draft version) ======+ 
 +^The Community Edition (i.e. the free edition) of %%ActivePerl%% 5.8.x is no longer available^
  
 ===== Introduction ===== ===== Introduction =====
  
-POPFile is written in Perl. In addition to installing the POPFile program the Windows installer installs minimal Perl system which provides everything needed to run POPFile. The installer also ensures that new installations create at least two buckets and it can reconfigure email accounts for some email clients to make them use POPFile. Several small utilities are also installed to help diagnose problems and check the SQLite database.+These instructions describe how to use Windows system to build the POPFile Windows installer and the NSIS-based POPFile utilities for a new POPFile release. These notes record the steps taken to create the POPFile 1.1.2 release from scratch (i.e. on a system not previously used to build the installer).
  
-These instructions describe how to build the POPFile Windows installer and the NSIS-based POPFile utilities on a Windows system.+^Due to the way in which the NSIS compiler works, building an installer using the files used for an official POPFile release will __NOT__ result in an identical installer program (''setup.exe'').^
  
-^Please note that building an installer using exactly the same files used for an official POPFile release will __NOT__ result in an installer program (''setup.exe'') which is identical to the official installer because of the way in which the NSIS compiler works.^ 
  
-These notes were written after the POPFile 1.1.1 release and assume an up-to-date %%ActivePerl%% installation will be used therefore the minimal Perl may have newer versions of some modules used for the 1.1.1 release. If you wish to build an installer that installs an identical minimal Perl to that used for the 1.1.1 release the safest way to do this is by "reverse engineering" the minimal Perl from the 1.1.1 release. 
- 
-FIXME Explain how to "reverse engineer" the minimal Perl from the 1.1.1 release. 
  
 ===== Overview ===== ===== Overview =====
Line 21: Line 18:
     * NSIS Compiler     * NSIS Compiler
     * Additional NSIS plugins     * Additional NSIS plugins
 +
   * Obtain the source files from POPFile's Subversion repository   * Obtain the source files from POPFile's Subversion repository
-  Install the Kakasi package (used to analyze Japanese text) + 
-  * Install the SQLite command-line utilities+  Obtain the Kakasi package (used to analyze Japanese text) 
 + 
 +  * Obtain the relevant SQLite command-line utilities 
 + 
 +  * Install Make and 7-Zip (anything else?) 
   * Create the missing files (two change note files, anything else?)   * Create the missing files (two change note files, anything else?)
 +
   * Build the Perl-based programs (optional)   * Build the Perl-based programs (optional)
 +
   * Build the POPFile Windows installer   * Build the POPFile Windows installer
  
 ====== Install third-party software ====== ====== Install third-party software ======
  
 +===== ActivePerl =====
  
  
-===== ActivePerl ===== 
  
-The Windows version of POPFile uses a minimal Perl based upon %%ActiveState's%% [[http://www.activestate.com/activeperl/| ActivePerl]]. Although Perl 5.10.x has been available for some time, POPFile still uses Perl 5.8.x. When POPFile 1.1.1 was released the most recent %%ActivePerl%% 5.8.x release was %%ActivePerl%% 5.8.9 Build 826. 
  
-The Windows version of POPFile is a 32-bit program so the [[https://www.activestate.com/activeperl/downloads/| 32-bit (x86) Windows version of ActivePerl 5.8.x]] is required (the **Windows Installer (MSI)** version is recommended instead of the **AS Package (ZIP)** version). %%ActivePerl%% 5.8.9 Build 827 was released on 2 February 2010. 
  
-The source files used to build the POPFile installer assume that %%ActivePerl%% is installed in the default location (''C:\Perl'') but they can be easily reconfigured if %%ActivePerl%% is installed in a different location. ((If %%ActivePerl%% is not installed in the default location change the path specified in the "''%%!define C_PERL_DIR%%''" line of code in ''installer.nsi''. For the 1.1.1 release edit [[http://getpopfile.org/browser/tags/v1_1_1/windows/installer.nsi#L327| line 327]])) 
  
-==== Perl Updates ==== 
  
-Use PPM to apply all of the available updates to the %%ActivePerl%% installation. PPM may install additional packages not mentioned in the list of updates in order to meet the dependency requirements of the packages which are being updated.+==== Installation ==== 
 + 
 +The Windows version of POPFile uses a minimal Perl based upon %%ActiveState's%% [[http://www.activestate.com/activeperl/| ActivePerl]]. Although Perl 5.10.x, 5.12.x and 5.14.x have been released, POPFile 1.x still uses Perl 5.8.x. When work started on the POPFile 1.1.2 release the most recent %%ActivePerl%% 5.8.x Community Edition release was %%ActivePerl%% 5.8.9 Build 829. 
 + 
 +The Windows version of POPFile is a 32-bit program so the  Windows Installer (MSI) file for the [[http://www.activestate.com/activeperl/downloads/| Windows (x86) version of ActivePerl 5.8.x]] is required. When I used the MSI installation package I **disabled** the //Perl ISAPI//, //%%PerlEx%%// and //%%PerlScript%%// optionsI performed a //'clean'// install, I did not upgrade an existing %%ActivePerl%% installation. 
 + 
 +%%ActiveState%% only provide Community Edition (i.e. free) download links for the current builds of the Windows, Linux and Mac OS X versions of %%ActivePerl%%. ((If access to older versions (or builds for other platforms) is required an [[http://www.activestate.com/business-edition/| ActiveState Business Edition]] license has to be purchased.)) This means there may be some differences between the minimal Perl used in an official release and the minimal Perl produced using the current Community Edition of %%ActivePerl%%. If you wish to build an installer that installs an identical minimal Perl to that used for a particular POPFile release the safest way to do this is by "reverse engineering" the minimal Perl from that release. 
 + 
 +FIXME Explain how to "reverse engineer" the minimal Perl from a POPFile release. 
 + 
 +The source files used to build the POPFile installer assume that %%ActivePerl%% is installed in the default location (''C:\Perl'') but they can be easily reconfigured if %%ActivePerl%% is installed in a different location. ((If %%ActivePerl%% is not installed in the default location you need to change the path specified in the "''%%!define C_PERL_DIR%%''" line of code in ''installer.nsi''. For example, in the source for the POPFile 1.1.1 release edit [[http://getpopfile.org/browser/tags/v1_1_1/windows/installer.nsi#L327| line 327]] of '''installer.nsi'''))
  
-At the time of writing (February 2010) the PPM in %%ActivePerl%% 5.8.9 build 827 identified 20 packages to be updated. 
  
  
 ==== PPM Repositories ==== ==== PPM Repositories ====
  
-By default PPM is configured to use the %%ActiveState%% repository. POPFile requires some additional Perl modules which are not included in this repository therefore PPM has to be configured to use three additional repositories from the suggestions list included in PPM:+By default the Perl Package Manager (PPM) does not display the **Repo** column. It is recommended that the **Repo** column is selected in the **View Columns** list (under the **View** menu in PPM) as this makes it easy to see the source repository for each module listed.
  
-  * **bribes** (bribes :: Bribes de Perl+By default PPM is configured to use the %%ActiveState%% repository. POPFile requires some additional Perl modules which are not included in this repository therefore PPM has to be configured to use some additional repositories. Add the following repositories from the drop-down list provided by PPM:
-  * **tcool** (tcool :: Kenichi Ishigaki'repository+
-  * **uwinnipeg** (uwinnipeg :University of Winnipeg)+
  
-^**bribes** and **tcool** are the source of the optional SSL support files^+ Repo Code  ^  Repository Name                         ^ Packages Required for POPFile ^ 
 +**bribes**    | bribes :: Bribes de Perl               | **Net-SSLeay** package | 
 +**tcool**     | tcool :: Kenichi Ishigaki's repository | **IO-Socket-SSL** package | 
 +| **uwinnipeg** | uwinnipeg :: University of Winnipeg    | **Text-Kakasi** package |
  
 If a particular Perl module is available from more than one repository the POPFile Project has always preferred to use the %%ActiveState%% repository as the source. If a particular Perl module is available from more than one repository the POPFile Project has always preferred to use the %%ActiveState%% repository as the source.
  
-By default PPM does not display the **Repo** column. It is recommended that the **Repo** column is selected in the **View Columns** list (under the **View** menu in PPM) as this makes it easy to see the source repository for each module listed. 
  
-==== Additional Perl packages ==== 
  
-POPFile requires some additional Perl packages which are not part of the default %%ActivePerl%% installation. Use PPM to install the following extra Packages: 
  
-^ Package Name ^ Version ^ Description ^ 
-|%%BerkeleyDB%%       |0.22  |Perl extension for %%BerkeleyDB%%| 
-|DBD-SQLite2      |0.33  |Self-contained RDBMS in a DBI driver (sqlite2.x)| 
-|File-Glob-Windows|0.1.4 |glob routine for Windows environment| 
-|IO-Socket-Socks  |0.1   |Provides a way to open a connection to a SOCKS v5 proxy| 
-|Scalar-List-Utils|1.22  |Common Scalar and List utility subroutines| 
-|Text-Kakasi      |2.04  |Perl frontend to Kakasi| 
-|Win32-GUI        |1.06  |Perl-Win32 Graphical User Interface Extension| 
  
-The [[http://ppm.activestate.com/PPMPackages/zips/8xx-builds-only/Windows/BerkeleyDB-0.22.zip| BerkeleyDB v0.22]] and [[http://ppm.activestate.com/PPMPackages/zips/8xx-builds-only/Windows/DBD-SQLite2-0.33.zip| DBD-SQLite2 v0.33]] packages are available from %%ActiveState%% as zip files which can be installed using PPM's command-line mode. 
  
-  * PPM refused to install DBD-SQLite2 until I removed the "''<REQUIRE NAME="DBI" VERSION="1.21" />''" line from its PPD file 
  
-The **%%BerkeleyDB%%** package is used when upgrading an old POPFile 0.20.x installation. An old version of this package is required in order to be able to upgrade databases created by POPFile 0.20.x (otherwise the database upgrade loses all of the old data from the %%BerkeleyDB%% database files!). 
  
-By default POPFile databases currently use the SQLite 3.x format. The **DBD-SQLite2** package is used when upgrading an old SQLite 2.x format database (as used by POPFile 0.21.0 to 1.0.1). 
  
-If POPFile is to be used to make connections to mail servers that require SSL connections (e.g. Gmail) then two additional packages are required (Net_SSLeay.pm and IO-Socket-SSL). However these packages are not included in the installer, they are always downloaded, if required, during installation. 
  
-FIXME The **Net_SSLeay.pm** package is very old and generates conflict warnings when PPM tries to install or update other packages; need to switch to the newer **Net-SSLeay** package (note the hyphen instead of an underscore in this package's name!). 
  
-FIXME The **Net-SSLeay** contains the %%OpenSSL%% DLLs (unlike the old **Net_SSLeay.pm** package) so there is no longer any need to download these DLLs separately. 
  
-===== Minimal Perl Comparison ===== 
  
-As mentioned earlier, these notes were written after POPFile 1.1.1 was released. Some Perl packages have been updated since POPFile 1.1.1 was released. This table summarises the differences between the minimal Perl shipped with the 1.1.1 release and that produced by following these notes: 
  
-FIXME There are still some problems with the new minimal Perl (it does not use the latest versions of some modules)+==== Perl Updates ==== 
 + 
 +Use the Perl Package Manager (PPM) to apply all of the available updates to the %%ActivePerl%% installation. PPM may install additional packages not mentioned in the list of updates in order to meet the dependency requirements of the packages which are being updated. 
 + 
 +When PPM updates an existing Perl package or installs a new Perl package these changes are stored separately from the packages included in the %%ActivePerl%% distribution. This means that the Windows installer uses a mixture of original and new/updated package paths when assembling the minimal Perl
 + 
 +Here is a complete list of the PPM updates applied to a clean installation of %%ActivePerl%% 5.8.9 build 829 for the POPFile 1.1.2 release. Each package was updated separately (i.e. the updates were done one package at a time). 
 + 
 +^ Package Name           ^ Version ^ Repository      ^ Description ^ 
 +|Archive-Extract         |0.52     |%%ActiveState%% |Generic archive extracting mechanism | 
 +|Attribute-Handlers      |0.91     |%%ActiveState%% |Simpler definition of attribute handlers | 
 +|common-sense            |3.4      |%%ActiveState%% |save a tree AND a kitten, use common::sense! | 
 +|Compress-Raw-Bzip2      |2.035    |%%ActiveState%% |Low-Level Interface to bzip2 compression library | 
 +|Compress-Raw-Zlib       |2.035    |%%ActiveState%% |Low-Level Interface to zlib compression library | 
 +|constant                |1.21     |%%ActiveState%% |Perl pragma to declare constants | 
 +|DBD-ODBC                |1.27     |%%ActiveState%% |ODBC DBD for Perl DBI | 
 +|Digest-SHA              |5.62     |%%ActiveState%% |Perl extension for SHA-1/224/256/384/512 | 
 +|Encode                  |2.43     |%%ActiveState%% |character encodings in Perl| 
 +|%%ExtUtils-CBuilder%%       |0.280202 |%%ActiveState%% |Compile and link C code for Perl modules | 
 +|%%ExtUtils-Command%%        |1.17     |%%ActiveState%% |utilities to replace common UNIX commands in Makefiles etc. | 
 +|File-Fetch              |0.32     |%%ActiveState%% |Generic file fetching code | 
 +|%%File-HomeDir%%            |0.97     |%%ActiveState%% |Find your home and other directories on any platform | 
 +|Filter                  |1.39     |%%ActiveState%% |Source Filters | 
 +|Filter-Simple           |0.87     |%%ActiveState%% |Simplified source filtering | 
 +|HTML-Tree               |4.2      |%%ActiveState%% |Class for objects that represent HTML elements | 
 +|IO-Compress             |2.035    |%%ActiveState%% |IO Interface to compressed data files/buffers | 
 +|IPC-Cmd                 |0.70     |%%ActiveState%% |A cross platform way of running (interactive) commandline programs. | 
 +|JSON                    |2.53     |%%ActiveState%% |JSON (%%JavaScript%% Object Notation) encoder/decoder | 
 +|JSON-XS                 |2.3      |%%ActiveState%% |null | 
 +|Locale-Codes            |3.16     |%%ActiveState%% |a distribution of modules to handle locale codes | 
 +|Log-Message-Simple      |0.08     |%%ActiveState%% |Simplified interface to Log::Message | 
 +|%%Math-BigInt%%             |1.993    |%%ActiveState%% |Arbitrary size integer/float math package | 
 +|%%Math-BigInt-FastCalc%%    |0.28     |%%ActiveState%% |%%Math::BigInt::Calc%% with some XS for more speed | 
 +|%%Math-BigRat%%             |0.2602   |%%ActiveState%% |Arbitrary big rational numbers | 
 +|Math-Complex            |1.57     |%%ActiveState%% |complex numbers and associated mathematical functions | 
 +|Module-Build            |0.3624   |%%ActiveState%% |Build and install Perl modules | 
 +|Module-Metadata         |1.000004 |%%ActiveState%% |Gather package and POD information from perl module files (automatically installed by PPM when the 'Module-Build 0.3624' package was installed) | 
 +|version                 |0.88     |%%ActiveState%% |Structured version objects (automatically installed by PPM when the 'Module-Build 0.3624' package was installed) | 
 +|Perl-OSType             |1.002    |%%ActiveState%% |Map Perl operating system names to generic types (automatically installed by PPM when the 'Module-Build 0.3624' package was installed ) | 
 +|CPAN-Meta-YAML          |0.003    |%%ActiveState%% |Read and write a subset of YAML for CPAN Meta files (automatically installed by PPM when the 'Module-Build 0.3624' package was installed ) | 
 +|Module-Corelist         |2.49     |%%ActiveState%% |what modules shipped with versions of perl | 
 +|Module-Load-Conditional |0.44     |%%ActiveState%% |Looking up module information / loading at runtime | 
 +|Object-Assessor         |0.42     |%%ActiveState%% |Per object accessors | 
 +|Params-Util             |1.04     |%%ActiveState%% |Simple, compact and correct param-checking functions | 
 +|parent                  |0.225    |%%ActiveState%% |Establish an ISA relationship with base classes at compile time | 
 +|Pod-Simple              |3.16     |%%ActiveState%% |framework for parsing Pod | 
 +|SOAP-Lite               |0.712    |%%ActiveState%% |Perl's Web Services Toolkit (generates an error message about Apache::) | 
 +|SQL-Statement           |1.33     |%%ActiveState%% |SQL parsing and processing engine | 
 +|Storable                |2.25     |%%ActiveState%% |persistence for Perl data structures | 
 +|Term-UI                 |0.26     |%%ActiveState%% |User interfaces via %%Term::ReadLine%% made easy | 
 +|Test-Differences        |0.61     |%%ActiveState%% |Test strings and data structures and show differences if not ok | 
 +|Test-Harness            |3.23     |%%ActiveState%% |Run Perl standard test scripts with statistics | 
 +|Test-Simple             |0.98     |%%ActiveState%% |Basic utilities for writing tests. | 
 +|Text-CSV_XS             |0.82     |%%ActiveState%% |Comma-Separated Values manipulation routines | 
 +|Text-Diff               |1.41     |%%ActiveState%% |Perform diffs on files and record sets | 
 +|Text-Glob               |0.09     |%%ActiveState%% |match globbing patterns against text | 
 +|threads                 |1.83     |%%ActiveState%% |Perl interpreter-based threads | 
 +|threads-shared          |1.37     |%%ActiveState%% |Perl extension for sharing data structures between threads | 
 +|%%Time-HiRes%%              |1.9722   |%%ActiveState%% |High resolution alarm, sleep, gettimeofday, interval timers | 
 +|Unicode-Normalize       |1.07     |%%ActiveState%% |Unicode Normalization Forms | 
 +|URI                     |1.58     |%%ActiveState%% |Uniform Resource Identifiers (absolute and relative) | 
 +|Win32-API               |0.62     |%%ActiveState%% |Perl Win32 API Import Facility | 
 +|Win32API-Registry       |0.32     |%%ActiveState%% |Low-level access to Win32 system API calls from WINREG.H | 
 +|%%YAML-LibYAML%%            |0.35     |%%ActiveState%% | | 
 + 
 + 
 + 
 + 
 + 
 +==== Additional Perl packages ==== 
 + 
 +POPFile requires some additional Perl packages which are not part of the default %%ActivePerl%% installation. Use PPM to install the following extra Packages: 
 + 
 +^ Package Name           ^ Version ^ Repository      ^ Description ^ 
 +|Class-Inspector   |1.25  |%%ActiveState%% |Get information about a class and its structure | 
 +|File-Glob-Windows |0.1.4 |%%ActiveState%% |glob routine for Windows environment | 
 +|IO-Socket-Socks   |0.4   |%%ActiveState%% |Provides a way to create socks client or server both 4 and 5 version | 
 +|IO-Socket-SSL     |1.13  |  tcool         |Nearly transparent SSL encapsulation for IO::Socket::INET | 
 +|Net-SSLeay        |1.36  |  bribes        |Perl extension for using %%OpenSSL%% (automatically installed by PPM when the 'IO-Socket-SSL 1.13' package was installed
 +|Text-Kakasi       |2.04  |  uwinnipeg     |perl frontend to kakasi | 
 +|%%TimeDate%%          |1.20  |%%ActiveState%% |Parsing of date strings | 
 +|Win32-GUI         |1.06  |%%ActiveState%% |Perl-Win32 Graphical User Interface Extension | 
 + 
 +POPFile has used a SQLite 3.x format database by default since the 1.1.0 release in November 2008. To allow POPFile to upgrade databases used by older versions of POPFile, two more packages are required: 
 + 
 +^ Package Name ^ Version ^ Description ^ 
 +|%%BerkeleyDB%%   |0.22  |Perl extension for %%BerkeleyDB%%| 
 +|DBD-SQLite2      |0.33  |Self-contained RDBMS in a DBI driver (sqlite2.x)| 
 + 
 +The **%%BerkeleyDB%%** package is used when upgrading a POPFile 0.20.x installation. An old version of this package is required in order to be able to upgrade databases created by POPFile 0.20.x (otherwise the database upgrade loses all of the old data from the %%BerkeleyDB%% database files!). 
 + 
 +The **DBD-SQLite2** package is used when upgrading an old SQLite 2.x format database (as used by POPFile 0.21.0 to 1.0.1). 
 + 
 +Since both of these packages are old versions it seems that an [[http://www.activestate.com/business-edition/| ActiveState Business Edition]] license has to be purchased in order to download the binary versions from %%ActiveState%%. However the package source files are still available from CPAN ([[http://search.cpan.org/CPAN/authors/id/P/PM/PMQS/BerkeleyDB-0.22.tar.gz| BerkeleyDB-0.22.tar.gz]] and [[http://search.cpan.org/CPAN/authors/id/M/MS/MSERGEANT/DBD-SQLite2-0.33.tar.gz| DBD-SQLite2-0.33.tar.gz]]). 
 + 
 +FIXME Give download links for the %%BerkeleyDB-0.22-modified.zip%% and DBD-SQLite2-0.33.zip files plus installation instructions for these files.
  
-^ Differences between POPFile 1.1.1's minimal Perl and the one created by following the instructions above ^^^^ +FIXME Give instructions for using PPM's command-line mode to install %%BerkeleyDB%% v-.22 and DBD-SQLite2 v0.33
-^Module Name^POPFile 1.1.1^Using above notes^Module Description or Package source for module^ +
-^ ^Perl 5.8.9 Build 826^Perl 5.8.9 Build 827^ ^ +
-| %%AutoLoader%%      | 5.67        | 5.70     | load subroutines only on demand | +
-| base                | 2.13        | 2.14     | Establish an ISA relationship with base classes at compile time | +
-| Carp-Clan           | 6.00        | 6.04     | Report errors from perspective of caller of a 'clan' of modules | +
-| constant            | 1.17        | 1.19     | Perl pragma to declare constants | +
-| Cwd                 | 3.29        | 3.31     | Get pathname of current working directory | +
-| Date::Format        | 2.22        | 2.24     | Part of %%TimeDate%% v1.20, Parsing of date strings | +
-| Date::Parse         | 2.27        | 2.30     | Part of %%TimeDate%% v1.20, Parsing of date strings | +
-| DBD::SQLite         | 1.25        | 1.29     | Self Contained SQLite RDBMS in a DBI Driver | +
-| DBI                 | 1.608       | 1.609    | Database independent interface for Perl | +
-| Digest-MD5          | 2.37        | 2.39     | Perl interface to the MD5 algorithm | +
-| Encode              | 2.26        | 2.39     | character encodings | +
-| File::Glob::Windows | 0.1.3       | 0.1.4    | glob routine for Windows environment | +
-%%GetOpt-Long%%     | 2.37        | 2.38     | Extended processing of command line options | +
-| IO                  | 1.23        | 1.25     | Perl core IO modules | +
-| lib                 | 0.61        | 0.62     | manipulate @INC at compile time | +
-| List::Util          | 1.21        | 1.22     | Part of Scalar-List-Utils v1.22, Common Scalar and List utility subroutines | +
-| LWP                 | 5.826       | 5.834    | The World-Wide Web library for Perl | +
-| MIME-Base64         | 3.07        | 3.08     | MIME-Base64 | +
-| %%PathTools%%       | 3.29        | 3.31     | %%PathTools%% | +
-| Scalar::Util        | 1.21        | 1.22     | Part of Scalar-List-Utils v1.22, Common Scalar and List utility subroutines | +
-| SOAP::Lite          | 0_60 public | 0.710.10 | Part of SOAP-Lite v0.710.10, Perl's Web Services Toolkit | +
-| %%Time-HiRes%%      | 1.9715      | 1.9719   | %%Time-HiRes%% | +
-| Time::Zone          | 2.22        | 2.24     | Part of %%TimeDate%% v1.20, Parsing of date strings | +
-| URI                 | 1.38        | 1.52     | Uniform Resource Identifiers (absolute and relative) | +
-| Win32-API           | 0.58        | 0.59     | Perl Win32 API Import Facility | +
-| XML::Parser::Lite   | 0_60 public | 0.710.10 | Part of SOAP-Lite v0.710.10, Perl's Web Services Toolkit | +
-| XMLRPC::Lite        | 0_60 public | 0.710.10 | Part of SOAP-Lite v0.710.10, Perl's Web Services Toolkit |+
  
 ===== PDK - Perl Dev Kit (optional) ===== ===== PDK - Perl Dev Kit (optional) =====
Line 136: Line 193:
   * ''popfile-service.exe'' (runs POPFile as a service)   * ''popfile-service.exe'' (runs POPFile as a service)
  
-These programs are all built using [[http://www.activestate.com/perl_dev_kit/| ActiveState's Perl Dev Kit (PDK)]]. The Windows version of POPFile is a 32-bit program so the 32-bit (x86) Windows version of the PDK is required. Unlike %%ActivePerl%%, the PDK requires a licence. In January 2010 the cost of a single-user PDK licence was US $295. A time-limited free trial version of the PDK is also available.+These programs are all built using [[http://www.activestate.com/perl_dev_kit/| ActiveState's Perl Dev Kit (PDK)]]. The Windows version of POPFile is a 32-bit program so the 32-bit (x86) Windows version of the PDK is required. Unlike %%ActivePerl%%, the PDK requires a licence. In June 2011 the cost of a single-user PDK licence was US $295. A time-limited free trial version of the PDK is also available.
  
-Note that POPFile's Subversion repository includes built versions of these six programs which is why the PDK is described as "optional" here.+Note that POPFile's Subversion repository includes pre-built versions of these six Perl-based programs which is why the PDK is described as "optional" here. The Subversion log entry for each program normally identifies the PDK version used to build the program.
  
-PDK 8.2.0 build 291995 was released Febraury 2010+PDK 9.0.1 build 293382 (released on 9 August 2010) was used to build these six programs for the POPFile 1.1.2 release.
  
 ===== NSIS Compiler ===== ===== NSIS Compiler =====
Line 160: Line 217:
 The POPFile installer and some of the NSIS-based POPFile utilities require some additional NSIS plugins. Each plugin is usually made available as a zip file containing the plugin DLL, the source code for the DLL, some documentation, one or more example scripts and occasionally some macros and other support functions in a NSIS header (*.nsh) file. The POPFile installer and some of the NSIS-based POPFile utilities require some additional NSIS plugins. Each plugin is usually made available as a zip file containing the plugin DLL, the source code for the DLL, some documentation, one or more example scripts and occasionally some macros and other support functions in a NSIS header (*.nsh) file.
  
-^ Plugin Link ^ Version used by POPFile 1.1.^ Description ^ +^ Plugin Link ^ Version used by POPFile 1.1.^ Description ^ 
-| [[http://nsis.sourceforge.net/AccessControl_plug-in| AccessControl]]            | [[http://nsis.sourceforge.net/mediawiki/images/archive/4/4a/20091105165009!AccessControl.zip| 23 January 2008]] | Access Control List (ACL) management |+| [[http://nsis.sourceforge.net/AccessControl_plug-in| AccessControl]]            | 5 November 2009 (current version) | Access Control List (ACL) management |
 | [[http://nsis.sourceforge.net/DumpLog_plug-in| DumpLog]]                        | v1.0 (current version) | Dump the log of the installer (installer details) to a file |    | [[http://nsis.sourceforge.net/DumpLog_plug-in| DumpLog]]                        | v1.0 (current version) | Dump the log of the installer (installer details) to a file |   
 | [[http://nsis.sourceforge.net/DumpState_plug-in| dumpstate]]                    | v0.2 (current version) | Displays the current state of the NSIS variables and stack ((The **dumpstate** plugin is not used by the installer or any of the NSIS-based utilities for POPFile. It is listed here as it is a very useful debugging aid.)) | | [[http://nsis.sourceforge.net/DumpState_plug-in| dumpstate]]                    | v0.2 (current version) | Displays the current state of the NSIS variables and stack ((The **dumpstate** plugin is not used by the installer or any of the NSIS-based utilities for POPFile. It is listed here as it is a very useful debugging aid.)) |
 | [[http://forums.winamp.com/showthread.php?postid=1756112#post1756112| getsize]] | v1.0 (current version) | Finds size of a file or folder, counts files in folder | | [[http://forums.winamp.com/showthread.php?postid=1756112#post1756112| getsize]] | v1.0 (current version) | Finds size of a file or folder, counts files in folder |
-| [[http://nsis.sourceforge.net/GetVersion_(Windows)_plug-in| GetVersion]]        | [[http://nsis.sourceforge.net/mediawiki/images/archive/8/8a/20090724110820!GetVersion.zip| v0.9]] | Windows version information (name, type, version, etc) | +| [[http://nsis.sourceforge.net/GetVersion_(Windows)_plug-in| GetVersion]]        | v1.5 (current version) | Windows version information (name, type, version, etc) | 
-| [[http://nsis.sourceforge.net/Inetc_plug-in| inetc]]                            | [[http://nsis.sourceforge.net/mediawiki/images/archive/c/c9/20090822092840!Inetc.zip| 1 September 2008]] | Internet client plug-in for files download and upload | +| [[http://nsis.sourceforge.net/Inetc_plug-in| inetc]]                            | 28 April 2011 (current version) | Internet client plug-in for files download and upload | 
-| [[http://nsis.sourceforge.net/LockedList_plug-in| LockedList]]                  | [[http://nsis.sourceforge.net/mediawiki/images/archive/c/c9/20090822092840!Inetc.zip| v0.7 RC2]] | Gets a list of programs that are locking a selection of files | +| [[http://nsis.sourceforge.net/LockedList_plug-in| LockedList]]                  | v2.3 (current version) | Gets a list of programs that are locking a selection of files | 
-| [[http://nsis.sourceforge.net/MD5_plugin| md5dll]]                              | [[http://nsis.sourceforge.net/mediawiki/images/archive/d/d7/20100123203607!Md5dll.zip| v0.4]] | Generates a md5 value from contents of specified file | +| [[http://nsis.sourceforge.net/MD5_plugin| md5dll]]                              | v0.5 (current version) | Generates a md5 value from contents of specified file | 
-| [[http://nsis.sourceforge.net/MoreInfo_plug-in| MoreInfo]]                      | 6 June 2005 (current version) | Retrieves version information from files | +| [[http://nsis.sourceforge.net/MoreInfo_plug-in| MoreInfo]]                      | v1.0.1.2 (current version) | Retrieves version information from files | 
-| [[http://nsis.sourceforge.net/NsUnzip_plugin| nsUnzip]]                         | [[http://nsis.sourceforge.net/mediawiki/images/archive/8/88/20091127170431!NsUnzip.zip| v1.0]] | Test or extract files from a ZIP archive | +| [[http://nsis.sourceforge.net/NsUnzip_plugin| nsUnzip]]                         | v1.1 (current version)  | Test or extract files from a ZIP archive | 
-| [[http://nsis.sourceforge.net/ShellLink_plug-in| ShellLink]]                    | v1.(current version) | Reads/Changes shell link (.lnk) files | +| [[http://nsis.sourceforge.net/ShellLink_plug-in| ShellLink]]                    | v1.(current version) | Reads/Changes shell link (.lnk) files | 
-| [[http://nsis.sourceforge.net/NSIS_Simple_Service_Plugin| SimpleSC]]            | v1.26 (current version) | NSIS Simple Service Plugin | +| [[http://nsis.sourceforge.net/NSIS_Simple_Service_Plugin| SimpleSC]]            | v1.29 (current version) | NSIS Simple Service Plugin | 
-| [[http://nsis.sourceforge.net/UAC_plug-in| UAC]]                                | [[http://stashbox.org/v/373549/UAC%20v0.0.11c%20-%2020090124.zip| v0.0.11c]] (not on NSIS wiki) | Helps work around UAC problems on Vista/Windows 7 | +| [[http://nsis.sourceforge.net/UAC_plug-in| UAC]]                                | [[http://stashbox.org/560965/UAC%20v0.0.11d.zip| v0.0.11d]] (not on NSIS wiki) | Helps work around UAC problems on Vista/Windows 7 | 
-| [[http://nsis.sourceforge.net/UnTGZ_plug-in| untgz]]                              | [[http://nsis.sourceforge.net/mediawiki/images/archive/9/9d/20100115165147!Untgz.zip| v1.0.15]] | Extracts files from a simple tarball |+| [[http://nsis.sourceforge.net/UnTGZ_plug-in| untgz]]                              | v1.0.17 (current version) | Extracts files from a simple tarball |
  
-Version information is rarely included in these DLLs. Some plugins are rarely updated, others get frequent updates; this means that some plugins come in zip files which no longer match the current folder structure using by the NSIS compiler package.+Version information is not usually included in these DLLs so it can be difficult to identify a particular DLL.
  
-To make it easier to build the installer and NSIS-based utilities for POPFile these extra plugins (and their associated documentation etc) have been repackaged as a single zip file ([[http://getpopfile.org/installer/plugins/1.1.1-repackaged-plugins.zip| 1.1.1-repackaged-plugins.zip]]) which can simply be unzipped into the main NSIS compiler folder (normally ''C:\Program Files\NSIS''). A complete set of the original plugin zip files is also available ([[http://getpopfile.org/installer/plugins/1.1.1-original-plugins.zip| 1.1.1-original-plugins.zip]]) as some of the plugins are not the most recent versions and are therefore harder to find.+Some plugins are rarely updated, others get frequent updates; this means that some plugins come in zip files which no longer match the current folder structure using by the NSIS compiler package.
  
-FIXME Need to upgrade to %%GetVersion%% v1.1 (the current releasebecause v0.9 cannot detect Windows 7 (it returns an empty string)+To make it easier to build the installer and NSIS-based utilities for POPFile these extra plugins (and their associated documentation etc) have been repackaged as a single zip file ([[http://getpopfile.org/installer/plugins/1.1.1-repackaged-plugins.zip| 1.1.1-repackaged-plugins.zip]]) which can simply be unzipped into the main NSIS compiler folder (normally ''C:\Program Files\NSIS''). A complete set of the original plugin zip files is also available ([[http://getpopfile.org/installer/plugins/1.1.1-original-plugins.zip| 1.1.1-original-plugins.zip]]as some of the plugins are not the most recent versions and are therefore harder to find.
  
-FIXME Do any other plugins need to be updated before the next release?+FIXME Prepare 'original' and 'repackaged' collections of NSIS plugins used for the POPFile 1.1.2 installer
  
 ====== Obtain the source files from Subversion ====== ====== Obtain the source files from Subversion ======
Line 197: Line 254:
  
 Use a Subversion client to checkout the current POPFile 1.x development program source files: Use a Subversion client to checkout the current POPFile 1.x development program source files:
 +
 |URL                   |''%%svn://getpopfile.org/branches/b0_22_2/engine%%'' | |URL                   |''%%svn://getpopfile.org/branches/b0_22_2/engine%%'' |
 |Destination directory |''%%C:\Build\POPFile\engine%%''                      | |Destination directory |''%%C:\Build\POPFile\engine%%''                      |
  
 Use a Subversion client to checkout the current POPFile 1.x development installer and other source files: Use a Subversion client to checkout the current POPFile 1.x development installer and other source files:
 +
 |URL                   |''%%svn://getpopfile.org/branches/b0_22_2/windows%%'' | |URL                   |''%%svn://getpopfile.org/branches/b0_22_2/windows%%'' |
 |Destination directory |''%%C:\Build\POPFile\windows%%''                      | |Destination directory |''%%C:\Build\POPFile\windows%%''                      |
Line 220: Line 279:
 The Kakasi package is distributed as a ZIP file which contains several folders (''bin'', ''doc'', ''include'', ''lib'' and ''share'') all of which are under a top level folder called ''kakasi''. Unzip the Kakasi package into the new **''C:\Build\POPFile\windows\kakasi_package''** directory. The Kakasi package is distributed as a ZIP file which contains several folders (''bin'', ''doc'', ''include'', ''lib'' and ''share'') all of which are under a top level folder called ''kakasi''. Unzip the Kakasi package into the new **''C:\Build\POPFile\windows\kakasi_package''** directory.
  
-The ''C:\Build\POPFile\windows\kakasi_package'' directory should now contain a directory called ''kakasi'' which contains the files and sub-directories for the Kakasi package.+The **''C:\Build\POPFile\windows\kakasi_package''** directory should now contain a directory called **''kakasi''** which contains the files and sub-directories for the Kakasi package.
  
 ====== SQLite command-line utilities ====== ====== SQLite command-line utilities ======
Line 231: Line 290:
  
 ^ Module Name ^ Version ^ Library Version ^ Download link for SQLite command-line utility ^ ^ Module Name ^ Version ^ Library Version ^ Download link for SQLite command-line utility ^
-|DBD::SQLite  |1.25     | SQLite 3.6.13   | http://www.sqlite.org/sqlite-3_6_13.zip | +|DBD::SQLite  |1.31     | SQLite 3.7.2    | http://www.sqlite.org/sqlite-3_7_2.zip |
-|DBD::SQLite  |1.29     | SQLite 3.6.22   | http://www.sqlite.org/sqlite-3_6_22.zip |+
 |DBD::SQLite2 |0.33     | SQLite 2.8.15   | http://www.sqlite.org/sqlite-2_8_17.zip | |DBD::SQLite2 |0.33     | SQLite 2.8.15   | http://www.sqlite.org/sqlite-2_8_17.zip |
  
-Notes: +Note: DBD::SQLite2 v0.33 is the most recent SQLite 2.x format module and v2.8.17 is the most recent SQLite 2.x format command-line utility.
-  - DBD::SQLite v1.25 is the version used for the POPFile 1.1.1 release +
-  - DBD::SQLite v1.29 is the version used if the instructions on this page are used to assemble the minimal Perl +
-  - DBD::SQLite2 v0.33 is the most recent SQLite 2.x format module in the %%ActiveState%% repository and v2.8.17 is the most recent SQLite 2.x format command-line utility.+
  
 Extract the "''sqlite.exe''" and "''sqlite3.exe''" files from the appropriate zip files and store them in the "''C:\Build\POPFile\windows''" directory. Extract the "''sqlite.exe''" and "''sqlite3.exe''" files from the appropriate zip files and store them in the "''C:\Build\POPFile\windows''" directory.
Line 246: Line 301:
 The release notes are not stored in the project's Subversion repository. The release notes are plain text files and should be stored in the ''C:\Build\POPFile\engine'' directory. The release notes are not stored in the project's Subversion repository. The release notes are plain text files and should be stored in the ''C:\Build\POPFile\engine'' directory.
  
-Use a text editor to create a plain text file called ''v1.1.1.change'' (for the English release notes) and another called ''v1.1.1.change.nihongo'' (for the Japanese release notesif you don't know Japanese just use a copy of the ''v1.1.1.change'' file).+Use a text editor to create a plain text file called ''v1.1.2.change'' (for the English release notes) and another called ''v1.1.2.change.nihongo'' (for the Japanese release notes). Although the Windows installer can be built if the Japanese file is missing the cross-platform build will fail with an error message if the file cannot be found (so if no Japanese text is available just use a re-named copy of the ''v1.1.2.change'' file).
  
-If the files checked out from Subversion are marked with a release number other than 1.1.then change the filenames of these two files to match (e.g. ''v1.1.2.change'' and ''v1.1.2.change.nihongo'')+If the files checked out from Subversion are marked with a release number other than 1.1.then change the filenames of these two files to match (i.e. ''v1.1.2.change'' and ''v1.1.2.change.nihongo'')
  
 ====== Build the Perl-based programs (optional) ====== ====== Build the Perl-based programs (optional) ======
  
 FIXME Either build the six ''popfile*.exe'' files (may need to edit the ''engine\vars.mak'' file) or use the versions available from Subversion (or a suitable official release?) FIXME Either build the six ''popfile*.exe'' files (may need to edit the ''engine\vars.mak'' file) or use the versions available from Subversion (or a suitable official release?)
 +
  
 ====== Build the Windows installer ====== ====== Build the Windows installer ======
  
 FIXME Add instructions here (use **RC="-SVN"** option?) FIXME Add instructions here (use **RC="-SVN"** option?)
 +<code dos>
 +make winexe
 +make xplat
 +make windows
 +</code>
 +
 +<code dos>
 +make winexe
 +make xplat RC="-RC1"
 +make windows RC="-RC1"
 +</code>
 +
 +''**make winexe**'' uses the PDK to build the six Perl-based programs.
 +
 +''**make xplat**'' generates the cross-platform zip file (and I think it also generates a file which is required when building the Windows installer).
  
 +''**make windows**'' build the Windows installer.
 
devel/windowsinstaller.1266760446.txt.gz · Last modified: 2010/02/21 14:54 (external edit)
Old revisions

Should you find anything in the documentation that is incomplete, unclear, outdated or just plain wrong, please let us know and leave a note in the Documentation Forum.

Recent changes RSS feed Donate Driven by DokuWiki
The content of this wiki is protected by the GNU Fee Documentation License