summaryrefslogtreecommitdiff
path: root/Master/tlpkg/TeXLive/TLWinGoo.pm
diff options
context:
space:
mode:
authorSiep Kroonenberg <siepo@cybercomm.nl>2013-05-10 12:56:49 +0000
committerSiep Kroonenberg <siepo@cybercomm.nl>2013-05-10 12:56:49 +0000
commit5a2af5e099455faf50af26f6762ba119ad2ae3d0 (patch)
treed1931a9d105207564f16649e1d4508b61e8ccf1d /Master/tlpkg/TeXLive/TLWinGoo.pm
parent384f056ae2665f73aa1ce3529db4764cb7c3a077 (diff)
w32 uninstaller fix; UNC paths; tl_abs_path
git-svn-id: svn://tug.org/texlive/trunk@30367 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/tlpkg/TeXLive/TLWinGoo.pm')
-rw-r--r--Master/tlpkg/TeXLive/TLWinGoo.pm71
1 files changed, 47 insertions, 24 deletions
diff --git a/Master/tlpkg/TeXLive/TLWinGoo.pm b/Master/tlpkg/TeXLive/TLWinGoo.pm
index 36e71de0fab..a922fca9c16 100644
--- a/Master/tlpkg/TeXLive/TLWinGoo.pm
+++ b/Master/tlpkg/TeXLive/TLWinGoo.pm
@@ -1,6 +1,6 @@
# $Id$
# TeXLive::TLWinGoo.pm - Windows nastiness
-# Copyright 2008-2012 Siep Kroonenberg, Norbert Preining
+# Copyright 2008-2013 Siep Kroonenberg, Norbert Preining
# This file is licensed under the GNU General Public License version 2
# or any later version.
@@ -289,6 +289,7 @@ sub reg_country {
}
}
+
=pod
=back
@@ -1203,19 +1204,14 @@ the job.
=cut
sub create_uninstaller {
- my ($tdfw, $tdsvfw, $tdscfw) = @_;
+ my $td_fw = shift;
# TEXDIR, TEXMFSYSVAR, TEXMFSYSCONFIG
- $tdfw =~ s![\\/]$!!;
- my $td = $tdfw;
+ $td_fw =~ s![\\/]$!!;
+ my $td = $td_fw;
$td =~ s!/!\\!g;
- $tdsvfw =~ s![\\/]$!!;
- my $tdsv = $tdsvfw;
- $tdsv =~ s!/!\\!g;
-
- $tdscfw =~ s![\\/]$!!;
- my $tdsc = $tdscfw;
- $tdsc =~ s!/!\\!g;
+ my $tdmain = `$td\\bin\\win32\\kpsewhich -var-value=TEXMFMAIN`;
+ chomp $tdmain;
my $uninst_key = $Registry -> Open((admin() ? "LMachine" : "CUser") .
"/software/microsoft/windows/currentversion/",
@@ -1227,14 +1223,33 @@ sub create_uninstaller {
$k->{'/DisplayVersion'} = $::TeXLive::TLConfig::ReleaseYear;
$k->{'/URLInfoAbout'} = "http://www.tug.org/texlive";
- mkdirhier("$tdfw/tlpkg/installer"); # wasn't this done yet?
- if (open UNINST, ">$tdfw/tlpkg/installer/uninst.bat") {
+ mkdirhier("$td_fw/tlpkg/installer"); # wasn't this done yet?
+ if (open UNINST, ">$td_fw/tlpkg/installer/uninst.bat") {
print UNINST <<UNEND;
\@echo off
setlocal
path $td\\tlpkg\\tlperl\\bin;$td\\bin\\win32;%path%
set PERL5LIB=$td\\tlpkg\\tlperl\\lib
-perl.exe \"$td\\texmf\\scripts\\texlive\\uninstall-win32.pl\"
+rem Clean environment from other Perl variables
+set PERL5OPT=
+set PERLIO=
+set PERLIO_DEBUG=
+set PERLLIB=
+set PERL5DB=
+set PERL5DB_THREADED=
+set PERL5SHELL=
+set PERL_ALLOW_NON_IFS_LSP=
+set PERL_DEBUG_MSTATS=
+set PERL_DESTRUCT_LEVEL=
+set PERL_DL_NONLAZY=
+set PERL_ENCODING=
+set PERL_HASH_SEED=
+set PERL_HASH_SEED_DEBUG=
+set PERL_ROOT=
+set PERL_SIGNALS=
+set PERL_UNICODE=
+
+perl.exe \"$tdmain\\scripts\\texlive\\uninstall-win32.pl\"
if errorlevel 1 goto :eof
rem test for taskkill and try to stop exit tray menu
taskkill /? >nul 2>&1
@@ -1246,22 +1261,19 @@ UNEND
;
close UNINST;
} else {
- warn "Cannot open $tdfw/tlpkg/installer/uninst.bat for append";
+ warn "Cannot open $td_fw/tlpkg/installer/uninst.bat for append";
}
# We could simply delete everything under the root at one go,
# but this might be catastrophic if TL doesn't have its own root.
- if (open UNINST2, ">$tdfw/tlpkg/installer/uninst2.bat") {
+ if (open UNINST2, ">$td_fw/tlpkg/installer/uninst2.bat") {
print UNINST2 <<UNEND2;
rmdir /s /q \"$td\\bin\"
rmdir /s /q \"$td\\readme-html.dir\"
rmdir /s /q \"$td\\readme-txt.dir\"
if exist \"$td\\temp\" rmdir /s /q \"$td\\temp\"
-rmdir /s /q \"$td\\texmf\"
rmdir /s /q \"$td\\texmf-dist\"
rmdir /s /q \"$td\\tlpkg\"
-rmdir /s /q \"$tdsc\"
-rmdir /s /q \"$tdsv\"
del /q \"$td\\README.*\"
del /q \"$td\\LICENSE.*\"
if exist \"$td\\doc.html\" del /q \"$td\\doc.html\"
@@ -1272,17 +1284,28 @@ del /q \"$td\\install-tl*.*\"
del /q \"$td\\tl-tray-menu.exe\"
rem del /q \"$td\\texlive.profile\"
del /q \"$td\\release-texlive.txt\"
-set test=
-for \%\%f in (\"$td\\*.*\") do \@set test=nonempty
-if x\%test\%==x rd \"$td\"
+UNEND2
+;
+ for my $d ('TEXMFSYSVAR', 'TEXMFSYSCONFIG') {
+ my $kd = `$td\\bin\\win32\\kpsewhich -var-value=$d`;
+ chomp $kd;
+ print UNINST2 "rmdir /s /q \"", $kd, "\"\r\n";
+ }
+ if ($td !~ /^.:$/) {
+ print UNINST2 <<UNEND3;
+for \%\%f in (\"$td\\*\") do goto :done
+for /d \%\%f in (\"$td\\*\") do goto :done
+rd \"$td\"
+:done
\@echo Done uninstalling TeXLive.
\@pause
del \"%0\"
-UNEND2
+UNEND3
;
+ }
close UNINST2;
} else {
- warn "Cannot open $tdfw/tlpkg/installer/uninst2.bat for writing";
+ warn "Cannot open $td_fw/tlpkg/installer/uninst2.bat for writing";
}
}