Kaydet (Commit) 7d97ec9a authored tarafından Andras Timar's avatar Andras Timar

fdo#65102 respect user's choice not to install desktop icon

Using advertised shortcuts -- inspired by Intel AppUp Centre's
requirement -- was not a good idea after all. I revert this,
and  I also revert the commit that actually disabled it in
default Windows builds.

This reverts commit aa2450cb.
This reverts commit b40012bd.
üst 1d3661cf
......@@ -21,13 +21,14 @@
#ifndef ENABLE_SILENT_MSI
FolderItem gid_Folderitem_Sbase
Name = "%PRODUCTNAME Base";
ModuleID = gid_Module_Brand_Prg_Base;
ModuleID = gid_Module_Prg_Base_Bin;
FolderID = gid_Folder_Staroffice51;
FileID = gid_File_Exe_Sbase;
IconFile = gid_File_Exe_Sbase;
IconID = 0;
WkDir = gid_Brand_Dir_Program;
Parameter = "";
Styles = (NON_ADVERTISED);
ALL_LANG(Tooltip, STR_FI_TOOLTIP_BASE);
End
......
......@@ -21,13 +21,14 @@
#ifndef ENABLE_SILENT_MSI
FolderItem gid_Folderitem_Scalc
Name = "%PRODUCTNAME Calc";
ModuleID = gid_Module_Brand_Prg_Calc;
ModuleID = gid_Module_Prg_Calc_Bin;
FolderID = gid_Folder_Staroffice51;
FileID = gid_File_Exe_Scalc;
IconFile = gid_File_Exe_Scalc;
IconID = 0;
WkDir = gid_Brand_Dir_Program;
Parameter = "";
Styles = (NON_ADVERTISED);
ALL_LANG(Tooltip, STR_FI_TOOLTIP_CALC);
End
......
......@@ -21,13 +21,14 @@
#ifndef ENABLE_SILENT_MSI
FolderItem gid_Folderitem_Sdraw
Name = "%PRODUCTNAME Draw";
ModuleID = gid_Module_Brand_Prg_Draw;
ModuleID = gid_Module_Prg_Draw_Bin;
FolderID = gid_Folder_Staroffice51;
FileID = gid_File_Exe_Sdraw;
IconFile = gid_File_Exe_Sdraw;
IconID = 0;
WkDir = gid_Brand_Dir_Program;
Parameter = "";
Styles = (NON_ADVERTISED);
ALL_LANG(Tooltip, STR_FI_TOOLTIP_DRAW);
End
......
......@@ -21,13 +21,14 @@
#ifndef ENABLE_SILENT_MSI
FolderItem gid_Folderitem_Simpress
Name = "%PRODUCTNAME Impress";
ModuleID = gid_Module_Brand_Prg_Impress;
ModuleID = gid_Module_Prg_Impress_Bin;
FolderID = gid_Folder_Staroffice51;
FileID = gid_File_Exe_Simpress;
IconFile = gid_File_Exe_Simpress;
IconID = 0;
WkDir = gid_Brand_Dir_Program;
Parameter = "";
Styles = (NON_ADVERTISED);
ALL_LANG(Tooltip, STR_FI_TOOLTIP_IMPRESS);
End
......
......@@ -21,13 +21,14 @@
#ifndef ENABLE_SILENT_MSI
FolderItem gid_Folderitem_Smath
Name = "%PRODUCTNAME Math";
ModuleID = gid_Module_Brand_Prg_Math;
ModuleID = gid_Module_Prg_Math_Bin;
FolderID = gid_Folder_Staroffice51;
FileID = gid_File_Exe_Smath;
IconFile = gid_File_Exe_Smath;
IconID = 0;
WkDir = gid_Brand_Dir_Program;
Parameter = "";
Styles = (NON_ADVERTISED);
ALL_LANG(Tooltip, STR_FI_TOOLTIP_MATH);
End
......
......@@ -64,6 +64,7 @@ Module gid_Module_Root_Brand
gid_Brand_File_Bin_Libxml2,
gid_Brand_File_Bmp_IntroAboutShell,
gid_Brand_File_Bmp_IntroAboutShell_custom,
gid_Brand_File_Desktophelper_Txt,
gid_Brand_File_Html_Thirdpartylicensereadme,
gid_Brand_File_Lib_Dbghelp,
gid_Brand_File_Lib_Mingw_GccS,
......@@ -559,6 +560,16 @@ File gid_Brand_File_Bin_Soffice_Bin_Manifest
End
#endif
#ifdef WNT
File gid_Brand_File_Desktophelper_Txt
TXT_FILE_BODY;
Styles = (PACKED);
Dir = gid_Brand_Dir_Program;
Name = "desktophelper.txt";
ComponentCondition = "CREATEDESKTOPLINK=1";
End
#endif
File gid_Brand_File_Bin_Unoinfo
BIN_FILE_BODY;
Dir = gid_Brand_Dir_Program;
......
......@@ -20,19 +20,19 @@
FolderItem gid_Folderitem_LibreOffice
Name = "%PRODUCTNAME";
ModuleID = gid_Module_Root_Brand;
ModuleID = gid_Module_Root;
#ifdef ENABLE_SILENT_MSI
FolderID = PREDEFINED_STARTMENU;
Tooltip = "LibreOffice";
#else
FolderID = gid_Folder_Staroffice51;
ALL_LANG(Tooltip, STR_FI_TOOLTIP_SOFFICE);
#endif
FileID = gid_Brand_File_Bin_Soffice;
IconFile = gid_Brand_File_Bin_Soffice;
IconID = 0;
WkDir = gid_Brand_Dir_Program;
Parameter = "";
Styles = (NON_ADVERTISED);
ALL_LANG(Tooltip, STR_FI_TOOLTIP_SOFFICE);
End
FolderItemProperty gid_Fip_LibreOffice_AppID
......@@ -44,18 +44,19 @@ End
FolderItem gid_Folderitem_Soffice_Desktop
#ifdef ENABLE_SILENT_MSI
Name = "%PRODUCTNAME";
Tooltip = "LibreOffice";
#else
Name = "%PRODUCTNAME %PRODUCTVERSION";
ALL_LANG(Tooltip, STR_FI_TOOLTIP_SOFFICE);
#endif
ModuleID = gid_Module_Root_Brand;
ModuleID = gid_Module_Root;
FolderID = PREDEFINED_DESKTOP;
FileID = gid_Brand_File_Bin_Soffice;
IconFile = gid_Brand_File_Bin_Soffice;
IconID = 0;
ComponentIDFile = "gid_Brand_File_Desktophelper_Txt";
WkDir = gid_Brand_Dir_Program;
Parameter = "";
Styles = (NON_ADVERTISED,USE_HELPER_FILENAME);
ALL_LANG(Tooltip, STR_FI_TOOLTIP_SOFFICE);
ComponentCondition = "CREATEDESKTOPLINK=1";
End
......
......@@ -21,13 +21,14 @@
#ifndef ENABLE_SILENT_MSI
FolderItem gid_Folderitem_Swriter
Name = "%PRODUCTNAME Writer";
ModuleID = gid_Module_Brand_Prg_Wrt;
ModuleID = gid_Module_Prg_Wrt_Bin;
FolderID = gid_Folder_Staroffice51;
FileID = gid_File_Exe_Swriter;
IconFile = gid_File_Exe_Swriter;
IconID = 0;
WkDir = gid_Brand_Dir_Program;
Parameter = "";
Styles = (NON_ADVERTISED);
ALL_LANG(Tooltip, STR_FI_TOOLTIP_WRITER);
End
......
......@@ -18,5 +18,6 @@ $(eval $(call gb_Package_add_file,setup_native/misc,bin/osl/osxdndinstall.png,ma
$(eval $(call gb_Package_add_file,setup_native/misc,bin/root3.dat,linux/root3.dat))
$(eval $(call gb_Package_add_file,setup_native/misc,bin/root4.dat,linux/root4.dat))
$(eval $(call gb_Package_add_file,setup_native/misc,bin/root5.dat,linux/root5.dat))
$(eval $(call gb_Package_add_file,setup_native/misc,bin/desktophelper.txt,win32/desktophelper.txt))
# vim: set noet sw=4 ts=4:
......@@ -373,6 +373,8 @@ sub run {
$folderitempropertiesinproductarrayref = installer::setupscript::get_all_items_from_script($setupscriptref, "FolderItemProperty");
installer::setupscript::prepare_non_advertised_files($folderitemsinproductarrayref, $filesinproductarrayref);
installer::logger::print_message( "... analyzing registryitems ... \n" );
$registryitemsinproductarrayref = installer::setupscript::get_all_items_from_script($setupscriptref, "RegistryItem");
......
......@@ -186,6 +186,8 @@ BEGIN
$refresh_includepaths = 0;
$include_paths_read = 0;
@patchfilecollector = ();
@userregistrycollector = ();
$addeduserregitrykeys = 0;
$desktoplinkexists = 0;
$analyze_spellcheckerlanguage = 0;
%spellcheckerlanguagehash = ();
......
......@@ -33,6 +33,7 @@ our @EXPORT_OK = qw(
add_predefined_folder
get_all_items_from_script
get_all_scriptvariables_from_installation_object
prepare_non_advertised_files
replace_all_setupscriptvariables_in_script
replace_preset_properties
resolve_lowercase_productname_setupscriptvariable
......@@ -394,6 +395,36 @@ sub add_predefined_folder
}
}
#####################################################################################
# If folderitems are non-advertised, the component needs to have a registry key
# below HKCU as key path. Therefore it is required, to mark the file belonging
# to a non-advertised shortcut, that a special userreg_xxx registry key can be
# created during packing process.
#####################################################################################
sub prepare_non_advertised_files
{
my ( $folderitemref, $filesref ) = @_;
for ( my $i = 0; $i <= $#{$folderitemref}; $i++ )
{
my $folderitem = ${$folderitemref}[$i];
my $styles = "";
if ( $folderitem->{'Styles'} ) { $styles = $folderitem->{'Styles'}; }
if ( $styles =~ /\bNON_ADVERTISED\b/ )
{
my $fileid = $folderitem->{'FileID'};
if ( $folderitem->{'ComponentIDFile'} ) { $fileid = $folderitem->{'ComponentIDFile'}; }
my $onefile = installer::worker::find_file_by_id($filesref, $fileid);
# Attention: If $onefile with "FileID" is not found, this is not always an error.
# FileID can also contain an executable file, for example msiexec.exe.
if ( $onefile ne "" ) { $onefile->{'needs_user_registry_key'} = 1; }
}
}
}
#####################################################################################
# Adding all variables defined in the installation object into the hash
# of all variables from the zip list file.
......
......@@ -218,6 +218,11 @@ sub get_file_component_attributes
$attributes = 0; # Assembly files cannot run from source
}
if ( $onefile->{'needs_user_registry_key'} )
{
$attributes = 4; # Files in non advertised startmenu entries must have user registry key as KeyPath
}
# Setting msidbComponentAttributes64bit, if this is a 64 bit installation set.
if (( $allvariables->{'64BITPRODUCT'} ) && ( $allvariables->{'64BITPRODUCT'} == 1 )) { $attributes |= 256; }
......@@ -351,6 +356,8 @@ sub get_component_keypath
}
}
if ( $oneitem->{'userregkeypath'} ) { $keypath = $oneitem->{'userregkeypath'}; }
# saving it in the file and registry collection
$oneitem->{'keypath'} = $keypath;
......
......@@ -661,6 +661,22 @@ sub get_language_for_file
return $language;
}
####################################################################
# Creating a new KeyPath for components in TemplatesFolder.
####################################################################
sub generate_registry_keypath
{
my ($onefile) = @_;
my $keypath = $onefile->{'Name'};
$keypath =~ s/\.//g;
$keypath = lc($keypath);
$keypath = "userreg_" . $keypath;
return $keypath;
}
####################################################################
# Check, if in an update process files are missing. No removal
# of files allowed for Windows Patch creation.
......@@ -942,6 +958,14 @@ sub create_files_table
my $destdir = "";
if ( $onefile->{'Dir'} ) { $destdir = $onefile->{'Dir'}; }
if ( $onefile->{'needs_user_registry_key'} )
{
my $keypath = generate_registry_keypath($onefile);
$onefile->{'userregkeypath'} = $keypath;
push(@installer::globals::userregistrycollector, $onefile);
$installer::globals::addeduserregitrykeys = 1;
}
}
# putting content from %allfilecomponents to $allfilecomponentsref for later usage
......
......@@ -270,9 +270,6 @@ sub set_important_properties
$onepropertyline = "DONTOPTIMIZELIBS" . "\t" . "0" . "\n";
push(@{$propertyfile}, $onepropertyline);
$onepropertyline = "DISABLEADVTSHORTCUTS" . "\t" . "1" . "\n";
push(@{$propertyfile}, $onepropertyline);
if ( $installer::globals::officedirhostname )
{
my $onepropertyline = "OFFICEDIRHOSTNAME" . "\t" . $installer::globals::officedirhostname . "\n";
......
......@@ -288,6 +288,38 @@ sub get_registry_component
return $componentname;
}
######################################################
# Adding the content of
# @installer::globals::userregistrycollector
# to the registry table. The content was collected
# in create_files_table() in file.pm.
######################################################
sub add_userregs_to_registry_table
{
my ( $registrytable, $allvariables ) = @_;
for ( my $i = 0; $i <= $#installer::globals::userregistrycollector; $i++ )
{
my $onefile = $installer::globals::userregistrycollector[$i];
my %registry = ();
$registry{'Registry'} = $onefile->{'userregkeypath'};
$registry{'Root'} = "1"; # always HKCU
$registry{'Key'} = "Software\\$allvariables->{'MANUFACTURER'}\\$allvariables->{'PRODUCTNAME'} $allvariables->{'PRODUCTVERSION'}\\";
if ( $onefile->{'needs_user_registry_key'} ) { $registry{'Key'} = $registry{'Key'} . "StartMenu"; }
$registry{'Name'} = $onefile->{'Name'};
$registry{'Value'} = "1";
$registry{'Component_'} = $onefile->{'componentname'};
my $oneline = $registry{'Registry'} . "\t" . $registry{'Root'} . "\t" . $registry{'Key'} . "\t"
. $registry{'Name'} . "\t" . $registry{'Value'} . "\t" . $registry{'Component_'} . "\n";
push(@{$registrytable}, $oneline);
}
}
######################################################
# Creating the file Registry.idt dynamically
# Content:
......@@ -360,6 +392,12 @@ sub create_registry_table
push(@registrytable, $oneline);
}
# If there are added user registry keys for files collected in
# @installer::globals::userregistrycollector (file.pm), then
# this registry keys have to be added now.
if ( $installer::globals::addeduserregitrykeys ) { add_userregs_to_registry_table(\@registrytable, $allvariableshashref); }
# Saving the file
my $registrytablename = $basedir . $installer::globals::separator . "Registry.idt" . "." . $onelanguage;
......
......@@ -112,6 +112,14 @@ sub get_shortcut_component
my $found = 0;
my $shortcut_fileid = $shortcut->{'FileID'};
my $absolute_filename = 0;
if ( $shortcut->{'Styles'} ) { $styles = $shortcut->{'Styles'}; }
if ( $styles =~ /\bABSOLUTE_FILENAME\b/ ) { $absolute_filename = 1; } # FileID contains an absolute filename
if ( $styles =~ /\bUSE_HELPER_FILENAME\b/ ) { $absolute_filename = 1; } # ComponentIDFile contains id of a helper file
# if the FileID contains an absolute filename, therefore the entry for "ComponentIDFile" has to be used.
if ( $absolute_filename ) { $shortcut_fileid = $shortcut->{'ComponentIDFile'}; }
for ( my $i = 0; $i <= $#{$filesref}; $i++ )
{
$onefile = ${$filesref}[$i];
......@@ -342,18 +350,71 @@ sub get_folderitem_directory
########################################################################
# Returning the target (feature) for a folderitem for shortcut table.
# For non-advertised shortcuts this is a formatted string.
########################################################################
sub get_folderitem_target
{
my ($shortcut, $filesref) = @_;
my $target = $shortcut->{'ModuleID'};
my $onefile;
my $target = "";
my $found = 0;
my $shortcut_fileid = $shortcut->{'FileID'};
my $styles = "";
my $nonadvertised = 0;
my $absolute_filename = 0;
if ( $shortcut->{'Styles'} ) { $styles = $shortcut->{'Styles'}; }
if ( $styles =~ /\bNON_ADVERTISED\b/ ) { $nonadvertised = 1; } # this is a non-advertised shortcut
if ( $styles =~ /\bABSOLUTE_FILENAME\b/ ) { $absolute_filename = 1; } # FileID contains an absolute filename
# if the FileID contains an absolute filename this can simply be returned as target for the shortcut table.
if ( $absolute_filename )
{
$shortcut->{'target'} = $shortcut_fileid;
return $shortcut_fileid;
}
for ( my $i = 0; $i <= $#{$filesref}; $i++ )
{
$onefile = ${$filesref}[$i];
my $filegid = $onefile->{'gid'};
if ( $filegid eq $shortcut_fileid )
{
$found = 1;
last;
}
}
if (!($found))
{
installer::exiter::exit_program("ERROR: Did not find FileID $shortcut_fileid in file collection for folderitem", "get_folderitem_target");
}
# Non advertised shortcuts do not return the feature, but the path to the file
if ( $nonadvertised )
{
$target = "\[" . $onefile->{'uniquedirname'} . "\]" . "\\" . $onefile->{'Name'};
$shortcut->{'target'} = $target;
return $target;
}
# the rest only for advertised shortcuts, which contain the feature in the shortcut table.
if ( $onefile->{'modules'} ) { $target = $onefile->{'modules'}; }
# If modules contains a list of modules, only taking the first one.
# But this should never be needed
if ( $target =~ /^\s*(.*?)\,/ ) { $target = $1; }
# Attention: Maximum feature length is 38!
installer::windows::idtglobal::shorten_feature_gid(\$target);
# and finally saving the target in the folderitems collector
$shortcut->{'target'} = $target;
return $target;
......@@ -385,6 +446,7 @@ sub get_folderitem_icon
my $styles = "";
if ( $shortcut->{'Styles'} ) { $styles = $shortcut->{'Styles'}; }
if ( $styles =~ /\bNON_ADVERTISED\b/ ) { return ""; } # no icon for non-advertised shortcuts
my $iconfilegid = "";
......@@ -432,6 +494,11 @@ sub get_folderitem_icon
sub get_folderitem_iconindex
{
my ($shortcut) = @_;
my $styles = "";
if ( $shortcut->{'Styles'} ) { $styles = $shortcut->{'Styles'}; }
if ( $styles =~ /\bNON_ADVERTISED\b/ ) { return ""; } # no iconindex for non-advertised shortcuts
my $iconid = 0;
if ( $shortcut->{'IconID'} ) { $iconid = $shortcut->{'IconID'}; }
......
......@@ -627,6 +627,34 @@ sub collect_all_files_from_includepaths
push( @installer::globals::globallogfileinfo, "\n");
}
##############################################
# Searching for a file with the gid
##############################################
sub find_file_by_id
{
my ( $filesref, $gid ) = @_;
my $foundfile = 0;
my $onefile;
for ( my $i = 0; $i <= $#{$filesref}; $i++ )
{
$onefile = ${$filesref}[$i];
my $filegid = $onefile->{'gid'};
if ( $filegid eq $gid )
{
$foundfile = 1;
last;
}
}
if (! $foundfile ) { $onefile = ""; }
return $onefile;
}
#################################################
# Generating paths for cygwin (second version)
# This function generates smaller files for
......
......@@ -20,6 +20,7 @@ BEGIN {
add_predefined_folder
get_all_items_from_script
get_all_scriptvariables_from_installation_object
prepare_non_advertised_files
replace_all_setupscriptvariables_in_script
replace_preset_properties
resolve_lowercase_productname_setupscriptvariable
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment