I&#39;m trying to figure out a way to prepare a portable installation of TL2008 and I&#39;m having some trouble with this. I know that TL2008 can be run live from DVD and it even comes with a batch launcher for that purpose, which is really welcome, but it&#39;s a whooping 2.5GB with kitchen sink included, so I'm looking for a slimmer solution.<br>
<br>Let me first explain what I&#39;m trying to achieve and then I&#39;ll describe some of the issues I encountered in my poking around so far.<br><br>I want to find a way to turn TL into fully functional (i.e. with working tlmgr, etc.) portable distribution that (optionally) integrates with PortableApps. By finding a way I mean a procedure that could be easily followed by a boarder range of users (read: all those windoze illiterates out there) so it shouldn&#39;t be too arcane. Preferably, this procedure should allow for a full or at least partial automation of the process, so it can be canned for regular users.<br>
<br>I have a fairly good idea how this could be done but there seem to be some limitations in the current installer and I don&#39;t know how to get around them.<br><br>The first problem is that there seems to be no way to make administrative installation on Windows (i.e. without any system integration, like shortcuts or uninstaller). Is that right?<br>
<br>Next, upon installation, TL breaks any other TeX installation on the system by removing it from the path. Although this is documented (<a href="http://www.tug.org/texlive/windows.html">http://www.tug.org/texlive/windows.html</a>) I still consider it a bug to interfere with other software on the system without explicit user consent. It&#39;s essentially as bad as changing file associations without asking (not that uncommon on Windows, I&#39;m afraid). Furthermore, during uninstallation the original path is not restored and user has to fix it manually.<br>
<br>My attempt to run tl-portable.bat script (copied from live .iso) from the root of installed TL failed because some installer files were missing (the installation itself was functional). I could probably track down the missing files but I will leave it for later (if anybody knows which files are missing, it will save me some forensic work). Bypassing&nbsp;<br>
<br>&quot;%TEXDIR%tlpkg\installer\perl&quot; &quot;%TEXDIR%install-tl&quot; --portable<br><br>in tl-portable.bat seemed to do the trick for now. As far as I can tell from skimming through the installer source, calling it with --portable switch has no effect unless there are some texmf trees missing, in which case they are generated. In fact, only TEXMFSYSVAR is tested for existence, if I read it correctly (note: I don&#39;t know perl). This test could be moved into the launcher script itself to make it run faster (more on that below).<br>
<br>tl-portable.bat could be useful not only for launching TL shell but also other tools, e.g. text editor or compilation script. Unfortunately, in its current form this not possible. I would suggest the following modification near the end of tl-portable.bat:<br>
<br>:doit<br>path %TEXDIR%bin\win32;%path%<br>if [%1]==[] goto :tlshell<br>%*<br>exit /b %errorlevel%<br><br>:tlshell<br>set PROMPT=TL $P$G<br>%COMSPEC% /k<br><br>Without any arguments tl-portable.bat will work almost exactly as before (the only difference is that &#39;exit&#39; after &#39;%COMSPEC% /k&#39; has been removed - there is no need for it). With arguments, the supplied command line will be executed instead of starting cmd shell. For example:<br>
<br>tl-portable.bat pdflatex &lt;file&gt;<br><br>can be used for portable compilation with pdflatex (or in configuration of a text editor). For that purpose it would be also important to avoid calling Perl installer if not necessary as mentioned above and also to preserve the current working directory from the calling process. Currently tl-portable.bat (and install-tl.bat as well) starts like this:<br>
<br>rem TeX Live Root; ends with backslash<br>rem This should also work with UNC names<br>set TEXDIR=%~dp0<br>set tldrive=%~d0<br><br>%tldrive%<br>cd %TEXDIR%<br><br>Despite what the comment says, this code will fail with UNC paths. This is because &#39;%~d0&#39; will expand to &#39;\\&#39; and furthermore cmd.exe does not allow UNC path to be used as a current directory (it will fallback on %WINDIR% if launched from network drive). This creates some problems. Under restricted account %WINDIR% is not writeable and launcher will behave as if run from DVD (i.e. it will use %USERPROFILE%). For admin user TL will generate files in the system folder.<br>
<br>I don&#39;t see anything in tl-portable.bat or install-tl.bat that would require changing the current directory (except for perhaps the Perl installer - I couldn&#39;t deduce that from the source). Thus, it should be OK to either remove that part all together or change it only for the Perl installer. I tested both scripts without changing cw and launching them from other location than TL root. In both cases all appeared to function properly (I could compile sample files without problems). So, it would seem that changing the current directory is not required, but I cannot say that with certainty based on my limited testing.<br>
<br>To play it save, below I suggest a modification with pushd/popd commands combo. This will temporarily map network location onto a drive letter if necessary. The possible drawback is that if for some reason the script would terminate before popd is reached, the drive will have to be unmapped manually.<br>
<br>if exist %TEXMFSYSVAR%\ goto doit<br>pushd &quot;%TEXDIR%&quot;<br>set PERL5LIB=%TEXDIR%tlpkg\installer\perllib<br>&quot;%TEXDIR%tlpkg\installer\perl&quot; &quot;%TEXDIR%install-tl&quot; --portable<br>popd<br>if not errorlevel 1 goto doit<br>
echo Initialization of TeXLive failed!<br>pause<br>exit /b %errorlevel%<br><br>Note that this also incorporates the TEXMFSYSVAR test to speed up the launcher. With this change the initial part of the script can be removed (except for &#39;set TEXDIR=%~dp0&#39; line). Another difference with respect to the current script will be that the welcome banner will not be displayed anymore (this is done by the perl script but it can be easily fixed, e.g. by putting welcome message in an external file and calling &#39;type banner.txt&#39;).<br>
<br><br>To summarize this already long post: I think I can manage to resolve most of the issues on my own; the only thing I don&#39;t know is how to tell TL installer to skip system integration. I could probably write a script that runs installer, copy files and uninstalls TL but: (a) I don&#39;t know if TL will work portably without any side effects in this manner and (b) it would be a real kludge and I would have to watch for things like messing up MiKTeX, so I&#39;m not very keen on that.&nbsp;<br>
<br>I hope someone can help me to find some solution. I'm happy to contribute any changes upstream if desired and I can offer my help in batch scripting and automation on Windows. Unfortunately my Perl knowledge is very limited, so that rules out any but trivial changes to the installer on my part.<br>
<br>Cheers,<br><br>Tomek<br><br><br>