#!/usr/bin/env perl # This file is public domain. my $Master; BEGIN { $^W = 1; $Master = `%COMSPEC% /c kpsewhich -var-value=SELFAUTOPARENT`; chomp($Master); unshift (@INC, "$Master/tlpkg"); } use TeXLive::TLWinGoo; use TeXLive::TLPDB; use TeXLive::TLPOBJ; use TeXLive::TLConfig; use TeXLive::TLUtils; sub help { print <new ("root" => $Master); die "Need admin permissions; please rerun from elevated command prompt\n" unless ((!$localtlpdb->option("w32_multi_user") or TeXLive::TLWinGoo::admin())); TeXLive::TLWinGoo::non_admin() if (TeXLive::TLWinGoo::admin() && !$localtlpdb->option("w32_multi_user")); if (!defined($localtlpdb)) { die("Cannot load the TLPDB from $Master\n"); } my $Masterbsl; ($Masterbsl = $Master) =~ s!/!\\!g; if ($do_lmode) { for my $pkg ($localtlpdb->list_packages) { # uninstall script: `&' before TeXLive TeXLive::TLUtils::do_postaction("remove", $localtlpdb->get_package($pkg), $localtlpdb->option("file_assocs"), $localtlpdb->option("desktop_integration"), $localtlpdb->option("desktop_integration"), 0); } my $menupath = &TeXLive::TLWinGoo::menu_path(); $menupath =~ s!/!\\!g; `rmdir /s /q "$menupath\\$TeXLive::TLConfig::WindowsMainMenuName" 2>nul`; # remove bindir from PATH settings TeXLive::TLUtils::w32_remove_from_path("$Master/bin/win32", $localtlpdb->option("w32_multi_user")); # unregister uninstaller TeXLive::TLWinGoo::unregister_uninstaller( $localtlpdb->option("w32_multi_user")); # for multi-user, adjust root texmf.cnf for xetex if ($localtlpdb->option("w32_multi_user")) { if (!(-f "$Master/texmf.cnf.orig")) { `copy /b $Masterbsl\\texmf.cnf $Masterbsl\\texmf.cnf.orig`; } if (open (TMF, ">> $Master/texmf.cnf")) { print TMF "\nFC_CACHEDIR=\$TEXMFVAR/fonts/cache\n"; close(TMF); } } if ($localtlpdb->option("w32_multi_user")) { `"$Master/bin/win32/tlaunch.exe" admin_inst`; } else { `"$Master/bin/win32/tlaunch.exe" user_inst`; } } else { `"$Master/bin/win32/tlaunch.exe" uninst`; TeXLive::TLWinGoo::create_uninstaller($Master); TeXLive::TLUtils::w32_add_to_path("$Master/bin/win32", $localtlpdb->option("w32_multi_user")); for my $pkg ($localtlpdb->list_packages) { # uninstall script: `&' before TeXLive TeXLive::TLUtils::do_postaction("install", $localtlpdb->get_package($pkg), $localtlpdb->option("file_assocs"), $localtlpdb->option("desktop_integration"), $localtlpdb->option("desktop_integration"), 0); } TeXLive::TLWinGoo::broadcast_env(); TeXLive::TLWinGoo::update_assocs(); # restore original root texmf.cnf if (-f "$Master/texmf.cnf.orig") { chdir $Master; unlink "texmf.cnf"; sleep 2; rename "texmf.cnf.orig", "texmf.cnf"; } if ((-f "$Master/texmf.cnf.orig") || !(-f "$Master/texmf.cnf")) { print "Failed to restore root $Master/texmf.cnf; do this manually."; } }