I have just checked in what basically is a reimplementation of the defunct support for creating patches on and for Windows.

Building OpenOffice without the new "release=t" flag should work like before. If you don't plan to build patches then you can stop reading now (just tell me if your builds break).


Support for patch creation is still in its early stages. It may or may not work. Having said that, I would not mind if you would try it out, just don't apply them yet outside a virtual machine. At the moment I am interested to get the workflow right and reliably working. It is a lengthy process, something in the area of 30 minutes per language, and I can make only so many test runs. But you don't have to run it to point out how to improve the workflow.


Here is how I currently think how patch creation can work. Note that patch creation is something that I expect is only done once per release by the release manager (or whoever builds the release installation sets.) It may sound very technical but it really list only the most important points.


0. Expected (disk) space and time requirements:
Disk space: Number of languages *
   - Previous downloadable installation set (EXE) in ext_sources/
   - The above unpacked in instsetoo_native/wntmsci12.pro
   - The CAB file of the above (maybe 95% of the installation set) unpacked
- The installation set and downloadable installation set of the current release
   - A copy of the above, arranged so that msimsp.exe can process it.
   - The MSP patch, about 10% of the downloadable installation set.
   I did not measure it but I would estimate the total to be around 500 MB
Time:
- Download previous installation set from archive.apache.org (use a local cache if you can)
   - Unpack the above
   - Unpacke the CAB inside the above
   - Build the installation set of the current version
   - Make a local copy of the above
   - Run msimsp.exe
   All in all about 30 minutes


1. Prepare the release builds (one per language) that are compatible with the previous release.

Why: There are a lot of conditions to fulfill before you can create a patch between two installation sets.
One is that files must not be deleted.
Another is that files keep the same internal data (unique name, sequence number, etc.)
These conditions have to be checked and enforced.

How: Go to main/instsetoo_native and run 'build release=t'
This flag should probably be added as option to configure. It is not used outside of instsetoo_native but it is important that it is not forgotten when the installation sets are built.

What: In order to check the conditions, solenv/bin/make_installer.pl (which is called by build/dmake from instsetoo_native) needs access to the previous release. It does that by reading the necessary data from the previous installation sets. For that
a) the downloadable installation set is downloaded from archive.apache.org
   If you are concerned about too many downloads from archive.apache.org:
- Creating patches is typically done twice a year, by the release manager
   - You can provide a local repository.  This also speeds up this step.
b) the downloadable installation is unpacked to get access to its content, most importantly (in this stage) the MSI file. For this I use 7zip, the only program I know of, that is able to unpack the installation set EXE that is created by the NSIS tool. c) use the msidb.exe program from the Windows SDK to read the database tables in the MSI


2. Store information about the new release for when we will be creating patches when doing the next (future) release.
Why: The current release will eventually be the previous release.
How: The tool is not checked in, I am still cleaning it up a bit.
What: This extends the main/instsetoo_native/data/releases.xml list with data about the current release.


3. Create the patches (one per language)
How: Go to main/instsetoo_native/util and run 'dmake patch_create'
What:
a) Check if the installation sets for the relevant languages are present (both the previous and current ones)
b) Check that all conditions (that I know of) are fulfilled.
   Patch creation will break when even one condition is not met.
It will, for example, detect when the release builds where not made with the "release=t" flag.
c) Create a local copy of the current release.
This is necessary because the msimsp.exe tool (the one that creates the actual patch file) needs the CAB file (the container that contains all files that are to be installed) and its unpacked content in the same directory.
d) Run the msimsp.exe tool to create the patch file.
Creating an installation set, unpacking and copying the previous and current ones, are already lengthy processes that each can take several minutes to complete.
   Msimsp.exe usually takes 10 to 15 minutes to run.


4. (For testing) Apply the patch
Why: To verify that the created patch really works
Attention:
While steps 1 to 3, if they fail, only waste time and disk space (disk space can be reclaimed by deleting instetoo_native/wntmsci12.pro, the time is gone forever), installing the MSP patch can break your Windows registry. It has not happend to me but it is a possiblity. Try this in a virtual machine. How: Find the MSP file at main/instsetoo_native/wntmsci12.pro/Apache_OpenOffice/msp/v-4-0-1_v-4-1-0/<language>/msp/openoffice/msp
     A double click should work.
Alternatively run "msiexec.exe /update c:\\...\\openoffice.msp REINSTALLMODE=omus", note that the path to openoffice.msp has to be in Windows notation, even when you run msiexec from a cygwin shell.



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to