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 @@ ...@@ -21,13 +21,14 @@
#ifndef ENABLE_SILENT_MSI #ifndef ENABLE_SILENT_MSI
FolderItem gid_Folderitem_Sbase FolderItem gid_Folderitem_Sbase
Name = "%PRODUCTNAME Base"; Name = "%PRODUCTNAME Base";
ModuleID = gid_Module_Brand_Prg_Base; ModuleID = gid_Module_Prg_Base_Bin;
FolderID = gid_Folder_Staroffice51; FolderID = gid_Folder_Staroffice51;
FileID = gid_File_Exe_Sbase; FileID = gid_File_Exe_Sbase;
IconFile = gid_File_Exe_Sbase; IconFile = gid_File_Exe_Sbase;
IconID = 0; IconID = 0;
WkDir = gid_Brand_Dir_Program; WkDir = gid_Brand_Dir_Program;
Parameter = ""; Parameter = "";
Styles = (NON_ADVERTISED);
ALL_LANG(Tooltip, STR_FI_TOOLTIP_BASE); ALL_LANG(Tooltip, STR_FI_TOOLTIP_BASE);
End End
......
...@@ -21,13 +21,14 @@ ...@@ -21,13 +21,14 @@
#ifndef ENABLE_SILENT_MSI #ifndef ENABLE_SILENT_MSI
FolderItem gid_Folderitem_Scalc FolderItem gid_Folderitem_Scalc
Name = "%PRODUCTNAME Calc"; Name = "%PRODUCTNAME Calc";
ModuleID = gid_Module_Brand_Prg_Calc; ModuleID = gid_Module_Prg_Calc_Bin;
FolderID = gid_Folder_Staroffice51; FolderID = gid_Folder_Staroffice51;
FileID = gid_File_Exe_Scalc; FileID = gid_File_Exe_Scalc;
IconFile = gid_File_Exe_Scalc; IconFile = gid_File_Exe_Scalc;
IconID = 0; IconID = 0;
WkDir = gid_Brand_Dir_Program; WkDir = gid_Brand_Dir_Program;
Parameter = ""; Parameter = "";
Styles = (NON_ADVERTISED);
ALL_LANG(Tooltip, STR_FI_TOOLTIP_CALC); ALL_LANG(Tooltip, STR_FI_TOOLTIP_CALC);
End End
......
...@@ -21,13 +21,14 @@ ...@@ -21,13 +21,14 @@
#ifndef ENABLE_SILENT_MSI #ifndef ENABLE_SILENT_MSI
FolderItem gid_Folderitem_Sdraw FolderItem gid_Folderitem_Sdraw
Name = "%PRODUCTNAME Draw"; Name = "%PRODUCTNAME Draw";
ModuleID = gid_Module_Brand_Prg_Draw; ModuleID = gid_Module_Prg_Draw_Bin;
FolderID = gid_Folder_Staroffice51; FolderID = gid_Folder_Staroffice51;
FileID = gid_File_Exe_Sdraw; FileID = gid_File_Exe_Sdraw;
IconFile = gid_File_Exe_Sdraw; IconFile = gid_File_Exe_Sdraw;
IconID = 0; IconID = 0;
WkDir = gid_Brand_Dir_Program; WkDir = gid_Brand_Dir_Program;
Parameter = ""; Parameter = "";
Styles = (NON_ADVERTISED);
ALL_LANG(Tooltip, STR_FI_TOOLTIP_DRAW); ALL_LANG(Tooltip, STR_FI_TOOLTIP_DRAW);
End End
......
...@@ -21,13 +21,14 @@ ...@@ -21,13 +21,14 @@
#ifndef ENABLE_SILENT_MSI #ifndef ENABLE_SILENT_MSI
FolderItem gid_Folderitem_Simpress FolderItem gid_Folderitem_Simpress
Name = "%PRODUCTNAME Impress"; Name = "%PRODUCTNAME Impress";
ModuleID = gid_Module_Brand_Prg_Impress; ModuleID = gid_Module_Prg_Impress_Bin;
FolderID = gid_Folder_Staroffice51; FolderID = gid_Folder_Staroffice51;
FileID = gid_File_Exe_Simpress; FileID = gid_File_Exe_Simpress;
IconFile = gid_File_Exe_Simpress; IconFile = gid_File_Exe_Simpress;
IconID = 0; IconID = 0;
WkDir = gid_Brand_Dir_Program; WkDir = gid_Brand_Dir_Program;
Parameter = ""; Parameter = "";
Styles = (NON_ADVERTISED);
ALL_LANG(Tooltip, STR_FI_TOOLTIP_IMPRESS); ALL_LANG(Tooltip, STR_FI_TOOLTIP_IMPRESS);
End End
......
...@@ -21,13 +21,14 @@ ...@@ -21,13 +21,14 @@
#ifndef ENABLE_SILENT_MSI #ifndef ENABLE_SILENT_MSI
FolderItem gid_Folderitem_Smath FolderItem gid_Folderitem_Smath
Name = "%PRODUCTNAME Math"; Name = "%PRODUCTNAME Math";
ModuleID = gid_Module_Brand_Prg_Math; ModuleID = gid_Module_Prg_Math_Bin;
FolderID = gid_Folder_Staroffice51; FolderID = gid_Folder_Staroffice51;
FileID = gid_File_Exe_Smath; FileID = gid_File_Exe_Smath;
IconFile = gid_File_Exe_Smath; IconFile = gid_File_Exe_Smath;
IconID = 0; IconID = 0;
WkDir = gid_Brand_Dir_Program; WkDir = gid_Brand_Dir_Program;
Parameter = ""; Parameter = "";
Styles = (NON_ADVERTISED);
ALL_LANG(Tooltip, STR_FI_TOOLTIP_MATH); ALL_LANG(Tooltip, STR_FI_TOOLTIP_MATH);
End End
......
...@@ -64,6 +64,7 @@ Module gid_Module_Root_Brand ...@@ -64,6 +64,7 @@ Module gid_Module_Root_Brand
gid_Brand_File_Bin_Libxml2, gid_Brand_File_Bin_Libxml2,
gid_Brand_File_Bmp_IntroAboutShell, gid_Brand_File_Bmp_IntroAboutShell,
gid_Brand_File_Bmp_IntroAboutShell_custom, gid_Brand_File_Bmp_IntroAboutShell_custom,
gid_Brand_File_Desktophelper_Txt,
gid_Brand_File_Html_Thirdpartylicensereadme, gid_Brand_File_Html_Thirdpartylicensereadme,
gid_Brand_File_Lib_Dbghelp, gid_Brand_File_Lib_Dbghelp,
gid_Brand_File_Lib_Mingw_GccS, gid_Brand_File_Lib_Mingw_GccS,
...@@ -559,6 +560,16 @@ File gid_Brand_File_Bin_Soffice_Bin_Manifest ...@@ -559,6 +560,16 @@ File gid_Brand_File_Bin_Soffice_Bin_Manifest
End End
#endif #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 File gid_Brand_File_Bin_Unoinfo
BIN_FILE_BODY; BIN_FILE_BODY;
Dir = gid_Brand_Dir_Program; Dir = gid_Brand_Dir_Program;
......
...@@ -20,19 +20,19 @@ ...@@ -20,19 +20,19 @@
FolderItem gid_Folderitem_LibreOffice FolderItem gid_Folderitem_LibreOffice
Name = "%PRODUCTNAME"; Name = "%PRODUCTNAME";
ModuleID = gid_Module_Root_Brand; ModuleID = gid_Module_Root;
#ifdef ENABLE_SILENT_MSI #ifdef ENABLE_SILENT_MSI
FolderID = PREDEFINED_STARTMENU; FolderID = PREDEFINED_STARTMENU;
Tooltip = "LibreOffice";
#else #else
FolderID = gid_Folder_Staroffice51; FolderID = gid_Folder_Staroffice51;
ALL_LANG(Tooltip, STR_FI_TOOLTIP_SOFFICE);
#endif #endif
FileID = gid_Brand_File_Bin_Soffice; FileID = gid_Brand_File_Bin_Soffice;
IconFile = gid_Brand_File_Bin_Soffice; IconFile = gid_Brand_File_Bin_Soffice;
IconID = 0; IconID = 0;
WkDir = gid_Brand_Dir_Program; WkDir = gid_Brand_Dir_Program;
Parameter = ""; Parameter = "";
Styles = (NON_ADVERTISED);
ALL_LANG(Tooltip, STR_FI_TOOLTIP_SOFFICE);
End End
FolderItemProperty gid_Fip_LibreOffice_AppID FolderItemProperty gid_Fip_LibreOffice_AppID
...@@ -44,18 +44,19 @@ End ...@@ -44,18 +44,19 @@ End
FolderItem gid_Folderitem_Soffice_Desktop FolderItem gid_Folderitem_Soffice_Desktop
#ifdef ENABLE_SILENT_MSI #ifdef ENABLE_SILENT_MSI
Name = "%PRODUCTNAME"; Name = "%PRODUCTNAME";
Tooltip = "LibreOffice";
#else #else
Name = "%PRODUCTNAME %PRODUCTVERSION"; Name = "%PRODUCTNAME %PRODUCTVERSION";
ALL_LANG(Tooltip, STR_FI_TOOLTIP_SOFFICE);
#endif #endif
ModuleID = gid_Module_Root_Brand; ModuleID = gid_Module_Root;
FolderID = PREDEFINED_DESKTOP; FolderID = PREDEFINED_DESKTOP;
FileID = gid_Brand_File_Bin_Soffice; FileID = gid_Brand_File_Bin_Soffice;
IconFile = gid_Brand_File_Bin_Soffice; IconFile = gid_Brand_File_Bin_Soffice;
IconID = 0; IconID = 0;
ComponentIDFile = "gid_Brand_File_Desktophelper_Txt";
WkDir = gid_Brand_Dir_Program; WkDir = gid_Brand_Dir_Program;
Parameter = ""; Parameter = "";
Styles = (NON_ADVERTISED,USE_HELPER_FILENAME);
ALL_LANG(Tooltip, STR_FI_TOOLTIP_SOFFICE);
ComponentCondition = "CREATEDESKTOPLINK=1"; ComponentCondition = "CREATEDESKTOPLINK=1";
End End
......
...@@ -21,13 +21,14 @@ ...@@ -21,13 +21,14 @@
#ifndef ENABLE_SILENT_MSI #ifndef ENABLE_SILENT_MSI
FolderItem gid_Folderitem_Swriter FolderItem gid_Folderitem_Swriter
Name = "%PRODUCTNAME Writer"; Name = "%PRODUCTNAME Writer";
ModuleID = gid_Module_Brand_Prg_Wrt; ModuleID = gid_Module_Prg_Wrt_Bin;
FolderID = gid_Folder_Staroffice51; FolderID = gid_Folder_Staroffice51;
FileID = gid_File_Exe_Swriter; FileID = gid_File_Exe_Swriter;
IconFile = gid_File_Exe_Swriter; IconFile = gid_File_Exe_Swriter;
IconID = 0; IconID = 0;
WkDir = gid_Brand_Dir_Program; WkDir = gid_Brand_Dir_Program;
Parameter = ""; Parameter = "";
Styles = (NON_ADVERTISED);
ALL_LANG(Tooltip, STR_FI_TOOLTIP_WRITER); ALL_LANG(Tooltip, STR_FI_TOOLTIP_WRITER);
End End
......
...@@ -18,5 +18,6 @@ $(eval $(call gb_Package_add_file,setup_native/misc,bin/osl/osxdndinstall.png,ma ...@@ -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/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/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/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: # vim: set noet sw=4 ts=4:
...@@ -373,6 +373,8 @@ sub run { ...@@ -373,6 +373,8 @@ sub run {
$folderitempropertiesinproductarrayref = installer::setupscript::get_all_items_from_script($setupscriptref, "FolderItemProperty"); $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" ); installer::logger::print_message( "... analyzing registryitems ... \n" );
$registryitemsinproductarrayref = installer::setupscript::get_all_items_from_script($setupscriptref, "RegistryItem"); $registryitemsinproductarrayref = installer::setupscript::get_all_items_from_script($setupscriptref, "RegistryItem");
......
...@@ -186,6 +186,8 @@ BEGIN ...@@ -186,6 +186,8 @@ BEGIN
$refresh_includepaths = 0; $refresh_includepaths = 0;
$include_paths_read = 0; $include_paths_read = 0;
@patchfilecollector = (); @patchfilecollector = ();
@userregistrycollector = ();
$addeduserregitrykeys = 0;
$desktoplinkexists = 0; $desktoplinkexists = 0;
$analyze_spellcheckerlanguage = 0; $analyze_spellcheckerlanguage = 0;
%spellcheckerlanguagehash = (); %spellcheckerlanguagehash = ();
......
...@@ -33,6 +33,7 @@ our @EXPORT_OK = qw( ...@@ -33,6 +33,7 @@ our @EXPORT_OK = qw(
add_predefined_folder add_predefined_folder
get_all_items_from_script get_all_items_from_script
get_all_scriptvariables_from_installation_object get_all_scriptvariables_from_installation_object
prepare_non_advertised_files
replace_all_setupscriptvariables_in_script replace_all_setupscriptvariables_in_script
replace_preset_properties replace_preset_properties
resolve_lowercase_productname_setupscriptvariable resolve_lowercase_productname_setupscriptvariable
...@@ -394,6 +395,36 @@ sub add_predefined_folder ...@@ -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 # Adding all variables defined in the installation object into the hash
# of all variables from the zip list file. # of all variables from the zip list file.
......
...@@ -218,6 +218,11 @@ sub get_file_component_attributes ...@@ -218,6 +218,11 @@ sub get_file_component_attributes
$attributes = 0; # Assembly files cannot run from source $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. # Setting msidbComponentAttributes64bit, if this is a 64 bit installation set.
if (( $allvariables->{'64BITPRODUCT'} ) && ( $allvariables->{'64BITPRODUCT'} == 1 )) { $attributes |= 256; } if (( $allvariables->{'64BITPRODUCT'} ) && ( $allvariables->{'64BITPRODUCT'} == 1 )) { $attributes |= 256; }
...@@ -351,6 +356,8 @@ sub get_component_keypath ...@@ -351,6 +356,8 @@ sub get_component_keypath
} }
} }
if ( $oneitem->{'userregkeypath'} ) { $keypath = $oneitem->{'userregkeypath'}; }
# saving it in the file and registry collection # saving it in the file and registry collection
$oneitem->{'keypath'} = $keypath; $oneitem->{'keypath'} = $keypath;
......
...@@ -661,6 +661,22 @@ sub get_language_for_file ...@@ -661,6 +661,22 @@ sub get_language_for_file
return $language; 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 # Check, if in an update process files are missing. No removal
# of files allowed for Windows Patch creation. # of files allowed for Windows Patch creation.
...@@ -942,6 +958,14 @@ sub create_files_table ...@@ -942,6 +958,14 @@ sub create_files_table
my $destdir = ""; my $destdir = "";
if ( $onefile->{'Dir'} ) { $destdir = $onefile->{'Dir'}; } 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 # putting content from %allfilecomponents to $allfilecomponentsref for later usage
......
...@@ -270,9 +270,6 @@ sub set_important_properties ...@@ -270,9 +270,6 @@ sub set_important_properties
$onepropertyline = "DONTOPTIMIZELIBS" . "\t" . "0" . "\n"; $onepropertyline = "DONTOPTIMIZELIBS" . "\t" . "0" . "\n";
push(@{$propertyfile}, $onepropertyline); push(@{$propertyfile}, $onepropertyline);
$onepropertyline = "DISABLEADVTSHORTCUTS" . "\t" . "1" . "\n";
push(@{$propertyfile}, $onepropertyline);
if ( $installer::globals::officedirhostname ) if ( $installer::globals::officedirhostname )
{ {
my $onepropertyline = "OFFICEDIRHOSTNAME" . "\t" . $installer::globals::officedirhostname . "\n"; my $onepropertyline = "OFFICEDIRHOSTNAME" . "\t" . $installer::globals::officedirhostname . "\n";
......
...@@ -288,6 +288,38 @@ sub get_registry_component ...@@ -288,6 +288,38 @@ sub get_registry_component
return $componentname; 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 # Creating the file Registry.idt dynamically
# Content: # Content:
...@@ -360,6 +392,12 @@ sub create_registry_table ...@@ -360,6 +392,12 @@ sub create_registry_table
push(@registrytable, $oneline); 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 # Saving the file
my $registrytablename = $basedir . $installer::globals::separator . "Registry.idt" . "." . $onelanguage; my $registrytablename = $basedir . $installer::globals::separator . "Registry.idt" . "." . $onelanguage;
......
...@@ -112,6 +112,14 @@ sub get_shortcut_component ...@@ -112,6 +112,14 @@ sub get_shortcut_component
my $found = 0; my $found = 0;
my $shortcut_fileid = $shortcut->{'FileID'}; 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++ ) for ( my $i = 0; $i <= $#{$filesref}; $i++ )
{ {
$onefile = ${$filesref}[$i]; $onefile = ${$filesref}[$i];
...@@ -342,18 +350,71 @@ sub get_folderitem_directory ...@@ -342,18 +350,71 @@ sub get_folderitem_directory
######################################################################## ########################################################################
# Returning the target (feature) for a folderitem for shortcut table. # Returning the target (feature) for a folderitem for shortcut table.
# For non-advertised shortcuts this is a formatted string.
######################################################################## ########################################################################
sub get_folderitem_target sub get_folderitem_target
{ {
my ($shortcut, $filesref) = @_; 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! # Attention: Maximum feature length is 38!
installer::windows::idtglobal::shorten_feature_gid(\$target); installer::windows::idtglobal::shorten_feature_gid(\$target);
# and finally saving the target in the folderitems collector # and finally saving the target in the folderitems collector
$shortcut->{'target'} = $target; $shortcut->{'target'} = $target;
return $target; return $target;
...@@ -385,6 +446,7 @@ sub get_folderitem_icon ...@@ -385,6 +446,7 @@ sub get_folderitem_icon
my $styles = ""; my $styles = "";
if ( $shortcut->{'Styles'} ) { $styles = $shortcut->{'Styles'}; } if ( $shortcut->{'Styles'} ) { $styles = $shortcut->{'Styles'}; }
if ( $styles =~ /\bNON_ADVERTISED\b/ ) { return ""; } # no icon for non-advertised shortcuts
my $iconfilegid = ""; my $iconfilegid = "";
...@@ -432,6 +494,11 @@ sub get_folderitem_icon ...@@ -432,6 +494,11 @@ sub get_folderitem_icon
sub get_folderitem_iconindex sub get_folderitem_iconindex
{ {
my ($shortcut) = @_; 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; my $iconid = 0;
if ( $shortcut->{'IconID'} ) { $iconid = $shortcut->{'IconID'}; } if ( $shortcut->{'IconID'} ) { $iconid = $shortcut->{'IconID'}; }
......
...@@ -627,6 +627,34 @@ sub collect_all_files_from_includepaths ...@@ -627,6 +627,34 @@ sub collect_all_files_from_includepaths
push( @installer::globals::globallogfileinfo, "\n"); 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) # Generating paths for cygwin (second version)
# This function generates smaller files for # This function generates smaller files for
......
...@@ -20,6 +20,7 @@ BEGIN { ...@@ -20,6 +20,7 @@ BEGIN {
add_predefined_folder add_predefined_folder
get_all_items_from_script get_all_items_from_script
get_all_scriptvariables_from_installation_object get_all_scriptvariables_from_installation_object
prepare_non_advertised_files
replace_all_setupscriptvariables_in_script replace_all_setupscriptvariables_in_script
replace_preset_properties replace_preset_properties
resolve_lowercase_productname_setupscriptvariable 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