summaryrefslogtreecommitdiff
path: root/Master/tlpkg/doc/install-mini
blob: 564e4b0c894f9247eb8fdf4108eca5f23ba05891 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
#!/usr/bin/env perl

# copy this file and install-mini.bat to the same directory
# as texmf, texmf-dist etc.

# sample mini-installer to give Windows systems access to an
# existing TeXLive installation

# it assumes a standard directory layout, which avoids hard-coded paths.

$^W = 1;

use TeXLive::TLUtils qw(mkdirhier conv_to_win_path);
#use Cwd 'abs_path';
use TeXLive::TLWinGoo qw(non_admin add_texbindir_to_path setenv_reg
  init_unshortbat add_desktop_shortcut add_menu_shortcut
  register_extension register_file_type
  update_assocs broadcast_env
  create_uninstaller);
use strict;

my $texdir=$0;
$texdir=~s!\\!/!g;
$texdir=~s!(.*)/.*$!$1!;

# private macros
#my $private_root = $ENV{'USERPROFILE'}.'/texmf';

# private runtime-generated files
$::texlive_release = '2008';
my $texdirw = $ENV{'USERPROFILE'}.'/.texlive'.$::texlive_release;
$texdirw=~s!\\!/!g;
my $private_var = $texdirw.'/texmf-var';
my $private_var_bsl = $private_var;
$private_var_bsl =~ s!/!\\!g;

# make only per-user modifications
non_admin();

# general

add_texbindir_to_path($texdir.'/bin/win32');
broadcast_env();

my $mainmenu = "TeX Live 2008";
my $texbindir_bsl = $texdir.'/bin/win32';
$texbindir_bsl =~ s!/!\\!g;

mkdirhier("$texdirw/tlpkg/installer");
create_uninstaller($texdir, $texdirw, $private_var, $texdirw.'/texmf-config');
init_unshortbat($texdirw);

# if the path can't be fixed globally add command prompt
# with texbindir prepended to path

if (uc(TeXLive::TLWinGoo::win_which_dir('tex.exe')) ne
      uc($texdir.'/bin/win32') or
    uc(TeXLive::TLWinGoo::win_which_dir('pdftex.exe')) ne
      uc($texdir.'/bin/win32') or
    uc(TeXLive::TLWinGoo::win_which_dir('luatex.exe')) ne
      uc($texdir.'/bin/win32')) {
  add_menu_shortcut(
    $mainmenu,
    'TeX Live Prompt',
    '',
    $ENV{'COMSPEC'},
   "/k \"path $texbindir_bsl;%path%\"",
   '',
  );
}

# texlive manual

add_menu_shortcut(
  $mainmenu,
  'TeX Live Manual (en)',
  '', # default pdf icon
  $texdir.'/texmf-doc/doc/english/texlive-en/live.pdf',
  '',
  '',
);

# texdoctk documentation browser

if (-e $texdir.'/bin/win32/texdoctk.bat') {
  add_menu_shortcut(
    $mainmenu,
    'TeXdoc GUI',
    '', # icon
    $texdir.'/bin/win32/texdoctk.bat',
    '', # arguments
    'batgui', # any non-null value to hide command-prompt
    )
}

# psview

add_desktop_shortcut(
  $texdirw,
  'PS_View',
  $texdir.'/tlpkg/tlpsv/psv.exe', # icon, not prog!
  $texdir.'/bin/win32/psv.bat',
  '', # no args
  'batgui', # any non-null value to hide command-prompt
);
add_menu_shortcut(
  $mainmenu,
  'PS_View',
  $texdir.'/tlpkg/tlpsv/psv.exe', # icon, not prog!
  $texdir.'/bin/win32/psv.bat',
  '', # no args
  'batgui', # any non-null value to hide command-prompt
);
register_extension(".ps", "PostScript");
register_extension(".eps", "PostScript");
register_file_type("PostScript",
  '"'.$texdir.'/tlpkg/tlpsv/gswxlua.exe" -g '.
  '"'.$texdir.'/tlpkg/tlgs/bin/gsdll32.dll" -l '.
  '"'.$texdir.'/tlpkg/tlpsv/psv.wx.lua" -p '.
  '"'.$texdir.'/tlpkg/tlpsv/psv_view.ps" -sINPUT="%1"');
update_assocs();

# xetex

if (-e $texdir.'/bin/win32/xetex.exe') {
  my $texmfcnf =  $private_var.'/web2c;'.$texdir.'/texmf/web2c';
  setenv_reg('TEXMFCNF', $texmfcnf);
  broadcast_env();
  mkdirhier($private_var."/fonts/cache");
  system("xcopy", "/e", "/i", "/q", "/y", "\"$texbindir_bsl\\conf\"",
      "\"$private_var_bsl\\fonts\\conf\"");
  if (open(FONTSCONF, "<$texdir/bin/win32/conf/fonts.conf")) {
    my @lines = <FONTSCONF>;
    close(FONTSCONF);
    if (open(FONTSCONF, ">$private_var/fonts/conf/fonts.conf")) {
      my $winfontdir;
      $winfontdir = $ENV{'SystemRoot'}.'/fonts';
      $winfontdir =~ s!\\!/!g;
      foreach (@lines) {
        $_ =~ s!c:/Program Files/texlive/2008!$texdir!;
        $_ =~ s!c:/windows/fonts!$winfontdir!;
        print FONTSCONF;
      }
      close(FONTSCONF);
    } else {
      warn("Cannot open $private_var/fonts/conf/fonts.conf for writing\n");
    }
  } else {
    warn ("Cannot open $texdir/bin/win32/conf/fonts.conf\n");
  }
  $ENV{'TEXMFCNF'} = $texmfcnf;
  $ENV{'PATH'} = $texbindir_bsl.';'.$ENV{'PATH'};
  system("\"$texbindir_bsl\\fc-cache.exe\"", "-v", "-r");
}