diff options
author | Norbert Preining <preining@logic.at> | 2009-03-13 16:52:03 +0000 |
---|---|---|
committer | Norbert Preining <preining@logic.at> | 2009-03-13 16:52:03 +0000 |
commit | 46bb370b725244554de371c87d1812bd0a47e3f7 (patch) | |
tree | a56b445c45c1efec3dfc9b9e0d76c79465befddd | |
parent | fe247ba9d4d40b22d2b3a37a41fc327eea3ef86f (diff) |
make admin/non-admin installation an option (for admins), split
path adjustments (unix: links, w32: regedit) from system integration (menus)
git-svn-id: svn://tug.org/texlive/branches/branch2009-dev@12380 c570f23f-e606-0410-a88d-b1316a301751
-rwxr-xr-x | Master/install-tl | 22 | ||||
-rw-r--r-- | Master/tlpkg/TeXLive/TLPDB.pm | 10 | ||||
-rwxr-xr-x | Master/tlpkg/installer/install-menu-text.pl | 47 | ||||
-rw-r--r-- | Master/tlpkg/tlpsrc/00texlive.installation.tlpsrc | 2 |
4 files changed, 66 insertions, 15 deletions
diff --git a/Master/install-tl b/Master/install-tl index 89a9c492f10..cb2b39f7f0f 100755 --- a/Master/install-tl +++ b/Master/install-tl @@ -490,6 +490,10 @@ exit(0); ################################################################### sub do_installation { + if (win32()) { + debug("Switching to non-admin mode due to explict user request!\n"); + non_admin() if !$vars{'option_w32_admin'}; + } # do the actual installation my $h; prepare_installation(); @@ -698,6 +702,11 @@ operations might be disturbed.\n\n"; } } + # + # do path adjustments: On Windows add/remove to PATH etc, on Unix + # set symlinks + do_path_adjustments() if $vars{'option_path'}; + # no do the system integration: # on unix this means setting up symlinks # on w32 this means adding to path, settting registry values @@ -705,7 +714,9 @@ operations might be disturbed.\n\n"; do_system_integration() if $vars{'option_sysint'}; } + sub do_system_integration { + info ("running system integration actions\n"); # Run the post installation code in the postaction tlpsrc entries my $usedtlpdb = $vars{'from_dvd'} ? $tlpdb : $localtlpdb; foreach my $package (sort keys %install) { @@ -715,7 +726,10 @@ sub do_system_integration { } } info ("finished with package specific postactions\n"); +} +sub do_path_adjustments { + info ("running path adjustment actions\n"); if (win32()) { update_assocs(); @@ -746,6 +760,7 @@ sub do_system_integration { } else { $localtlpdb->add_symlinks() } + info ("finished with path adjustment actions\n"); } @@ -1040,9 +1055,10 @@ sub load_tlpdb { $vars{'option_letter'} = defined($tlpdb->option_paper) && ($tlpdb->option_paper eq "letter" ? 1 : 0); $vars{'option_sysint'} = $tlpdb->option_system_integration; - if (win32()) { - $vars{'option_sysint'} = 1; - } + $vars{'option_sysint'} = 1 if win32(); + $vars{'option_path'} = $tlpdb->option_path; + $vars{'option_path'} = 1 if win32(); + $vars{'option_w32_admin'} = $tlpdb->option_w32_admin; $vars{'sys_bin'} = $tlpdb->option_sys_bin; $vars{'sys_man'} = $tlpdb->option_sys_man; $vars{'sys_info'} = $tlpdb->option_sys_info; diff --git a/Master/tlpkg/TeXLive/TLPDB.pm b/Master/tlpkg/TeXLive/TLPDB.pm index 3024e105fac..67cb9ed7d7b 100644 --- a/Master/tlpkg/TeXLive/TLPDB.pm +++ b/Master/tlpkg/TeXLive/TLPDB.pm @@ -1184,6 +1184,16 @@ sub option_system_integration { if (@_) { $self->_set_option_value("opt_system_integration", shift); } return $self->_option_value("opt_system_integration"); } +sub option_path { + my $self = shift; + if (@_) { $self->_set_option_value("opt_path", shift); } + return $self->_option_value("opt_path"); +} +sub option_w32_admin { + my $self = shift; + if (@_) { $self->_set_option_value("opt_w32_admin", shift); } + return $self->_option_value("opt_w32_admin"); +} sub option_install_docfiles { my $self = shift; if (@_) { $self->_set_option_value("opt_install_docfiles", shift); } diff --git a/Master/tlpkg/installer/install-menu-text.pl b/Master/tlpkg/installer/install-menu-text.pl index ae6fec5dc4f..700f843d9b5 100755 --- a/Master/tlpkg/installer/install-menu-text.pl +++ b/Master/tlpkg/installer/install-menu-text.pl @@ -676,19 +676,21 @@ sub help_menu { sub options_menu { - my $b_sysint=button($vars{'option_sysint'}); + my $b_path=button($vars{'option_path'}); my $b_doc=button($vars{'option_doc'}); my $b_src=button($vars{'option_src'}); my $b_fmt=button($vars{'option_fmt'}); my $b_letter=button($vars{'option_letter'}); + my $b_sysint=button($vars{'option_sysint'}); + my $b_admin=button($vars{'option_w32_admin'}); my $sys_bin=$vars{'sys_bin'}; my $sys_man=$vars{'sys_man'}; my $sys_info=$vars{'sys_info'}; - my $t_sys_bin=($vars{'option_sysint'})? $vars{'sys_bin'}:''; - my $t_sys_man=($vars{'option_sysint'})? $vars{'sys_man'}:''; - my $t_sys_info=($vars{'option_sysint'})? $vars{'sys_info'}:''; + my $t_sys_bin=($vars{'option_path'})? $vars{'sys_bin'}:''; + my $t_sys_man=($vars{'option_path'})? $vars{'sys_man'}:''; + my $t_sys_info=($vars{'option_path'})? $vars{'sys_info'}:''; my %command=( 'self' => \&options_menu, @@ -713,7 +715,7 @@ EOF if (!$vars{'from_dvd'}) { if (unix()) { print <<"EOF"; - <L> create symlinks in standard directories: $b_sysint + <L> create symlinks in standard directories: $b_path binaries to: $t_sys_bin manpages to: $t_sys_man info to: $t_sys_info @@ -721,10 +723,17 @@ EOF ; } else { print <<"EOF"; - <L> do system integration: $b_sysint + <L> adjust registry entry for path: $b_path EOF ; } + if (win32()) { + print " <M> install menu items and shortcuts: $b_sysint\n"; + if (admin()) { + # if we are admin we allow normal user installation, too + print " <U> multi user installation: $b_admin\n"; + } + } } other_options qw(R Q diskspace); my $answer = prompt 'Enter command'; @@ -734,8 +743,8 @@ EOF my $home = getenv('HOME'); $home = getenv('USERPROFILE') if (win32()); $home ||= '~'; - toggle 'option_sysint'; - if ($vars{'option_sysint'}) { + toggle 'option_path'; + if ($vars{'option_path'}) { print "New value for binary directory [$sys_bin]: "; chomp($answer=<STDIN>); $vars{'sys_bin'} = "$answer" if (length $answer); @@ -764,11 +773,19 @@ EOF my $home = getenv('HOME'); $home = getenv('USERPROFILE') if (win32()); $home ||= '~'; - toggle 'option_sysint'; + toggle 'option_path'; return $command{'self'}; } } - if ("\u$answer" eq 'P') { + if ("\u$answer" eq 'M') { + toggle 'option_sysint'; + return $command{'self'}; + + } elsif ("\u$answer" eq 'U') { + toggle 'option_w32_admin'; + return $command{'self'}; + + } elsif ("\u$answer" eq 'P') { toggle 'option_letter'; return $command{'self'}; @@ -817,11 +834,13 @@ sub dvd_hd_toggle { sub main_menu { my $this_platform=platform_desc($vars{'this_platform'}); - my $b_sysint=button($vars{'option_sysint'}); + my $b_path=button($vars{'option_path'}); my $b_doc=button($vars{'option_doc'}); my $b_src=button($vars{'option_src'}); my $b_fmt=button($vars{'option_fmt'}); my $b_letter=button($vars{'option_letter'}); + my $b_sysint=button($vars{'option_sysint'}); + my $b_admin=button($vars{'option_w32_admin'}); my $warn_nobin; @@ -928,7 +947,11 @@ EOF if ($vars{'src_splitting_supported'}) { print " $b_src install macro/font source tree\n"; } - print " $b_sysint system integration\n"; + print " $b_path path adjustments\n"; + print " $b_sysint menu items and file associations\n"; + if (admin()) { + print " $b_admin multi user installation\n"; + } } if ($vars{'from_dvd'}) { diff --git a/Master/tlpkg/tlpsrc/00texlive.installation.tlpsrc b/Master/tlpkg/tlpsrc/00texlive.installation.tlpsrc index c635e4dea14..5cf57fa6a17 100644 --- a/Master/tlpkg/tlpsrc/00texlive.installation.tlpsrc +++ b/Master/tlpkg/tlpsrc/00texlive.installation.tlpsrc @@ -23,6 +23,8 @@ depend location:__MASTER__ depend opt_paper:a4 depend opt_create_formats:1 depend opt_system_integration:0 +depend opt_w32_admin:1 +depend opt_path:0 depend opt_sys_bin:/usr/local/bin depend opt_sys_info:/usr/local/info depend opt_sys_man:/usr/local/man |