summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNorbert Preining <preining@logic.at>2009-03-13 16:52:03 +0000
committerNorbert Preining <preining@logic.at>2009-03-13 16:52:03 +0000
commit46bb370b725244554de371c87d1812bd0a47e3f7 (patch)
treea56b445c45c1efec3dfc9b9e0d76c79465befddd
parentfe247ba9d4d40b22d2b3a37a41fc327eea3ef86f (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-xMaster/install-tl22
-rw-r--r--Master/tlpkg/TeXLive/TLPDB.pm10
-rwxr-xr-xMaster/tlpkg/installer/install-menu-text.pl47
-rw-r--r--Master/tlpkg/tlpsrc/00texlive.installation.tlpsrc2
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