summaryrefslogtreecommitdiff
path: root/solenv/bin
diff options
context:
space:
mode:
authorVladimir Glazounov <vg@openoffice.org>2008-08-18 09:49:08 +0000
committerVladimir Glazounov <vg@openoffice.org>2008-08-18 09:49:08 +0000
commit6ab4561852e8044475841a4142d5ab24189b87d1 (patch)
tree7e3ffccb72ac1d9cc350f1ad10fca93c1c8c2934 /solenv/bin
parentb43367edc12c8dc25f074fccf717b67b351ba176 (diff)
INTEGRATION: CWS native180 (1.11.168); FILE MERGED
2008/08/05 14:00:01 is 1.11.168.1: #i91954# prepare products for msp usage
Diffstat (limited to 'solenv/bin')
-rw-r--r--solenv/bin/modules/installer/windows/media.pm76
1 files changed, 71 insertions, 5 deletions
diff --git a/solenv/bin/modules/installer/windows/media.pm b/solenv/bin/modules/installer/windows/media.pm
index bcdce9081f9a..c8b1e03ab5e3 100644
--- a/solenv/bin/modules/installer/windows/media.pm
+++ b/solenv/bin/modules/installer/windows/media.pm
@@ -8,7 +8,7 @@
#
# $RCSfile: media.pm,v $
#
-# $Revision: 1.11 $
+# $Revision: 1.12 $
#
# This file is part of OpenOffice.org.
#
@@ -211,6 +211,28 @@ sub get_maximum_filenumber
}
#################################################################################
+# Setting the last sequence for the cabinet files
+#################################################################################
+
+sub get_last_sequence
+{
+ my ( $cabfilename, $alludpatelastsequences ) = @_;
+
+ my $sequence = 0;
+
+ if (( $installer::globals::updatedatabase ) && ( exists($alludpatelastsequences->{$cabfilename}) ))
+ {
+ $sequence = $alludpatelastsequences->{$cabfilename};
+ }
+ else
+ {
+ $sequence = $installer::globals::lastsequence{$cabfilename};
+ }
+
+ return $sequence;
+}
+
+#################################################################################
# Creating the file Media.idt dynamically
# Content:
# DiskId LastSequence DiskPrompt Cabinet VolumeLabel Source
@@ -219,7 +241,7 @@ sub get_maximum_filenumber
sub create_media_table
{
- my ($filesref, $basedir, $allvariables) = @_;
+ my ($filesref, $basedir, $allvariables, $alludpatelastsequences, $allupdatediskids) = @_;
my @mediatable = ();
@@ -238,7 +260,7 @@ sub create_media_table
$diskid++;
$media{'DiskId'} = get_media_diskid($diskid);
- $media{'LastSequence'} = $installer::globals::lastsequence{$cabfile};
+ $media{'LastSequence'} = get_last_sequence($cabfile, $alludpatelastsequences);
$media{'DiskPrompt'} = get_media_diskprompt();
$media{'Cabinet'} = get_cabfilename($cabfile);
$media{'VolumeLabel'} = get_media_volumelabel();
@@ -248,7 +270,46 @@ sub create_media_table
. $media{'Cabinet'} . "\t" . $media{'VolumeLabel'} . "\t" . $media{'Source'} . "\n";
push(@mediatable, $oneline);
+
+ # Comparing the disk id with the disk id from update database. Both have to be identical. New files have to be added
+ # to the new pff cabinet file. And existing cab files must not be removed.
+ if ( $installer::globals::updatedatabase )
+ {
+ # Comparing lines in new media table with line from media table in udpate database.
+ if ( exists($allupdatediskids->{$media{'Cabinet'}}) )
+ {
+ if ( $media{'DiskId'} != $allupdatediskids->{$media{'Cabinet'}} )
+ {
+ installer::exiter::exit_program("ERROR: Different DiskIDs for cab file \"$media{'Cabinet'}\".\nCurrent installation set: \"$media{'DiskId'}\", but update database used \"$allupdatediskids->{$media{'Cabinet'}}\".\nWere cabinet files removed or added?", "create_media_table");
+ }
+ }
+ else
+ {
+ my $localinfoline = "Warning: Could not find cabinet file \"$media{'Cabinet'}}\" in update database. This seems to be an new cabinet file!?\n";
+ push(@installer::globals::logfileinfo, $localinfoline);
+ }
+ }
+ }
+
+ # one new cabinet file for all files added after the final release
+ if (( $installer::globals::updatedatabase ) && ( $installer::globals::pfffileexists ))
+ {
+ my %media = ();
+ $diskid++;
+
+ $media{'DiskId'} = get_media_diskid($diskid) + $installer::globals::mergemodulenumber; # Adding mergemodulenumber, because this files are included later
+ $media{'LastSequence'} = $installer::globals::updatesequencecounter;
+ $media{'DiskPrompt'} = get_media_diskprompt();
+ $media{'Cabinet'} = get_cabfilename($installer::globals::pffcabfilename);
+ $media{'VolumeLabel'} = get_media_volumelabel();
+ $media{'Source'} = get_media_source();
+
+ my $oneline = $media{'DiskId'} . "\t" . $media{'LastSequence'} . "\t" . $media{'DiskPrompt'} . "\t"
+ . $media{'Cabinet'} . "\t" . $media{'VolumeLabel'} . "\t" . $media{'Source'} . "\n";
+
+ push(@mediatable, $oneline);
}
+
}
elsif ( $installer::globals::cab_file_per_component )
{
@@ -299,6 +360,9 @@ sub create_media_table
my $cabfull = 0;
my $counter = 0;
+ # Sorting of files collector files required !
+ # Attention: The order in the cab file is not guaranteed (especially in udpate process)
+
for ( my $i = 0; $i <= $#{$filesref}; $i++ )
{
if (( $counter >= $maxfilenumber ) || ( $i == $#{$filesref} )) { $cabfull = 1; }
@@ -325,7 +389,8 @@ sub create_media_table
$cabfilenumber++;
$media{'DiskId'} = get_media_diskid($cabfilenumber);
- $media{'LastSequence'} = get_media_lastsequence($onefile);
+ # $media{'LastSequence'} = get_media_lastsequence($onefile);
+ $media{'LastSequence'} = $i + 1; # This should be correct, also for unsorted files collectors
$media{'DiskPrompt'} = get_media_diskprompt();
$media{'Cabinet'} = generate_cab_filename_for_some_cabs($allvariables, $cabfilenumber);
$media{'VolumeLabel'} = get_media_volumelabel();
@@ -359,7 +424,8 @@ sub create_media_table
my $maximumfile = $#{$filesref};
$media{'DiskId'} = get_media_diskid($diskid);
- $media{'LastSequence'} = ${$filesref}[$maximumfile]->{'sequencenumber'}; # sequence number of the last file
+ # $media{'LastSequence'} = ${$filesref}[$maximumfile]->{'sequencenumber'}; # sequence number of the last file
+ $media{'LastSequence'} = $maximumfile + 1; # This works also for unsorted file collector
$media{'DiskPrompt'} = get_media_diskprompt();
$media{'Cabinet'} = generate_cab_filename($allvariables);
$media{'VolumeLabel'} = get_media_volumelabel();