Filename | /cygdrive/c/lo/libo-master/instsetoo_native/util/C:/lo/libo-master/solenv/bin/modules/installer/windows/property.pm |
Statements | Executed 101599 statements in 390ms |
Calls | P | F | Exclusive Time |
Inclusive Time |
Subroutine |
---|---|---|---|---|---|
109 | 1 | 1 | 205ms | 423ms | update_property_table | installer::windows::property::
109 | 1 | 1 | 54.7ms | 166ms | set_codes_in_property_table | installer::windows::property::
67798 | 12 | 1 | 48.6ms | 48.6ms | CORE:subst (opcode) | installer::windows::property::
109 | 1 | 1 | 43.7ms | 48.4ms | set_important_properties | installer::windows::property::
15042 | 2 | 1 | 8.41ms | 8.41ms | CORE:match (opcode) | installer::windows::property::
109 | 1 | 1 | 7.19ms | 127ms | set_languages_in_property_table | installer::windows::property::
109 | 1 | 1 | 3.91ms | 16.0ms | get_arpcomments_for_property_table | installer::windows::property::
109 | 1 | 1 | 3.65ms | 3.65ms | set_ms_file_types_properties | installer::windows::property::
109 | 1 | 1 | 2.79ms | 3.47ms | get_productname_for_property_table | installer::windows::property::
109 | 1 | 1 | 1.74ms | 2.15ms | get_quickstarterlinkname_for_property_table | installer::windows::property::
109 | 1 | 1 | 1.34ms | 2.69ms | get_productlanguage_for_property_table | installer::windows::property::
218 | 2 | 1 | 1.08ms | 1.08ms | get_productname | installer::windows::property::
109 | 1 | 1 | 768µs | 768µs | update_checkbox_table | installer::windows::property::
109 | 1 | 1 | 468µs | 468µs | get_ischeckforproductupdates_for_property_table | installer::windows::property::
109 | 1 | 1 | 468µs | 468µs | get_productversion_for_property_table | installer::windows::property::
109 | 1 | 1 | 468µs | 468µs | get_installlevel_for_property_table | installer::windows::property::
109 | 1 | 1 | 416µs | 416µs | get_manufacturer_for_property_table | installer::windows::property::
1 | 1 | 1 | 391µs | 395µs | BEGIN@30 | installer::windows::property::
1 | 1 | 1 | 17µs | 19µs | BEGIN@31 | installer::windows::property::
1 | 1 | 1 | 16µs | 19µs | BEGIN@33 | installer::windows::property::
1 | 1 | 1 | 16µs | 19µs | BEGIN@32 | installer::windows::property::
1 | 1 | 1 | 15µs | 17µs | BEGIN@34 | installer::windows::property::
0 | 0 | 0 | 0s | 0s | get_english_language_string | installer::windows::property::
0 | 0 | 0 | 0s | 0s | get_language_string | installer::windows::property::
0 | 0 | 0 | 0s | 0s | set_featurename_properties_for_patch | installer::windows::property::
Line | State ments |
Time on line |
Calls | Time in subs |
Code |
---|---|---|---|---|---|
1 | #************************************************************************* | ||||
2 | # | ||||
3 | # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. | ||||
4 | # | ||||
5 | # Copyright 2000, 2010 Oracle and/or its affiliates. | ||||
6 | # | ||||
7 | # OpenOffice.org - a multi-platform office productivity suite | ||||
8 | # | ||||
9 | # This file is part of OpenOffice.org. | ||||
10 | # | ||||
11 | # OpenOffice.org is free software: you can redistribute it and/or modify | ||||
12 | # it under the terms of the GNU Lesser General Public License version 3 | ||||
13 | # only, as published by the Free Software Foundation. | ||||
14 | # | ||||
15 | # OpenOffice.org is distributed in the hope that it will be useful, | ||||
16 | # but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
17 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||||
18 | # GNU Lesser General Public License version 3 for more details | ||||
19 | # (a copy is included in the LICENSE file that accompanied this code). | ||||
20 | # | ||||
21 | # You should have received a copy of the GNU Lesser General Public License | ||||
22 | # version 3 along with OpenOffice.org. If not, see | ||||
23 | # <http://www.openoffice.org/license.html> | ||||
24 | # for a copy of the LGPLv3 License. | ||||
25 | # | ||||
26 | #************************************************************************* | ||||
27 | |||||
28 | package installer::windows::property; | ||||
29 | |||||
30 | 2 | 70µs | 2 | 399µs | # spent 395µs (391+4) within installer::windows::property::BEGIN@30 which was called:
# once (391µs+4µs) by installer::BEGIN@77 at line 30 # spent 395µs making 1 call to installer::windows::property::BEGIN@30
# spent 4µs making 1 call to UNIVERSAL::import |
31 | 2 | 61µs | 2 | 21µs | # spent 19µs (17+2) within installer::windows::property::BEGIN@31 which was called:
# once (17µs+2µs) by installer::BEGIN@77 at line 31 # spent 19µs making 1 call to installer::windows::property::BEGIN@31
# spent 2µs making 1 call to UNIVERSAL::import |
32 | 2 | 54µs | 2 | 22µs | # spent 19µs (16+3) within installer::windows::property::BEGIN@32 which was called:
# once (16µs+3µs) by installer::BEGIN@77 at line 32 # spent 19µs making 1 call to installer::windows::property::BEGIN@32
# spent 3µs making 1 call to UNIVERSAL::import |
33 | 2 | 57µs | 2 | 22µs | # spent 19µs (16+3) within installer::windows::property::BEGIN@33 which was called:
# once (16µs+3µs) by installer::BEGIN@77 at line 33 # spent 19µs making 1 call to installer::windows::property::BEGIN@33
# spent 2µs making 1 call to UNIVERSAL::import |
34 | 2 | 6.84ms | 2 | 20µs | # spent 17µs (15+2) within installer::windows::property::BEGIN@34 which was called:
# once (15µs+2µs) by installer::BEGIN@77 at line 34 # spent 17µs making 1 call to installer::windows::property::BEGIN@34
# spent 2µs making 1 call to UNIVERSAL::import |
35 | |||||
36 | ############################################# | ||||
37 | # Setting the properties dynamically | ||||
38 | # for the table Property.idt | ||||
39 | ############################################# | ||||
40 | |||||
41 | sub get_arpcomments_for_property_table | ||||
42 | # spent 16.0ms (3.91+12.1) within installer::windows::property::get_arpcomments_for_property_table which was called 109 times, avg 147µs/call:
# 109 times (3.91ms+12.1ms) by installer::windows::property::update_property_table at line 469, avg 147µs/call | ||||
43 | 1744 | 16.1ms | my ( $allvariables, $languagestringref ) = @_; | ||
44 | |||||
45 | my $name = $allvariables->{'PRODUCTNAME'}; | ||||
46 | my $version = $allvariables->{'PRODUCTVERSION'}; | ||||
47 | my $comment = $name . " " . $version; | ||||
48 | |||||
49 | my $postversionextension = ""; | ||||
50 | if ( $allvariables->{'POSTVERSIONEXTENSION'} ) | ||||
51 | { | ||||
52 | $postversionextension = $allvariables->{'POSTVERSIONEXTENSION'}; | ||||
53 | $comment = $comment . " " . $postversionextension; | ||||
54 | } | ||||
55 | |||||
56 | if ( $installer::globals::languagepack ) { $comment = $comment . " " . "Language Pack"; } | ||||
57 | elsif ( $installer::globals::helppack ) { $comment = $comment . " " . "Help Pack"; } | ||||
58 | |||||
59 | if ( $installer::globals::patch ) | ||||
60 | { | ||||
61 | if ( ! $allvariables->{'WINDOWSPATCHLEVEL'} ) { installer::exiter::exit_program("ERROR: No Patch level defined for Windows patch: WINDOWSPATCHLEVEL", "get_arpcomments_for_property_table"); } | ||||
62 | my $patchstring = "Product Update" . " " . $allvariables->{'WINDOWSPATCHLEVEL'}; | ||||
63 | $comment = $comment . " " . $patchstring; | ||||
64 | } | ||||
65 | |||||
66 | my $languagestring = $$languagestringref; | ||||
67 | 109 | 12.1ms | $languagestring =~ s/\_/\,/g; # spent 12.1ms making 109 calls to installer::windows::property::CORE:subst, avg 111µs/call | ||
68 | |||||
69 | $comment = $comment . " ($languagestring)"; | ||||
70 | |||||
71 | my $localminor = ""; | ||||
72 | $localminor = $installer::globals::minor; | ||||
73 | |||||
74 | my $buildidstring = "(" . $installer::globals::build . $localminor . "(Build:" . $installer::globals::buildid . "))"; | ||||
75 | |||||
76 | $comment = $comment . " " . $buildidstring; | ||||
77 | |||||
78 | return $comment; | ||||
79 | } | ||||
80 | |||||
81 | sub get_installlevel_for_property_table | ||||
82 | # spent 468µs within installer::windows::property::get_installlevel_for_property_table which was called 109 times, avg 4µs/call:
# 109 times (468µs+0s) by installer::windows::property::update_property_table at line 470, avg 4µs/call | ||||
83 | 218 | 778µs | my $installlevel = "100"; | ||
84 | return $installlevel; | ||||
85 | } | ||||
86 | |||||
87 | sub get_ischeckforproductupdates_for_property_table | ||||
88 | # spent 468µs within installer::windows::property::get_ischeckforproductupdates_for_property_table which was called 109 times, avg 4µs/call:
# 109 times (468µs+0s) by installer::windows::property::update_property_table at line 471, avg 4µs/call | ||||
89 | 218 | 769µs | my $ischeckforproductupdates = "1"; | ||
90 | return $ischeckforproductupdates; | ||||
91 | } | ||||
92 | |||||
93 | sub get_manufacturer_for_property_table | ||||
94 | # spent 416µs within installer::windows::property::get_manufacturer_for_property_table which was called 109 times, avg 4µs/call:
# 109 times (416µs+0s) by installer::windows::property::update_property_table at line 472, avg 4µs/call | ||||
95 | 109 | 725µs | return $installer::globals::manufacturer; | ||
96 | } | ||||
97 | |||||
98 | sub get_productlanguage_for_property_table | ||||
99 | # spent 2.69ms (1.34+1.36) within installer::windows::property::get_productlanguage_for_property_table which was called 109 times, avg 25µs/call:
# 109 times (1.34ms+1.36ms) by installer::windows::property::update_property_table at line 473, avg 25µs/call | ||||
100 | 327 | 1.44ms | my ($language) = @_; | ||
101 | 109 | 1.36ms | my $windowslanguage = installer::windows::language::get_windows_language($language); # spent 1.36ms making 109 calls to installer::windows::language::get_windows_language, avg 12µs/call | ||
102 | return $windowslanguage; | ||||
103 | } | ||||
104 | |||||
105 | sub get_language_string | ||||
106 | { | ||||
107 | my $langstring = ""; | ||||
108 | |||||
109 | for ( my $i = 0; $i <= $#installer::globals::languagenames; $i++ ) | ||||
110 | { | ||||
111 | $langstring = $langstring . $installer::globals::languagenames[$i] . ", "; | ||||
112 | } | ||||
113 | |||||
114 | $langstring =~ s/\,\s*$//; | ||||
115 | $langstring = "(" . $langstring . ")"; | ||||
116 | |||||
117 | return $langstring; | ||||
118 | } | ||||
119 | |||||
120 | sub get_english_language_string | ||||
121 | { | ||||
122 | my $langstring = ""; | ||||
123 | |||||
124 | # Sorting value not keys, therefore collecting all values | ||||
125 | my %helper = (); | ||||
126 | foreach my $lang ( keys %installer::globals::all_required_english_languagestrings ) | ||||
127 | { | ||||
128 | $helper{$installer::globals::all_required_english_languagestrings{$lang}} = 1; | ||||
129 | } | ||||
130 | |||||
131 | foreach my $lang ( sort keys %helper ) | ||||
132 | { | ||||
133 | $langstring = $langstring . $lang . ", "; | ||||
134 | } | ||||
135 | |||||
136 | $langstring =~ s/\,\s*$//; | ||||
137 | $langstring = "(" . $langstring . ")"; | ||||
138 | |||||
139 | return $langstring; | ||||
140 | } | ||||
141 | |||||
142 | sub get_productname($$) | ||||
143 | # spent 1.08ms within installer::windows::property::get_productname which was called 218 times, avg 5µs/call:
# 109 times (677µs+0s) by installer::windows::property::get_productname_for_property_table at line 155, avg 6µs/call
# 109 times (403µs+0s) by installer::windows::property::get_quickstarterlinkname_for_property_table at line 204, avg 4µs/call | ||||
144 | 654 | 1.66ms | my ( $language, $allvariables ) = @_; | ||
145 | |||||
146 | my $name = $allvariables->{'PRODUCTNAME'}; | ||||
147 | |||||
148 | return $name; | ||||
149 | } | ||||
150 | |||||
151 | sub get_productname_for_property_table($$) | ||||
152 | # spent 3.47ms (2.79+677µs) within installer::windows::property::get_productname_for_property_table which was called 109 times, avg 32µs/call:
# 109 times (2.79ms+677µs) by installer::windows::property::update_property_table at line 474, avg 32µs/call | ||||
153 | 1526 | 2.75ms | my ( $language, $allvariables ) = @_; | ||
154 | |||||
155 | 109 | 677µs | my $name = get_productname ($language, $allvariables); # spent 677µs making 109 calls to installer::windows::property::get_productname, avg 6µs/call | ||
156 | my $version = $allvariables->{'PRODUCTVERSION'}; | ||||
157 | my $productname = $name . " " . $version; | ||||
158 | |||||
159 | my $postversionextension = ""; | ||||
160 | if ( $allvariables->{'POSTVERSIONEXTENSION'} ) | ||||
161 | { | ||||
162 | $postversionextension = $allvariables->{'POSTVERSIONEXTENSION'}; | ||||
163 | $productname = $productname . " " . $postversionextension; | ||||
164 | } | ||||
165 | |||||
166 | my $productextension = ""; | ||||
167 | if ( $allvariables->{'PRODUCTEXTENSION'} ) | ||||
168 | { | ||||
169 | $productextension = $allvariables->{'PRODUCTEXTENSION'}; | ||||
170 | $productname = $productname . " " . $productextension; | ||||
171 | } | ||||
172 | |||||
173 | if ( $installer::globals::languagepack ) | ||||
174 | { | ||||
175 | my $langstring = get_english_language_string(); # Example: (English, German) | ||||
176 | $productname = $name . " " . $version . " Language Pack" . " " . $langstring; | ||||
177 | } | ||||
178 | elsif ( $installer::globals::helppack ) | ||||
179 | { | ||||
180 | my $langstring = get_english_language_string(); # New: (English, German) | ||||
181 | $productname = $name . " " . $version . " Help Pack" . " " . $langstring; | ||||
182 | } | ||||
183 | |||||
184 | if ( $installer::globals::patch ) | ||||
185 | { | ||||
186 | if ( ! $allvariables->{'WINDOWSPATCHLEVEL'} ) { installer::exiter::exit_program("ERROR: No Patch level defined for Windows patch: WINDOWSPATCHLEVEL", "get_productname_for_property_table"); } | ||||
187 | my $patchstring = "Product Update" . " " . $allvariables->{'WINDOWSPATCHLEVEL'}; | ||||
188 | $productname = $productname . " " . $patchstring; | ||||
189 | } | ||||
190 | |||||
191 | # Saving this name in hash $allvariables for further usage | ||||
192 | $allvariables->{'PROPERTYTABLEPRODUCTNAME'} = $productname; | ||||
193 | my $infoline = "Defined variable PROPERTYTABLEPRODUCTNAME: $productname\n"; | ||||
194 | push(@installer::globals::logfileinfo, $infoline); | ||||
195 | |||||
196 | return $productname; | ||||
197 | } | ||||
198 | |||||
199 | sub get_quickstarterlinkname_for_property_table($$) | ||||
200 | # spent 2.15ms (1.74+403µs) within installer::windows::property::get_quickstarterlinkname_for_property_table which was called 109 times, avg 20µs/call:
# 109 times (1.74ms+403µs) by installer::windows::property::update_property_table at line 476, avg 20µs/call | ||||
201 | 763 | 1.69ms | my ( $language, $allvariables ) = @_; | ||
202 | |||||
203 | # no usage of POSTVERSIONEXTENSION for Quickstarter link name! | ||||
204 | 109 | 403µs | my $name = get_productname ($language, $allvariables); # spent 403µs making 109 calls to installer::windows::property::get_productname, avg 4µs/call | ||
205 | my $version = $allvariables->{'PRODUCTVERSION'}; | ||||
206 | my $quickstartername = $name . " " . $version; | ||||
207 | |||||
208 | my $infoline = "Defined Quickstarter Link name: $quickstartername\n"; | ||||
209 | push(@installer::globals::logfileinfo, $infoline); | ||||
210 | |||||
211 | return $quickstartername; | ||||
212 | } | ||||
213 | |||||
214 | sub get_productversion_for_property_table | ||||
215 | # spent 468µs within installer::windows::property::get_productversion_for_property_table which was called 109 times, avg 4µs/call:
# 109 times (468µs+0s) by installer::windows::property::update_property_table at line 475, avg 4µs/call | ||||
216 | 109 | 753µs | return $installer::globals::msiproductversion; | ||
217 | } | ||||
218 | |||||
219 | ####################################################### | ||||
220 | # Setting all feature names as Properties. This is | ||||
221 | # required for the Windows patch process. | ||||
222 | ####################################################### | ||||
223 | |||||
224 | sub set_featurename_properties_for_patch | ||||
225 | { | ||||
226 | ($propertyfile) = @_; | ||||
227 | |||||
228 | for ( my $i = 0; $i <= $#installer::globals::featurecollector; $i++ ) | ||||
229 | { | ||||
230 | my $onepropertyline = $installer::globals::featurecollector[$i] . "\t" . "1" . "\n"; | ||||
231 | push(@{$propertyfile}, $onepropertyline); | ||||
232 | } | ||||
233 | |||||
234 | } | ||||
235 | |||||
236 | ####################################################### | ||||
237 | # Setting some important properties | ||||
238 | # (for finding the product in deinstallation process) | ||||
239 | ####################################################### | ||||
240 | |||||
241 | sub set_important_properties | ||||
242 | # spent 48.4ms (43.7+4.70) within installer::windows::property::set_important_properties which was called 109 times, avg 444µs/call:
# 109 times (43.7ms+4.70ms) by installer::windows::property::update_property_table at line 504, avg 444µs/call | ||||
243 | 2834 | 5.28ms | my ($propertyfile, $allvariables, $languagestringref) = @_; | ||
244 | |||||
245 | # Setting new variables with the content of %PRODUCTNAME and %PRODUCTVERSION | ||||
246 | 218 | 356µs | if ( $allvariables->{'PRODUCTNAME'} ) | ||
247 | { | ||||
248 | my $onepropertyline = "DEFINEDPRODUCT" . "\t" . $allvariables->{'PRODUCTNAME'} . "\n"; | ||||
249 | push(@{$propertyfile}, $onepropertyline); | ||||
250 | } | ||||
251 | |||||
252 | 218 | 326µs | if ( $allvariables->{'PRODUCTVERSION'} ) | ||
253 | { | ||||
254 | my $onepropertyline = "DEFINEDVERSION" . "\t" . $allvariables->{'PRODUCTVERSION'} . "\n"; | ||||
255 | push(@{$propertyfile}, $onepropertyline); | ||||
256 | } | ||||
257 | |||||
258 | 218 | 530µs | if (( $allvariables->{'PRODUCTNAME'} ) && ( $allvariables->{'PRODUCTVERSION'} ) && ( $allvariables->{'REGISTRYLAYERNAME'} )) | ||
259 | { | ||||
260 | my $onepropertyline = "FINDPRODUCT" . "\t" . "Software\\LibreOffice" . "\\" . $allvariables->{'REGISTRYLAYERNAME'} . "\\" . $allvariables->{'PRODUCTNAME'} . "\\" . $allvariables->{'PRODUCTVERSION'} . "\n"; | ||||
261 | push(@{$propertyfile}, $onepropertyline); | ||||
262 | } | ||||
263 | |||||
264 | 218 | 341µs | if ( $allvariables->{'PRODUCTMAJOR'} ) | ||
265 | { | ||||
266 | my $onepropertyline = "PRODUCTMAJOR" . "\t" . $allvariables->{'PRODUCTMAJOR'} . "\n"; | ||||
267 | push(@{$propertyfile}, $onepropertyline); | ||||
268 | } | ||||
269 | |||||
270 | if ( $allvariables->{'PRODUCTMINOR'} ) | ||||
271 | { | ||||
272 | my $onepropertyline = "PRODUCTMINOR" . "\t" . $allvariables->{'PRODUCTMINOR'} . "\n"; | ||||
273 | push(@{$propertyfile}, $onepropertyline); | ||||
274 | } | ||||
275 | |||||
276 | if ( $allvariables->{'PRODUCTBUILDID'} ) | ||||
277 | { | ||||
278 | my $onepropertyline = "PRODUCTBUILDID" . "\t" . $allvariables->{'PRODUCTBUILDID'} . "\n"; | ||||
279 | push(@{$propertyfile}, $onepropertyline); | ||||
280 | } | ||||
281 | |||||
282 | 218 | 365µs | if ( $allvariables->{'URELAYERVERSION'} ) | ||
283 | { | ||||
284 | my $onepropertyline = "URELAYERVERSION" . "\t" . $allvariables->{'URELAYERVERSION'} . "\n"; | ||||
285 | push(@{$propertyfile}, $onepropertyline); | ||||
286 | } | ||||
287 | |||||
288 | 218 | 357µs | if ( $allvariables->{'BRANDPACKAGEVERSION'} ) | ||
289 | { | ||||
290 | my $onepropertyline = "BRANDPACKAGEVERSION" . "\t" . $allvariables->{'BRANDPACKAGEVERSION'} . "\n"; | ||||
291 | push(@{$propertyfile}, $onepropertyline); | ||||
292 | } | ||||
293 | |||||
294 | if ( $allvariables->{'EXCLUDE_FROM_REBASE'} ) | ||||
295 | { | ||||
296 | my $onepropertyline = "EXCLUDE_FROM_REBASE" . "\t" . $allvariables->{'EXCLUDE_FROM_REBASE'} . "\n"; | ||||
297 | push(@{$propertyfile}, $onepropertyline); | ||||
298 | } | ||||
299 | |||||
300 | if ( $allvariables->{'PREREQUIREDPATCH'} ) | ||||
301 | { | ||||
302 | my $onepropertyline = "PREREQUIREDPATCH" . "\t" . $allvariables->{'PREREQUIREDPATCH'} . "\n"; | ||||
303 | push(@{$propertyfile}, $onepropertyline); | ||||
304 | } | ||||
305 | |||||
306 | my $onepropertyline = "IGNOREPREREQUIREDPATCH" . "\t" . "1" . "\n"; | ||||
307 | push(@{$propertyfile}, $onepropertyline); | ||||
308 | |||||
309 | $onepropertyline = "DONTOPTIMIZELIBS" . "\t" . "0" . "\n"; | ||||
310 | push(@{$propertyfile}, $onepropertyline); | ||||
311 | |||||
312 | 654 | 1.30ms | if ( $installer::globals::officedirhostname ) | ||
313 | { | ||||
314 | my $onepropertyline = "OFFICEDIRHOSTNAME" . "\t" . $installer::globals::officedirhostname . "\n"; | ||||
315 | push(@{$propertyfile}, $onepropertyline); | ||||
316 | |||||
317 | my $localofficedirhostname = $installer::globals::officedirhostname; | ||||
318 | 109 | 87µs | $localofficedirhostname =~ s/\//\\/g; # spent 87µs making 109 calls to installer::windows::property::CORE:subst, avg 800ns/call | ||
319 | $onepropertyline = "OFFICEDIRHOSTNAME_" . "\t" . $localofficedirhostname . "\n"; | ||||
320 | push(@{$propertyfile}, $onepropertyline); | ||||
321 | } | ||||
322 | |||||
323 | 436 | 420µs | if ( $installer::globals::desktoplinkexists ) | ||
324 | { | ||||
325 | my $onepropertyline = "DESKTOPLINKEXISTS" . "\t" . "1" . "\n"; | ||||
326 | push(@{$propertyfile}, $onepropertyline); | ||||
327 | |||||
328 | $onepropertyline = "CREATEDESKTOPLINK" . "\t" . "1" . "\n"; # Setting the default | ||||
329 | push(@{$propertyfile}, $onepropertyline); | ||||
330 | } | ||||
331 | |||||
332 | if ( $installer::globals::patch ) | ||||
333 | { | ||||
334 | my $onepropertyline = "ISPATCH" . "\t" . "1" . "\n"; | ||||
335 | push(@{$propertyfile}, $onepropertyline); | ||||
336 | } | ||||
337 | |||||
338 | if ( $installer::globals::languagepack ) | ||||
339 | { | ||||
340 | my $onepropertyline = "ISLANGUAGEPACK" . "\t" . "1" . "\n"; | ||||
341 | push(@{$propertyfile}, $onepropertyline); | ||||
342 | } | ||||
343 | elsif ( $installer::globals::helppack ) | ||||
344 | { | ||||
345 | my $onepropertyline = "ISHELPPACK" . "\t" . "1" . "\n"; | ||||
346 | push(@{$propertyfile}, $onepropertyline); | ||||
347 | } | ||||
348 | |||||
349 | my $languagesline = "PRODUCTALLLANGUAGES" . "\t" . $$languagestringref . "\n"; | ||||
350 | push(@{$propertyfile}, $languagesline); | ||||
351 | |||||
352 | 218 | 233µs | if (( $allvariables->{'PRODUCTEXTENSION'} ) && ( $allvariables->{'PRODUCTEXTENSION'} eq "Beta" )) | ||
353 | { | ||||
354 | # my $registryline = "WRITE_REGISTRY" . "\t" . "0" . "\n"; | ||||
355 | # push(@{$propertyfile}, $registryline); | ||||
356 | my $betainfoline = "BETAPRODUCT" . "\t" . "1" . "\n"; | ||||
357 | push(@{$propertyfile}, $betainfoline); | ||||
358 | } | ||||
359 | elsif ( $allvariables->{'DEVELOPMENTPRODUCT'} ) | ||||
360 | { | ||||
361 | my $registryline = "WRITE_REGISTRY" . "\t" . "0" . "\n"; | ||||
362 | push(@{$propertyfile}, $registryline); | ||||
363 | } | ||||
364 | else | ||||
365 | { | ||||
366 | my $registryline = "WRITE_REGISTRY" . "\t" . "1" . "\n"; # Default: Write complete registry | ||||
367 | push(@{$propertyfile}, $registryline); | ||||
368 | } | ||||
369 | |||||
370 | # Adding also used tree conditions for multilayer products. | ||||
371 | # These are saved in %installer::globals::usedtreeconditions | ||||
372 | foreach my $treecondition (keys %installer::globals::usedtreeconditions) | ||||
373 | { | ||||
374 | my $onepropertyline = $treecondition . "\t" . "1" . "\n"; | ||||
375 | push(@{$propertyfile}, $onepropertyline); | ||||
376 | } | ||||
377 | |||||
378 | # No more license dialog for selected products | ||||
379 | 436 | 9.33ms | if ( $allvariables->{'HIDELICENSEDIALOG'} ) | ||
380 | { | ||||
381 | my $onepropertyline = "HIDEEULA" . "\t" . "1" . "\n"; | ||||
382 | |||||
383 | my $already_defined = 0; | ||||
384 | |||||
385 | 8284 | 29.8ms | for ( my $i = 0; $i <= $#{$propertyfile}; $i++ ) | ||
386 | { | ||||
387 | 8284 | 4.62ms | if ( ${$propertyfile}[$i] =~ /^\s*HIDEEULA\t/ ) # spent 4.62ms making 8284 calls to installer::windows::property::CORE:match, avg 557ns/call | ||
388 | { | ||||
389 | ${$propertyfile}[$i] = $onepropertyline; | ||||
390 | $already_defined = 1; | ||||
391 | last; | ||||
392 | } | ||||
393 | } | ||||
394 | |||||
395 | if ( ! $already_defined ) | ||||
396 | { | ||||
397 | push(@{$propertyfile}, $onepropertyline); | ||||
398 | } | ||||
399 | } | ||||
400 | |||||
401 | # Setting .NET requirements | ||||
402 | push @{$propertyfile}, "REQUIRED_DOTNET_VERSION" . "\t" . "2.0.0.0" . "\n"; | ||||
403 | push @{$propertyfile}, "DOTNET_SUFFICIENT" . "\t" . "1" . "\n"; # default value for found .NET | ||||
404 | } | ||||
405 | |||||
406 | ####################################################### | ||||
407 | # Setting properties needed for ms file type registration | ||||
408 | ####################################################### | ||||
409 | |||||
410 | sub set_ms_file_types_properties | ||||
411 | # spent 3.65ms within installer::windows::property::set_ms_file_types_properties which was called 109 times, avg 33µs/call:
# 109 times (3.65ms+0s) by installer::windows::property::update_property_table at line 510, avg 33µs/call | ||||
412 | 2725 | 3.99ms | my ($propertyfile) = @_; | ||
413 | |||||
414 | # we do not register PPSM, PPAM, and XLAM file types in | ||||
415 | # setup_native\source\win32\customactions\reg4allmsdoc\reg4allmsi.cxx | ||||
416 | # (probably because LibreOffice can't deal with them properly (?) | ||||
417 | |||||
418 | push(@{$propertyfile}, "REGISTER_PPS" . "\t" . "0" . "\n"); | ||||
419 | push(@{$propertyfile}, "REGISTER_PPSX" . "\t" . "0" . "\n"); | ||||
420 | # push(@{$propertyfile}, "REGISTER_PPSM" . "\t" . "0" . "\n"); | ||||
421 | # push(@{$propertyfile}, "REGISTER_PPAM" . "\t" . "0" . "\n"); | ||||
422 | push(@{$propertyfile}, "REGISTER_PPT" . "\t" . "0" . "\n"); | ||||
423 | push(@{$propertyfile}, "REGISTER_PPTX" . "\t" . "0" . "\n"); | ||||
424 | push(@{$propertyfile}, "REGISTER_PPTM" . "\t" . "0" . "\n"); | ||||
425 | push(@{$propertyfile}, "REGISTER_POT" . "\t" . "0" . "\n"); | ||||
426 | push(@{$propertyfile}, "REGISTER_POTX" . "\t" . "0" . "\n"); | ||||
427 | push(@{$propertyfile}, "REGISTER_POTM" . "\t" . "0" . "\n"); | ||||
428 | |||||
429 | push(@{$propertyfile}, "REGISTER_DOC" . "\t" . "0" . "\n"); | ||||
430 | push(@{$propertyfile}, "REGISTER_DOCX" . "\t" . "0" . "\n"); | ||||
431 | push(@{$propertyfile}, "REGISTER_DOCM" . "\t" . "0" . "\n"); | ||||
432 | push(@{$propertyfile}, "REGISTER_DOT" . "\t" . "0" . "\n"); | ||||
433 | push(@{$propertyfile}, "REGISTER_DOTX" . "\t" . "0" . "\n"); | ||||
434 | push(@{$propertyfile}, "REGISTER_DOTM" . "\t" . "0" . "\n"); | ||||
435 | push(@{$propertyfile}, "REGISTER_RTF" . "\t" . "0" . "\n"); | ||||
436 | |||||
437 | push(@{$propertyfile}, "REGISTER_XLS" . "\t" . "0" . "\n"); | ||||
438 | push(@{$propertyfile}, "REGISTER_XLSX" . "\t" . "0" . "\n"); | ||||
439 | push(@{$propertyfile}, "REGISTER_XLSM" . "\t" . "0" . "\n"); | ||||
440 | push(@{$propertyfile}, "REGISTER_XLSB" . "\t" . "0" . "\n"); | ||||
441 | # push(@{$propertyfile}, "REGISTER_XLAM" . "\t" . "0" . "\n"); | ||||
442 | push(@{$propertyfile}, "REGISTER_XLT" . "\t" . "0" . "\n"); | ||||
443 | push(@{$propertyfile}, "REGISTER_XLTX" . "\t" . "0" . "\n"); | ||||
444 | push(@{$propertyfile}, "REGISTER_XLTM" . "\t" . "0" . "\n"); | ||||
445 | |||||
446 | push(@{$propertyfile}, "REGISTER_NO_MSO_TYPES" . "\t" . "0" . "\n"); | ||||
447 | push(@{$propertyfile}, "REGISTER_ALL_MSO_TYPES" . "\t" . "0" . "\n"); | ||||
448 | } | ||||
449 | |||||
450 | #################################################################################### | ||||
451 | # Updating the file Property.idt dynamically | ||||
452 | # Content: | ||||
453 | # Property Value | ||||
454 | #################################################################################### | ||||
455 | |||||
456 | sub update_property_table | ||||
457 | # spent 423ms (205+218) within installer::windows::property::update_property_table which was called 109 times, avg 3.88ms/call:
# 109 times (205ms+218ms) by installer::run at line 1643 of /cygdrive/c/lo/libo-master/instsetoo_native/util/C:/lo/libo-master/solenv/bin/modules/installer.pm, avg 3.88ms/call | ||||
458 | 2180 | 19.2ms | my ($basedir, $language, $allvariables, $languagestringref) = @_; | ||
459 | |||||
460 | my $properyfilename = $basedir . $installer::globals::separator . "Property.idt"; | ||||
461 | |||||
462 | 109 | 58.8ms | my $propertyfile = installer::files::read_file($properyfilename); # spent 58.8ms making 109 calls to installer::files::read_file, avg 540µs/call | ||
463 | |||||
464 | my $hasarpnomodify = 0; | ||||
465 | |||||
466 | # Getting the new values | ||||
467 | # Some values (arpcomments, arpcontacts, ...) are inserted from the Property.mlf | ||||
468 | |||||
469 | 109 | 16.0ms | my $arpcomments = get_arpcomments_for_property_table($allvariables, $languagestringref); # spent 16.0ms making 109 calls to installer::windows::property::get_arpcomments_for_property_table, avg 147µs/call | ||
470 | 109 | 468µs | my $installlevel = get_installlevel_for_property_table(); # spent 468µs making 109 calls to installer::windows::property::get_installlevel_for_property_table, avg 4µs/call | ||
471 | 109 | 468µs | my $ischeckforproductupdates = get_ischeckforproductupdates_for_property_table(); # spent 468µs making 109 calls to installer::windows::property::get_ischeckforproductupdates_for_property_table, avg 4µs/call | ||
472 | 109 | 416µs | my $manufacturer = get_manufacturer_for_property_table(); # spent 416µs making 109 calls to installer::windows::property::get_manufacturer_for_property_table, avg 4µs/call | ||
473 | 109 | 2.69ms | my $productlanguage = get_productlanguage_for_property_table($language); # spent 2.69ms making 109 calls to installer::windows::property::get_productlanguage_for_property_table, avg 25µs/call | ||
474 | 109 | 3.47ms | my $productname = get_productname_for_property_table($language, $allvariables); # spent 3.47ms making 109 calls to installer::windows::property::get_productname_for_property_table, avg 32µs/call | ||
475 | 109 | 468µs | my $productversion = get_productversion_for_property_table(); # spent 468µs making 109 calls to installer::windows::property::get_productversion_for_property_table, avg 4µs/call | ||
476 | 109 | 2.15ms | my $quickstarterlinkname = get_quickstarterlinkname_for_property_table($language, $allvariables); # spent 2.15ms making 109 calls to installer::windows::property::get_quickstarterlinkname_for_property_table, avg 20µs/call | ||
477 | |||||
478 | # Updating the values | ||||
479 | |||||
480 | 60822 | 215ms | for ( my $i = 0; $i <= $#{$propertyfile}; $i++ ) | ||
481 | { | ||||
482 | 6758 | 4.26ms | ${$propertyfile}[$i] =~ s/\bARPCOMMENTSTEMPLATE\b/$arpcomments/; # spent 4.26ms making 6758 calls to installer::windows::property::CORE:subst, avg 630ns/call | ||
483 | 6758 | 3.59ms | ${$propertyfile}[$i] =~ s/\bINSTALLLEVELTEMPLATE\b/$installlevel/; # spent 3.59ms making 6758 calls to installer::windows::property::CORE:subst, avg 532ns/call | ||
484 | 6758 | 3.42ms | ${$propertyfile}[$i] =~ s/\bISCHECKFORPRODUCTUPDATESTEMPLATE\b/$ischeckforproductupdates/; # spent 3.42ms making 6758 calls to installer::windows::property::CORE:subst, avg 506ns/call | ||
485 | 6758 | 3.57ms | ${$propertyfile}[$i] =~ s/\bMANUFACTURERTEMPLATE\b/$manufacturer/; # spent 3.57ms making 6758 calls to installer::windows::property::CORE:subst, avg 528ns/call | ||
486 | 6758 | 3.41ms | ${$propertyfile}[$i] =~ s/\bPRODUCTLANGUAGETEMPLATE\b/$productlanguage/; # spent 3.41ms making 6758 calls to installer::windows::property::CORE:subst, avg 505ns/call | ||
487 | 6758 | 3.54ms | ${$propertyfile}[$i] =~ s/\bPRODUCTNAMETEMPLATE\b/$productname/; # spent 3.54ms making 6758 calls to installer::windows::property::CORE:subst, avg 523ns/call | ||
488 | 6758 | 3.47ms | ${$propertyfile}[$i] =~ s/\bPRODUCTVERSIONTEMPLATE\b/$productversion/; # spent 3.47ms making 6758 calls to installer::windows::property::CORE:subst, avg 514ns/call | ||
489 | 6758 | 3.38ms | ${$propertyfile}[$i] =~ s/\bQUICKSTARTERLINKNAMETEMPLATE\b/$quickstarterlinkname/; # spent 3.38ms making 6758 calls to installer::windows::property::CORE:subst, avg 499ns/call | ||
490 | 6758 | 3.79ms | if ( ${$propertyfile}[$i] =~ m/\bARPNOMODIFY\b/ ) { $hasarpnomodify = 1; } # spent 3.79ms making 6758 calls to installer::windows::property::CORE:match, avg 561ns/call | ||
491 | } | ||||
492 | |||||
493 | # Check if are building silent MSI | ||||
494 | if ( $ENV{ENABLE_SILENT_MSI} eq "TRUE" ) | ||||
495 | { | ||||
496 | push(@{$propertyfile}, "LIMITUI" . "\t" . "1" . "\n"); | ||||
497 | if ( !($hasarpnomodify) ) | ||||
498 | { | ||||
499 | push(@{$propertyfile}, "ARPNOMODIFY" . "\t" . "1" . "\n"); | ||||
500 | } | ||||
501 | } | ||||
502 | |||||
503 | # Setting variables into propertytable | ||||
504 | 109 | 48.4ms | set_important_properties($propertyfile, $allvariables, $languagestringref); # spent 48.4ms making 109 calls to installer::windows::property::set_important_properties, avg 444µs/call | ||
505 | |||||
506 | # Setting feature names as properties for Windows patch mechanism | ||||
507 | if ( $installer::globals::patch ) { set_featurename_properties_for_patch($propertyfile); } | ||||
508 | |||||
509 | # Setting variables for register for ms file types | ||||
510 | 109 | 3.65ms | set_ms_file_types_properties($propertyfile); # spent 3.65ms making 109 calls to installer::windows::property::set_ms_file_types_properties, avg 33µs/call | ||
511 | |||||
512 | # Saving the file | ||||
513 | |||||
514 | 109 | 48.0ms | installer::files::save_file($properyfilename ,$propertyfile); # spent 48.0ms making 109 calls to installer::files::save_file, avg 440µs/call | ||
515 | my $infoline = "Updated idt file: $properyfilename\n"; | ||||
516 | push(@installer::globals::logfileinfo, $infoline); | ||||
517 | |||||
518 | } | ||||
519 | |||||
520 | #################################################################################### | ||||
521 | # Setting language specific Properties in file Property.idt dynamically | ||||
522 | # Adding: | ||||
523 | # isMulti = 1 | ||||
524 | #################################################################################### | ||||
525 | |||||
526 | sub set_languages_in_property_table | ||||
527 | # spent 127ms (7.19+120) within installer::windows::property::set_languages_in_property_table which was called 109 times, avg 1.17ms/call:
# 109 times (7.19ms+120ms) by installer::run at line 1655 of /cygdrive/c/lo/libo-master/instsetoo_native/util/C:/lo/libo-master/solenv/bin/modules/installer.pm, avg 1.17ms/call | ||||
528 | 1308 | 6.53ms | my ($basedir, $languagesarrayref) = @_; | ||
529 | |||||
530 | my $properyfilename = $basedir . $installer::globals::separator . "Property.idt"; | ||||
531 | 109 | 76.4ms | my $propertyfile = installer::files::read_file($properyfilename); # spent 76.4ms making 109 calls to installer::files::read_file, avg 701µs/call | ||
532 | |||||
533 | # Setting the info about multilingual installation in property "isMulti" | ||||
534 | |||||
535 | my $propertyname = "isMulti"; | ||||
536 | my $ismultivalue = 0; | ||||
537 | |||||
538 | if ( $installer::globals::ismultilingual ) { $ismultivalue = 1; } | ||||
539 | |||||
540 | my $onepropertyline = $propertyname . "\t" . $ismultivalue . "\n"; | ||||
541 | push(@{$propertyfile}, $onepropertyline); | ||||
542 | |||||
543 | # setting the ARPPRODUCTICON | ||||
544 | |||||
545 | 218 | 195µs | if ($installer::globals::sofficeiconadded) # set in shortcut.pm | ||
546 | { | ||||
547 | $onepropertyline = "ARPPRODUCTICON" . "\t" . "soffice.ico" . "\n"; | ||||
548 | push(@{$propertyfile}, $onepropertyline); | ||||
549 | } | ||||
550 | |||||
551 | # Saving the file | ||||
552 | |||||
553 | 109 | 43.4ms | installer::files::save_file($properyfilename ,$propertyfile); # spent 43.4ms making 109 calls to installer::files::save_file, avg 398µs/call | ||
554 | my $infoline = "Added language content into idt file: $properyfilename\n"; | ||||
555 | push(@installer::globals::logfileinfo, $infoline); | ||||
556 | |||||
557 | } | ||||
558 | |||||
559 | ############################################################ | ||||
560 | # Setting the ProductCode and the UpgradeCode | ||||
561 | # into the Property table. Both have to be stored | ||||
562 | # in the global file $installer::globals::codefilename | ||||
563 | ############################################################ | ||||
564 | |||||
565 | sub set_codes_in_property_table | ||||
566 | # spent 166ms (54.7+112) within installer::windows::property::set_codes_in_property_table which was called 109 times, avg 1.53ms/call:
# 109 times (54.7ms+112ms) by installer::run at line 1639 of /cygdrive/c/lo/libo-master/instsetoo_native/util/C:/lo/libo-master/solenv/bin/modules/installer.pm, avg 1.53ms/call | ||||
567 | 763 | 12.4ms | my ($basedir) = @_; | ||
568 | |||||
569 | # Reading the property file | ||||
570 | |||||
571 | my $properyfilename = $basedir . $installer::globals::separator . "Property.idt"; | ||||
572 | 109 | 60.2ms | my $propertyfile = installer::files::read_file($properyfilename); # spent 60.2ms making 109 calls to installer::files::read_file, avg 552µs/call | ||
573 | |||||
574 | # Updating the values | ||||
575 | |||||
576 | 13516 | 49.5ms | for ( my $i = 0; $i <= $#{$propertyfile}; $i++ ) | ||
577 | { | ||||
578 | 6758 | 4.28ms | ${$propertyfile}[$i] =~ s/\bPRODUCTCODETEMPLATE\b/$installer::globals::productcode/; # spent 4.28ms making 6758 calls to installer::windows::property::CORE:subst, avg 633ns/call | ||
579 | 6758 | 3.51ms | ${$propertyfile}[$i] =~ s/\bUPGRADECODETEMPLATE\b/$installer::globals::upgradecode/; # spent 3.51ms making 6758 calls to installer::windows::property::CORE:subst, avg 519ns/call | ||
580 | } | ||||
581 | |||||
582 | # Saving the property file | ||||
583 | |||||
584 | 109 | 43.7ms | installer::files::save_file($properyfilename ,$propertyfile); # spent 43.7ms making 109 calls to installer::files::save_file, avg 401µs/call | ||
585 | my $infoline = "Added language content into idt file: $properyfilename\n"; | ||||
586 | push(@installer::globals::logfileinfo, $infoline); | ||||
587 | |||||
588 | } | ||||
589 | |||||
590 | ############################################################ | ||||
591 | # Changing default for MS file type registration | ||||
592 | # in Beta products. | ||||
593 | ############################################################ | ||||
594 | |||||
595 | sub update_checkbox_table | ||||
596 | # spent 768µs within installer::windows::property::update_checkbox_table which was called 109 times, avg 7µs/call:
# 109 times (768µs+0s) by installer::run at line 1658 of /cygdrive/c/lo/libo-master/instsetoo_native/util/C:/lo/libo-master/solenv/bin/modules/installer.pm, avg 7µs/call | ||||
597 | 218 | 907µs | my ($basedir, $allvariables) = @_; | ||
598 | |||||
599 | if (( $allvariables->{'PRODUCTEXTENSION'} ) && ( $allvariables->{'PRODUCTEXTENSION'} eq "Beta" )) | ||||
600 | { | ||||
601 | my $checkboxfilename = $basedir . $installer::globals::separator . "CheckBox.idt"; | ||||
602 | |||||
603 | if ( -f $checkboxfilename ) | ||||
604 | { | ||||
605 | my $checkboxfile = installer::files::read_file($checkboxfilename); | ||||
606 | |||||
607 | my $checkboxline = "SELECT_WORD" . "\t" . "0" . "\n"; | ||||
608 | push(@{$checkboxfile}, $checkboxline); | ||||
609 | $checkboxline = "SELECT_EXCEL" . "\t" . "0" . "\n"; | ||||
610 | push(@{$checkboxfile}, $checkboxline); | ||||
611 | $checkboxline = "SELECT_POWERPOINT" . "\t" . "0" . "\n"; | ||||
612 | push(@{$checkboxfile}, $checkboxline); | ||||
613 | $checkboxline = "SELECT_VISIO" . "\t" . "0" . "\n"; | ||||
614 | push(@{$checkboxfile}, $checkboxline); | ||||
615 | |||||
616 | # Saving the property file | ||||
617 | installer::files::save_file($checkboxfilename ,$checkboxfile); | ||||
618 | my $infoline = "Added ms file type defaults into idt file: $checkboxfilename\n"; | ||||
619 | push(@installer::globals::logfileinfo, $infoline); | ||||
620 | } | ||||
621 | } | ||||
622 | } | ||||
623 | |||||
624 | 1 | 8µs | 1; | ||
# spent 8.41ms within installer::windows::property::CORE:match which was called 15042 times, avg 559ns/call:
# 8284 times (4.62ms+0s) by installer::windows::property::set_important_properties at line 387, avg 557ns/call
# 6758 times (3.79ms+0s) by installer::windows::property::update_property_table at line 490, avg 561ns/call | |||||
# spent 48.6ms within installer::windows::property::CORE:subst which was called 67798 times, avg 718ns/call:
# 6758 times (4.28ms+0s) by installer::windows::property::set_codes_in_property_table at line 578, avg 633ns/call
# 6758 times (4.26ms+0s) by installer::windows::property::update_property_table at line 482, avg 630ns/call
# 6758 times (3.59ms+0s) by installer::windows::property::update_property_table at line 483, avg 532ns/call
# 6758 times (3.57ms+0s) by installer::windows::property::update_property_table at line 485, avg 528ns/call
# 6758 times (3.54ms+0s) by installer::windows::property::update_property_table at line 487, avg 523ns/call
# 6758 times (3.51ms+0s) by installer::windows::property::set_codes_in_property_table at line 579, avg 519ns/call
# 6758 times (3.47ms+0s) by installer::windows::property::update_property_table at line 488, avg 514ns/call
# 6758 times (3.42ms+0s) by installer::windows::property::update_property_table at line 484, avg 506ns/call
# 6758 times (3.41ms+0s) by installer::windows::property::update_property_table at line 486, avg 505ns/call
# 6758 times (3.38ms+0s) by installer::windows::property::update_property_table at line 489, avg 499ns/call
# 109 times (12.1ms+0s) by installer::windows::property::get_arpcomments_for_property_table at line 67, avg 111µs/call
# 109 times (87µs+0s) by installer::windows::property::set_important_properties at line 318, avg 800ns/call |