summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/scripts/tlaunch
diff options
context:
space:
mode:
authorSiep Kroonenberg <siepo@cybercomm.nl>2017-02-01 14:18:04 +0000
committerSiep Kroonenberg <siepo@cybercomm.nl>2017-02-01 14:18:04 +0000
commit6046f13b1143237c457a510d393c54079ddd7986 (patch)
tree8eb9462f28f2f22869358ef9eb8b9892ad6140d6 /Master/texmf-dist/scripts/tlaunch
parenta40e4295260793e44bbfed4be68050c38e197f3e (diff)
Upload of tlaunch, TeX Live Launcher
git-svn-id: svn://tug.org/texlive/trunk@43114 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/scripts/tlaunch')
-rw-r--r--Master/texmf-dist/scripts/tlaunch/tlaunchmode.pl132
1 files changed, 132 insertions, 0 deletions
diff --git a/Master/texmf-dist/scripts/tlaunch/tlaunchmode.pl b/Master/texmf-dist/scripts/tlaunch/tlaunchmode.pl
new file mode 100644
index 00000000000..e589ffbcaff
--- /dev/null
+++ b/Master/texmf-dist/scripts/tlaunch/tlaunchmode.pl
@@ -0,0 +1,132 @@
+#!/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 <<ENDHELP;
+
+ tlaunchmode on
+ tlaunchmode off
+
+tlaunchmode switches a TeX Live installation between tlaunch mode
+and classic mode.
+
+tlaunchmode means:
+- a launcher with menus and buttons instead of a submenu
+- per-user configuration at first startup.
+ This configuration can be undone from within the launcher
+ and from the `Programs and Featurers' Control Panel item.
+
+See the manual for additional details and customization options.
+ENDHELP
+ exit;
+}
+my $do_lmode = shift;
+if (defined $do_lmode) {
+ if (lc($do_lmode) eq "on") { $do_lmode = 1; }
+ elsif (lc($do_lmode) eq "off") { $do_lmode = 0; }
+ else {help; }
+} else {
+ help;
+}
+
+die "Launchermode requires Vista or later\n"
+ unless TeXLive::TLWinGoo::is_vista();
+
+
+
+my $localtlpdb = TeXLive::TLPDB->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.";
+ }
+}