diff options
-rwxr-xr-x | Master/bin/win32/tlaunch.exe | bin | 0 -> 114176 bytes | |||
-rwxr-xr-x | Master/bin/win32/tlaunchmode.exe | bin | 0 -> 1536 bytes | |||
-rw-r--r-- | Master/source/tlaunch-0.5.1-src.zip | bin | 0 -> 67224 bytes | |||
-rw-r--r-- | Master/source/tlaunch.README | 21 | ||||
-rw-r--r-- | Master/texmf-dist/doc/support/tlaunch/COPYING | 674 | ||||
-rw-r--r-- | Master/texmf-dist/doc/support/tlaunch/Changes | 25 | ||||
-rw-r--r-- | Master/texmf-dist/doc/support/tlaunch/README | 22 | ||||
-rw-r--r-- | Master/texmf-dist/doc/support/tlaunch/figures/custom_ed.png | bin | 0 -> 56281 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/support/tlaunch/figures/tlaunch_rug.png | bin | 0 -> 11781 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/support/tlaunch/figures/tlaunch_window.png | bin | 0 -> 9378 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/support/tlaunch/rug.zip | bin | 0 -> 10650 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/support/tlaunch/tlaunch.pdf | bin | 0 -> 367271 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/support/tlaunch/tlaunch.tex | 1066 | ||||
-rw-r--r-- | Master/texmf-dist/scripts/tlaunch/tlaunchmode.pl | 132 | ||||
-rw-r--r-- | Master/texmf-dist/web2c/tlaunch.ini | 115 |
15 files changed, 2055 insertions, 0 deletions
diff --git a/Master/bin/win32/tlaunch.exe b/Master/bin/win32/tlaunch.exe Binary files differnew file mode 100755 index 00000000000..1aa7910b2d3 --- /dev/null +++ b/Master/bin/win32/tlaunch.exe diff --git a/Master/bin/win32/tlaunchmode.exe b/Master/bin/win32/tlaunchmode.exe Binary files differnew file mode 100755 index 00000000000..5777d90a17a --- /dev/null +++ b/Master/bin/win32/tlaunchmode.exe diff --git a/Master/source/tlaunch-0.5.1-src.zip b/Master/source/tlaunch-0.5.1-src.zip Binary files differnew file mode 100644 index 00000000000..ebaf11f700f --- /dev/null +++ b/Master/source/tlaunch-0.5.1-src.zip diff --git a/Master/source/tlaunch.README b/Master/source/tlaunch.README new file mode 100644 index 00000000000..43ae90c582b --- /dev/null +++ b/Master/source/tlaunch.README @@ -0,0 +1,21 @@ +I cross-compiled tlaunch on successive versions of Ubuntu Linux, +using the mingw packages gcc-mingw-w64-base, gcc-mingw-w64-i686, +g++-mingw-w64-i686, mingw-w64-common, mingw-w64-i686-dev and +binutils-mingw-w64-i686 and the included Makefile and cross-make +shell script. + +Occasionally I needed to run the gdb debugger. Although Ubuntu does +have a cross-debugger, I opted for native compilation and native +debugging, using mingw gcc and gdb from the Strawberry Perl project +at http://strawberryperl.com/package/kmx/ . I compiled with the +batchfile makewin.cmd, which does not use make and does not bother +with dependency checking. + +For the shell script cross-make, check that the CROSS environment +variable is right for your system. + +For the batchfile makewin.cmd, check that the mingw environment +variable points to the root of your mingw installation. + +Siep Kroonenberg, siepo at cybercomm dot nl +Groningen, January 2017 diff --git a/Master/texmf-dist/doc/support/tlaunch/COPYING b/Master/texmf-dist/doc/support/tlaunch/COPYING new file mode 100644 index 00000000000..94a9ed024d3 --- /dev/null +++ b/Master/texmf-dist/doc/support/tlaunch/COPYING @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/> + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + <one line to give the program's name and a brief idea of what it does.> + Copyright (C) <year> <name of author> + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + <program> Copyright (C) <year> <name of author> + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +<http://www.gnu.org/licenses/>. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +<http://www.gnu.org/philosophy/why-not-lgpl.html>. diff --git a/Master/texmf-dist/doc/support/tlaunch/Changes b/Master/texmf-dist/doc/support/tlaunch/Changes new file mode 100644 index 00000000000..97e510793ab --- /dev/null +++ b/Master/texmf-dist/doc/support/tlaunch/Changes @@ -0,0 +1,25 @@ +2017-02-01 Siep Kroonenberg <siepo@cybercomm.nl> Release 0.5.1 + + * Tlaunch uninst options are now called uninst and uninst_all + rather than uninst_keep_tldir and uninst. + + * Added -v/--version option and help output + + * Simpler root texmf.cnf in RUG example files + + * Reorganized packaging + +2017-01-27 Siep Kroonenberg <siepo@cybercomm.nl> Release 0.5.0 + + * Name- and terminology changes: + installing => configuring; uninstalling => forgetting. + * Forgetter, formerly uninstaller, can now run silently. + * Changes in appearance + * Added rudimentary real install- and uninstall modes + * tlaunchmode.pl Perl script for switching between launcher- and + classic mode + * Added a manual + +2016-02-27 Siep Kroonenberg <siepo@cybercomm.nl> Release 0.4.0 + + Initial public release diff --git a/Master/texmf-dist/doc/support/tlaunch/README b/Master/texmf-dist/doc/support/tlaunch/README new file mode 100644 index 00000000000..05125cec466 --- /dev/null +++ b/Master/texmf-dist/doc/support/tlaunch/README @@ -0,0 +1,22 @@ +The TeX Live Launcher is an easy way to give Windows users access to +a TeX Live installation on a network as if it were a local +installation. + +Features: + +- On first startup, the launcher does the user configuration which + would otherwise have been done during a local installation. + +- the menu items and buttons within the launcher replace the several + Start menu items normally created during a local installation. + +- Easy customization with an ini file, e.g. incorporating additional + software + +See the manual for placement of tlaunch.exe and tlaunch.ini, and for +customizing the ini file. + +For trying this out on an existing local installation, a script +tlaunchmode is included which can convert a classic installation +into a launcher-based one and back. The manual has a section on this +script which also explains how to install it. diff --git a/Master/texmf-dist/doc/support/tlaunch/figures/custom_ed.png b/Master/texmf-dist/doc/support/tlaunch/figures/custom_ed.png Binary files differnew file mode 100644 index 00000000000..d0d1c6a5710 --- /dev/null +++ b/Master/texmf-dist/doc/support/tlaunch/figures/custom_ed.png diff --git a/Master/texmf-dist/doc/support/tlaunch/figures/tlaunch_rug.png b/Master/texmf-dist/doc/support/tlaunch/figures/tlaunch_rug.png Binary files differnew file mode 100644 index 00000000000..86390b8e9ba --- /dev/null +++ b/Master/texmf-dist/doc/support/tlaunch/figures/tlaunch_rug.png diff --git a/Master/texmf-dist/doc/support/tlaunch/figures/tlaunch_window.png b/Master/texmf-dist/doc/support/tlaunch/figures/tlaunch_window.png Binary files differnew file mode 100644 index 00000000000..4570f8efd34 --- /dev/null +++ b/Master/texmf-dist/doc/support/tlaunch/figures/tlaunch_window.png diff --git a/Master/texmf-dist/doc/support/tlaunch/rug.zip b/Master/texmf-dist/doc/support/tlaunch/rug.zip Binary files differnew file mode 100644 index 00000000000..8e0b16d33d5 --- /dev/null +++ b/Master/texmf-dist/doc/support/tlaunch/rug.zip diff --git a/Master/texmf-dist/doc/support/tlaunch/tlaunch.pdf b/Master/texmf-dist/doc/support/tlaunch/tlaunch.pdf Binary files differnew file mode 100644 index 00000000000..53d5631b966 --- /dev/null +++ b/Master/texmf-dist/doc/support/tlaunch/tlaunch.pdf diff --git a/Master/texmf-dist/doc/support/tlaunch/tlaunch.tex b/Master/texmf-dist/doc/support/tlaunch/tlaunch.tex new file mode 100644 index 00000000000..a984e57a2eb --- /dev/null +++ b/Master/texmf-dist/doc/support/tlaunch/tlaunch.tex @@ -0,0 +1,1066 @@ +\documentclass[11pt,a4paper,oneside]{report} +% fonts +\usepackage{tgpagella} +\let\slshape\itshape +\usepackage[TS1,T1]{fontenc} +\usepackage{array,textcomp,graphicx} +\setcounter{secnumdepth}{2} +\setcounter{tocdepth}{2} +\usepackage[% + raiselinks=false,% + colorlinks=true,% + bookmarksnumbered=true,% + bookmarksopen=true,% + bookmarksopenlevel=1% +]{hyperref} +\pagestyle{headings} + +\newcolumntype{P}[1]{% + >{\raggedright\hspace{0pt}\arraybackslash}p{#1}} +\def\TL{\TeX~Live} +\def\fta{filetype association} +\def\FTA{Filetype association} +% if bold small caps available: +\def\mysc#1{{\rmfamily\textsc{#1}}} +% if bold small caps unavailable: +%\def\mysc#1{\textsc{\textmd{#1}}} +\def\GUI{\mysc{gui}} +\def\RUG{\mysc{rug}} +\def\UWP{\mysc{uwp}} + +\def\TNC{TeXnicCenter} +\def\TS{TeXstudio} + +\def\XeTeX{Xe\TeX} +\def\dbr{\discretionary{}{}{}} +\let\bsl\textbackslash +\def\bslb{\bsl\discretionary{}{}{}} +%\def\hkcu{HKEY\_\dbr CURRENT\_\dbr USER} +\def\hkcu{\textsc{hkcu}} +%\def\hklm{HKEY\_\dbr LOCAL\_\dbr MACHINE} +\def\hklm{\textsc{hklm}} +%\def\hkcr{HKEY\_\dbr CLASSES\_\dbr ROOT} +\def\hkcr{\textsc{hkcr}} +\newcommand\vspc{\vspace{6pt}} +\newenvironment{ttdesc}{% + \def\descriptionlabel##1{\hspace\labelsep\ttfamily\selectfont ##1}% + \description}{\enddescription} +\hyphenation{head-ache} + +\title{TLaunch: a launcher for a \TL{} system} +\author{Siep Kroonenberg} +\begin{document} +\maketitle +\clearpage +\thispagestyle{empty} +\null\vfill +{\small\parindent=0pt +This manual is for tlaunch, the \TL{} Launcher, version 0.5.1. + +Copyright \textcopyright{} 2017 Siep Kroonenberg. + +Copying and distribution of this file, with or without modification, +are permitted in any medium without royalty provided the copyright +notice and this notice are preserved. This file is offered as-is, +without any warranty.\par} +\clearpage +\thispagestyle{empty} +% let physical pages match logical ones +\setcounter{page}{3} +\tableofcontents + +\chapter{The launcher} +\label{chap:launcher} + +\begin{figure} + \centering + \includegraphics[width=.7\linewidth]{figures/tlaunch_window} + \caption{A possible Launcher window} + \label{fig:launcher} +\end{figure} + +\section*{About this document} + +This document is about the \TL{} launcher. The first chapter +describes the launcher in general. + +The second chapter describes the launcher-based installation at the +\RUG, or Rijksuniversiteit Groningen, as an example of what can be +done with a launcher-based installation. + +Finally, since many \TeX{} developers spend as little time as they +can help in a Windows environment, I added an appendix with Windows +background information. + +\section{Introduction} +\label{sec:intro} + +I designed the \TL{} launcher for the Windows \TL{} installation on +our university network, which contains \TL{} itself plus several +other \TeX-related applications. The launcher provides a single +access point to all this software, and to related local and online +resources. + +The launcher also takes care of configuration: at first run, \TL{} +is added to the searchpath, and relevant filetype associations are +set up. + +This means that the launcher rather than the classic \TL{} installer +takes care of all Windows-specific configuration. Which is a good +thing if the \TL{} directory tree is on a shared network drive, or +if a \TL{} installation has to be copied to many workstations. + +Filetypes, menus and buttons and pre- and post configuration scripts +are defined in a standard Windows ini file. The format of this file +is described in section \ref{sec:config} of this chapter. The +supplied ini file provides something more or less equivalent to a +classic Windows \TL{} installation. + +Although at the moment the launcher contains no support for +localization, most of the user interface strings are defined in the +ini file and can be replaced with strings in other languages. + +\section{Modes} +\label{sec:modes} + +\subsection{Normal mode} +\label{sec:normal} + +In a normal run, the launcher displays a window with a menu or a +series of buttons or both, see figure \ref{fig:launcher}. For +anything launched via these controls, \TL{} is prepended to the +process searchpath irrespective of the system- or user +searchpath; see Appendix \ref{sec:env} on Windows searchpath +handling. + +\subsection{Initializing} +\label{sec:init} + +On first run, tlaunch creates file associations and prepends \TL{} to +the user searchpath, see appendix~\ref{sec:env}. Such configuration +allows users to start up their \LaTeX{} editor by double-clicking a +\LaTeX{} file in their file manager, bypassing the launcher +altogether. + +On first run, the launcher also creates a renamed copy of itself and +a renamed modified copy of the configuration file to a directory +inside the user's profile. This pair of copies serves as +\emph{forgetter}, see below. tlaunch registers this forgetter as an +uninstaller under Windows. + +\subsection{Forgetting} +\label{sec:forget} + +Since a network- or multi-user \TL{} installation can be uninstalled +by others, it is desirable that the configuration done on first run +can be reversed without the presence of the original \TL{}. The +forgetter takes care of this. + +The launcher detects from its location whether it should run normally +or as forgetter. + +It is also possible to undo configuration from within a normal run +if the ini file defines a button- or menu control for it. + +\section{Using scripts} +\label{sec:scripts} + +External scripts may run on demand, as the action associated with a +button or a menu control; see section \ref{sec:utscripts}. Scripts +may also run automatically, as supplemental initialization or +cleanup; see the \texttt{pre\_config}, \texttt{post\_config} and +\texttt{pre\_forget} variables in table \ref{tab:strings}. Examples +uses: +\begin{itemize} +\item Forgetting a previous release of \TL{} before configuring the + current one. This only makes sense for a centrally-managed \TeX{} + installation, where it is known what \TeX{} installation came + before. + \item Giving \TeX works some spelling dictionaries + \item Writing configuration data for non-\TL{} components + \item Generating or updating the \XeTeX{} font cache, assuming + that the font cache directory is user-writable + \item Adjusting \XeTeX{} font configuration, see Section + \ref{sec:xecache} +\end{itemize} + +\section{The ini file} +\label{sec:config} + +The ini file defines the menu items and buttons of the graphical +interface. These controls can start up \GUI{} programs or run +utility scripts, or run some predefined functions. The ini file also +defines filetype associations, and may define scripts for doing +additional configuration and cleanup. + +\subsection{Location} +\label{sec:loc} + +One option is to place both the binary and the ini file in the +root of the \TL{} installation. Another is to place the binary in +\TL{} binary directory, \texttt{\emph{tlroot}/bin/win32}, and the +ini file where \texttt{kpsewhich} can find it, \emph{e.g.} in +\texttt{\emph{tlroot}/texmf-config/web2c}. + +The binary and the ini file should have the same first name. + +\subsection{Encoding} +\label{sec:enc} + +The launcher tries to guess the encoding used, and accepts +ASCII, UTF-8 and Windows' UTF-16, with or without BOM. If all else +fails, it tries ANSI with the system default code page. + +\subsection{Syntax} +\label{sec:synt} + +The ini file is a regular Windows ini file with sections, +definitions and comment lines. +\begin{itemize} +\item A section starts with a line containing the section name + enclosed in square brackets `\texttt{[}' and `\texttt{]}'. It ends + at the start of the next section or at the end of the file. +\item A definition line consists of a line + \texttt{\emph{key}=\emph{value}}. +\item A comment line starts with `\texttt{;}'. +\end{itemize} + +The ini file is processed in one go, which means that everything +must be defined before it is used. The ordering of the list below of +possible sections satisfies this requirement. + +However, it is not necessary that everything that is referred to +actually exists; if a menu- or button control refers to a +non-existent file, the control is quietly left out, and if the +\texttt{COMMAND} of a filetype refers to a non-existent file the +filetype registry key is created but remains empty. + +The ini file can contain the following sections: + +\subsection{The Strings section} +\label{sec:strings} + +\begin{table}[tb] + \small\centering +\extrarowheight3pt\sffamily\noindent +\begin{tabular}{|>{\ttfamily}llP{2.3in}|} + \hline + & DEFAULT & MEANING \\ + tlroot & predefined & root of the \TL{} installation \\ + version & predefined & release year \\ + tlperl & predefined & path of the built-in Perl binary \\ + tlwperl & predefined & same for the \GUI{} binary \\ + java & predefined & Java binary, if found \\ + tlconfig & required & directory for the launcher's user data, see \emph{e.g.} + sections \ref{sec:strings} and Appendix \ref{sec:known_configs} \\ + tlname & TeX Live \%version\% & used for \emph{e.g.} window title and + uninstaller `DisplayName' \\ + customed\_progid & \texttt{TL.customed} & Filetype + for external, user-selected editor, see section \ref{sec:fta} \\ + pre\_config & empty & optional program or script to be run before + first-time initialization \\ + post\_config & empty & optional program or script to be run after + first-time initialization \\ + pre\_forget & empty & optional program or script to be run before + undoing initialization \\ + announce & empty & optional text to display \\[3pt] + \hline +\end{tabular} \\[3pt] +Note. All process environment variables, \emph{e.g.} +\texttt{\%appdata\%}, are accessible while the +launcher parses the ini file. Variable names are case-insensitive. + +\caption{Strings with a special meaning in the ini file} +\label{tab:strings} +\end{table} + +In this section arbitrary strings can be defined to be used later +during parsing. The names of the strings are case-insensitive, their +values are not. Various strings have a special meaning, see Table +\ref{tab:strings}. Their values may be predefined, \emph{i.e.} they +are set by the launcher before processing the ini file, and should +not be tampered with; they may be required, or they are allowed to +stay empty. + +At least \texttt{TLCONFIG} should be defined in the ini file. This +is the directory for launcher user files such as the + forgetter. A few suggestions: + \begin{itemize} + \item \texttt{\%UserProfile\%\bsl.texlive\%version\%\bslb tlaunch}, + \emph{i.e.} under the common root of \texttt{\%TEXMFVAR\%} and + \texttt{\%TEXMFCONFIG\%} + \item \texttt{\%appdata\%\bslb tlaunch\bslb\%version\%}; see Appendix + \ref{sec:known_configs} + \item or maybe \texttt{\%localappdata\%\bslb tlaunch\bslb\%version\%} if + \TL{} is installed on the local system + \end{itemize} + +\subsection{Sections for filetype associations (FTAs)} +\label{sec:fta} + +In Windows, an extension is associated with a filetype and a +filetype is associated with a program. An extension can also have +alternate filetypes associated with it, which may show up if you +right-click a file and select `Open with\textellipsis'. More on +filetypes in appendix \ref{sec:wftas}. + +A filetype section has as name the string `\texttt{FT:}' followed by +the filetype name. An example of a filetype section: + +\begin{verbatim} +[FT:TL.TeXworks.edit.%VERSION%] +COMMAND="%tlroot%\bin\win32\TeXworks.exe" +;SHELL_CMD="%tlroot%\bin\win32\TeXworks.exe" "%1" +;ICON="%tlroot%\bin\win32\TeXworks.exe,0" +;NAME=TeXworks +EXTENSIONS=.tex .cls .sty +;PRIMARY=1 +;PATH_PREFIX=0 +\end{verbatim} + +The commented lines are optional and represent default values. + +\begin{ttdesc} +\item [COMMAND] is the command to start the program. +\item [SHELL\_CMD] is the command to open a file. The default is + \texttt{COMMAND} with `\texttt{~"\%1"}' appended. +\item[ICON] is the icon to be used in GUI file managers. The + default is \texttt{COMMAND} with `\texttt{,0}' appended, without a + space. If there is no such icon then a fall-back icon will be + used; see the right-most icon in Figure \ref{fig:launcher}. +\item[NAME] is only used for \LaTeX{} editors, in the + editor-selection window, see section \ref{sec:edsel}. If not + specified, it will be derived from the program filename. +\item[EXTENSIONS] is the list of extensions that should have the + filetype as primary or secondary association. +\item[PRIMARY] is default 1. If set to 0, then the program only + shows up in the Open with... dialog. Mainly of interest for the + bitmap2eps utility. See appendix \ref{sec:wftas} on primary and + secondary filetypes. +\item[PATH\_PREFIX] is default 0. If set to 1, then Windows will + prepend \TL{} to the program's searchpath. The launcher will only + do this if \texttt{COMMAND} is a bare or quoted filename, without + options or parameters; see Appendix \ref{sec:appreg}. +\end{ttdesc} + +\subsection{Sections for utility scripts} +\label{sec:utscripts} + +A batchfile or command-line program can be declared in a +utility-script section. If a button or menu item invokes such a +script, standard output is intercepted and displayed in a dialog box +when the script has completed. Standard error is also captured, but +shows up only in the log file \texttt{\%TEMP\%\bslb TeXLive\_\dbr + Launcher.\dbr log}. A splash text is displayed while the script is +running. The default value for the splash text is `Working...'. An +example: +\begin{verbatim} +[SC:XeTeX-fontcache] +command=fc-cache -v +splash=Creating or updating XeTeX font cache +\end{verbatim} +This item is included in the default ini file, although it may not +work out of the box on a multi-user installation. Section +\ref{sec:xecache} describes how to get it to work, and the +\texttt{tlaunchmode} script, see section \ref{sec:tlaunchmode}, will +take care of this automatically. + +\subsection{The built-in functions} +\label{sec:fun} + +The following functions are available: +\begin{ttdesc} +\item [FU:quit] Terminate the launcher +\item [FU:clear] Undo all configuration and terminate +\item [FU:initialize] Undo all configuration, terminate and + restart. This forces re-initialization. +\item [FU:editor\_select] See section \ref{sec:edsel} below +\item [FU:default\_editor] See section \ref{sec:edsel} below +\item [FU:about] An About box +\end{ttdesc} + +\subsection{Menus and buttons} +\label{sec:controls} + +The visible interface of the launcher consists of an optional menu +with dropdown submenus and an optional row of buttons. There should be +at least one button or one submenu with one entry. + +A submenu is defined in a section with name `\texttt{MN:}' followed +by the submenu name, and the row of buttons is defined in a section +named `\texttt{BUTTONS}'. A button- or a menu item has as key the +string to be displayed and as value one of the following: +\begin{itemize} +\item A filetype. This invokes its \texttt{COMMAND}. +\item A utility script. This also invokes its \texttt{COMMAND}. +\item `\texttt{SO:}' (Shell Open) followed by a document or + \textsc{url}. The document or url will be opened in its default + program. +\item A predefined function, see section \ref{sec:fun}. +\item An arbitrary command. +\end{itemize} +In a submenu section, a sole `\texttt{=}' will produce a separator +line. In the button section, it will do nothing. + +{\sloppy +Example buttons- and submenu sections (see section +\ref{sec:utscripts} for the \texttt{SC:XeTeX-fontcache} entry): +\begin{verbatim} +[MN:Tools] +Editor choice=FU:editor_select +TeX Live Command Prompt=%comspec% /T "TeX Live" /e:on += +Generate/Refresh xetex font database=SC:XeTeX-fontcache + +[MN:Documentation] +All TeX Live documentation by package=SO:%tlroot%\doc.html +TeX and LaTeX Q & A=SO:http://tex.stackexchange.com/ + +[BUTTONS] +LaTeX Editor=FU:default_editor +PostScript Viewer=FT:TL.PSView.view.%VERSION% +Quit=FU:quit +\end{verbatim} +\par} + +\subsection{The General section} +\label{sec:gen} + +Here, three keywords are allowed: +\begin{ttdesc} +\item[Filetypes] Allowed values are + \begin{itemize} + \item \texttt{none}: do not set or change filetype associations + \item \texttt{new}: create filetype associations only if they do + not override existing ones; default + \item \texttt{overwrite} create filetype associations regardless + of existing ones + \end{itemize} +\item[searchpath] {\sloppy Allowed values are 0 (leave searchpath + alone) and 1 (add \TL{} to the searchpath; default). See + appendix \ref{sec:env}. In any case, when a program is started + from the launcher it will have \TL{} prepended to the process + searchpath.\par} +\item[keeptemps] Allowed values are 0 (delete temporary files; + default) and 1 (keep them). This is a debug option for running + external scripts. In most cases however, the contents of the + temporary files are copied to the log file \texttt{\%TEMP\%\bslb + TeXLive\_\dbr Launcher.log} anyway. +\end{ttdesc} + +An example general section: +\begin{verbatim} +[General] +FILETYPES=new +SEARCHPATH=1 +KEEPTEMPS=0 +\end{verbatim} +Since these are all default settings, one may as well omit this section. + +\section{Editor choice} +\label{sec:edsel} + +\begin{figure} + \centering + \includegraphics[width=.8\linewidth]{figures/custom_ed} + \caption{Editor selection with a file browser for a custom editor} + \label{fig:ed_sel} +\end{figure} +If a filetype has \texttt{.tex} among its supported extensions, the +launcher considers it an editor. On initialization, the first one +becomes the default, unless \texttt{PRIMARY} is set to 0 and there +is another candidate with \texttt{PRIMARY} 1. If in the +\texttt{General} section \texttt{FILETYPES} is set to \texttt{none} +or \texttt{new}, then an existing file association for \texttt{.tex} +files will not be overwritten. + +The function \texttt{FU:default\_editor} invokes the default editor +if there is one. The function \texttt{FU:editor\_select} invokes a +dialog for selecting a default editor; the options are the ones +defined in the ini file, the current default and selecting one via a +file browser dialog, see figure \ref{fig:ed_sel}. + +If the new editor is selected via the file browser, it will be +assigned to the filetype \texttt{TL.customed} and this filetype will +become the default for \texttt{.tex} files. It is possible to +configure another filetype string in the ini file, \emph{e.g.} one +which includes the \texttt{\%VERSION\%} string. + +Appendix \ref{sec:userchoice} explains why a \texttt{.tex} file +might still get opened in the previous editor. + +\section{Launcher-based installations} +\label{sec:lbased} + +It seems possible to do away with much of the Windows-specific code +of the current installer. To this end, I added install and uninstall +options to the launcher. Installation merely means creating a Start +menu entry for itself and to register itself as uninstaller. + +In installation mode, it is assumed that the launcher and its ini +file are already in place as part of the regular \TL{} +installation. + +Installation and uninstallation are triggered by command-line +parameters: + +\begin{ttdesc} +\item[user\_inst] Install the launcher for a single user +\item[admin\_inst] Install the launcher for all users +\item[uninst] Undo installation but leave the \TL{} + directory tree alone +\item[uninst\_all] Undo installation and remove the \TL{} directory + tree. This is the only option of these four which touches the \TL{} + installation itself. +\end{ttdesc} + +If there is a forgetter for the current user, both uninst options +will run it. A command-line option \texttt{silent} will ensure +that the forgetter will run without user interaction. + +Within the launcher, there are corresponding functions +\texttt{FU:uninst\_all} and \texttt{FU:uninst} which can be +assigned to a menu- or button control. If necessary, the launcher +will pop up a \textsc{uac} prompt and restart in elevated +mode. + +\subsection{The tlaunchmode script} +\label{sec:tlaunchmode} + +The included Perl script tlaunchmode can convert a local \TL{} +installation between classic and launcher-based. Run with a +parameter `on', the script turns launcher mode on; with `off' it +reverts the installation to classic, and anything else prints a +brief help message. + +It aborts if admin permissions are required but missing. + +It can be installed in the usual way: put it under the scripts +subdirectory of some texmf tree, run \texttt{mktexlsr} on that tree, +and copy in the \texttt{\emph{tlroot}\bslb bin\bslb win32} directory +\texttt{runscript.exe} to \texttt{tlaunchmode.exe}. + +Although at the moment there is no mechanism to make the path- and +file association settings in the ini file conform to those set +during a classic installation, those orginal settings are restored +when converting back to classic mode. + +\subsection{\TeX{} Live Manager} + +Nothing special has been done for the \TL{} Manager. It can be +assigned to a menu- or button control, although this makes little +sense for a centrally managed network installation. If necessary it +will automatically pop up a \textsc{uac} prompt. + +\chapter[The launcher at the RUG]{The launcher at the Rijksuniversiteit Groningen} +\label{chap:rug} + +\begin{figure}[tb] + \centering + \includegraphics[width=.7\linewidth]{figures/tlaunch_rug} + \caption{The launcher at the Rijksuniversiteit Groningen} + \label{fig:launcher_rug} +\end{figure} + +This chapter is about the launcher-based \TL{} installation at the +\RUG{} (Rijksuniversiteit Groningen) and the environment in which it +operates. + +Our \TL{} installation resides on the network. The \TL{} Launcher +is available via the start menu, and anybody on the university +network can click the launcher shortcut and start using \TeX{}. + +The files in the \texttt{tlrug.zip} zipfile are tidied up versions +of those of the \RUG{} installation: compared to the files actually +in use, they benefit from hindsight and omit ugly workarounds for +specific local problems. + +\section{Historical} + +An earlier solution for \TL{} was implemented with a patchwork of +scripts in various languages. An initialization script created +filetype associations, Start Menu shortcuts and modified the +searchpath. It made use of the built-in Perl and its \TL{} modules. + +However, some people got confused that the generated \TL{} menu was +in one place, \emph{viz.} in the conventional Start / Programs menu, +and the initializer script in the centrally maintained `RUG menu'. + +When between 2013 to 2014 the university transitioned to centrally +managed desktops, using the RES workspace management +system\footnote{Real Enterprise Solutions, + \texttt{https://res.com/}}, I created the launcher. For speed of +development, a first version was written in the +AutoIT\footnote{\texttt{https://\dbr www.\dbr autoitscript.\dbr + com/}} scripting language. AutoIT has good access to Windows' +internals, and comes with a utility which packages a script with a +AutoIT runtime into a self-contained executable. The AutoIT versions +did not use an ini file; everything was coded into the script +itself. + +For the 2015 \TL{} release, I finally had a usable C version, in +which all configuration was read from an ini file. + +\section{RES desktops} +\label{sec:res} + +The RES system synthesizes a desktop or workspace for the user on +logon. Personal settings are selectively captured, stored in a +database and restored on re-logon; the settings part of RES can be +considered an alternative implementation of the roaming profiles +described in Appendix \ref{sec:roam}. + +This desktop is also available remotely, which works reasonably well +most of the time. + +For \TL, I submit a wish list of settings to the workspace +management people, and they enter everything into the RES +system. Unfortunately, the RES system has its quirks, and what I +expect to happen is not always what actually does happen. But this +is not the place to expand on my trials and tribulations with RES. + +\section{Components of the \RUG{} \TeX{} installation} +\label{sec:comps} + +Various third-party programs are incorporated into our \TL{} +installation. Below are some details. + +Most \TeX-related software does not have deep hooks into the +system. Even if applications require elevated permissions to +install, usuallly they can simply be copied to another location and +work fine from there. This is the case with \emph{e.g.} \TL{} +itself and with \TS. + +The add-ons are: +\begin{itemize} +\item Additional editors: \TNC{} and \TS{} +\item The pdf viewer SumatraPDF +\item The Java-based bibliography manager JabRef +\item The epspdf \GUI{} with bundled single-file Tcl/Tk runtime +\item The pseudo-wysywyg LyX \LaTeX{} editor +\end{itemize} +There are also controls for: +\begin{itemize} +\item browsing the \TL{} installation +\item a command-prompt with \TL{} as the first directory on the + searchpath +\item generating or updating a \XeTeX{} font cache; see Section + \ref{sec:xecache} +\item some manuals from the \TL{} installation +\item links to \TeX-related websites +\end{itemize} +Such menu items are simply created by single lines in the +ini file. + +There are no controls for the \TL{} manager or for uninstalling. + +Figure \ref{fig:launcher_rug} shows buttons for some of the +additional software. Along the bottom of the window is an +announcement text, which is an optional string item in the ini +file. The Help menu item opens a help text in the configured default +text editor -- probably Notepad. + +\section{Directory organization} +\label{sec:rugdirs} + +There is a directory under the \TL{} root containing all the +extras. There is another subdirectory for the various scripts. All +paths in both the ini file and the scripts are relative to the root +of the installation. + +I did not put anything into the existing subdirectories of the \TL{} +installation, and put both the binary and the ini file in the root +of the installation. + +\section{Fixes for add-ons} +\label{sec:fixes} + +Some of the add-ons needed a bit more work than just copying the +installed program directory to its place under the \TL{} root: + +\subsection{\TNC} +\label{sec:tnc} +The original university installation was based on MikTeX, with +\TNC{} as editor. In 2008 I replaced MikTeX with \TL, and \TNC{} +with the more up to date \TS{} editor. Since I did not want to force +anyone to switch editors, I also kept \TNC{} around. + +While \TNC{} can autoconfigure itself nicely for MikTeX, it asks +\TL{} users a series of questions about what is where. Since many +users are only vaguely aware of directories beyond their home +directory, I wrote a vbscript which emulates the MiKTeX +autoconfiguration for \TL{} and avoids awkward questions. + +\subsection{\TS} +\label{sec:ts} + +\TS{} autoconfigures itself fine, but there were still two problems: +\begin{enumerate} +\item By default, it checks whether there is a more recent version, + while users are not in a position to do an update. +\item With our current desktop management software, programs do not + get the user searchpath appended to their process searchpath. +\end{enumerate} +The first problem is solved during first-time initialization of the +launcher. If there is no \TS{} configuration file, then one is +created with just the setting not to check for updates. If there is +one, the update check option is edited to be off. Either way, there +is no impact on other settings. + +A solution for the second problem is described in Appendix +\ref{sec:appreg}.\footnote{In the current \RUG{} installation, \TS{} + is started instead via a small wrapper program.} + +Note that TeXworks, Dviout and PSV[iew] are invoked via the \TL{} +runscript wrapper, which takes care of the searchpath, among other +things. + +\subsection{SumatraPDF} +\label{sec:sumatra} + +In the absence of any registry settings, SumatraPDF assumes that it +is a portable setup, and tries to write user configuration to its +own directory. Its developers informed me what registry setting +would convince SumatraPDF otherwise, so that it would write its +configuration data to the user's profile. + +Checks for updates are disabled in a similar way as for \TS. + +\subsection{LyX} +\label{sec:lyx} + +On first start, LyX can take several minutes to take stock of its +environment and figure out what it can use. During this time, it is not +even clear that anything is happening. + +To prevent this delay, the post-config script copies a pre-generated +configuration directory to the user's profile. + +In the LyX installation itself, in the file +\texttt{\emph{lyxroot}\bslb Resources\bslb lyxrc.dist}, the setting +\texttt{\bsl path\_prefix} has been rephrased to only contain paths +relative to \texttt{\$LyXDir}, which is the root of the LyX +installation. + +\section{Moving the \XeTeX{} font cache} +\label{sec:xecache} + +{\sloppy At the time of writing, the default location of the + \XeTeX{} font cache in \TL{} is \texttt{\$TEXMFYSVAR/\dbr + fonts/\dbr cache}, \emph{i.e.} \texttt{\emph{tlroot}/\dbr + texmf-var/\dbr fonts/\dbr cache}. In a multi-user or network + install, this location is not user-writable. Since this was a + problem, a line +\begin{verbatim} +FC_CACHEDIR = $TEXMFVAR/fonts/cache +\end{verbatim} +in the file \texttt{\emph{tlroot}/\dbr texmf.cnf} moved the cache to a +user-writable location.\par} + +Since I generate the \TL{} installation on a Linux system, the +configured \TL{} font paths in \texttt{\$TEXMFSYSVAR/\dbr fonts/\dbr + conf/\dbr fonts.conf} do not match the target installation. Of +course this generated file can be hand-edited, but a less +error-prone solution is to leave this file alone and move the font +configuration files also to a user-writable location with another +line: +\begin{verbatim} +FONTCONFIG_PATH = $TEXMFVAR/fonts/conf +\end{verbatim} +in \texttt{\emph{tlroot}/texmf.cnf}. A per-user font configuration +is then created by a line +\begin{verbatim} +"%TLROOT%\tlpkg\tlperl\bin\perl.exe" + "%TLROOT%\tlpkg\tlpostcode\xetex.pl" + install "%TLROOT%" skip_gen 2>NUL +\end{verbatim} +(one line) in a post-config script, see section \ref{sec:scripts}. + +The last parameter , \emph{viz.} \texttt{skip\_gen}, suppresses +actual cache generation, since that might take quite some time. Any +non-null value would have had the same effect. + +\section{Fixing non-roaming filetype associations} +\label{sec:fixroam} + +Before RES (see Section \ref{sec:res}), and before the launcher, the +\TL-related filetype associations would not follow the user from +desktop to desktop; see also Appendix \ref{sec:wftas}. This was +solved with a batchfile which restored missing file associations. By +placing a shortcut to this batchfile in the Start / All Programs / +Startup menu, this batchfile would automatically run at +logon. However, RES made this workaround unnecessary. + +For situations where non-roaming file associations are still a +problem, I intend to add a `reassoc' mode to the forgetter. The +forgetter is already in place and knows how to parse the ini +file. With the reassoc option, the forgetter will silently recreate +missing filetypes. If \TL{} or the launcher is missing it will do +nothing. There will be an option in the ini file to enable or +disable creation of such a shortcut to the forgetter, in its role as +rememberer. + +\appendix + +\chapter{Windows issues} + +\section{User and system} +\label{sec:usersys} + +Microsoft has wised up a lot security-wise. When Windows XP +appeared, the line of Windows 9\emph{x} windowses made place for +slightly crippled versions of the NT-based professional +editions. Even for Home editions there is now a separation between +per-user and system-wide settings and files. Since Windows Vista, +this separation is much more strictly enforced, and even +administrators have to take an extra step, such as clicking yes to a +UAC\footnote{User Account Control} prompt, before they can do +anything deemed risky. + +\section{Roaming} +\label{sec:roam} + +On a Windows domain network, it can be arranged that users have more +or less the same desktop, whatever computer within the network they +happen to be working on. This is accomplished by either `folder +redirection', \emph{i.e.} defining network locations for certain +dedicated directories (see `Known Folders' in Appendix +\ref{sec:known}), or by copying user data back and forth between +workstation and network on logon and logoff. There may also be a +dedicated network share for user documents which is accessible from +any computer, and which may do double duty as home to redirected +folders. + +\section{Windows configuration} +\label{sec:wconfig} + +Some Windows configuration can only be stored in the registry, in +particular file associations, see section \ref{sec:wftas} below, and +environment variables, including the searchpath. + +Other configuration can be stored either in the registry or in +configuration files, at the discretion of the developer. + +\subsection{Registry locations} +\label{sec:hives} + +We have to deal with three locations or hives within the registry: +\begin{itemize} +\item \texttt{HKEY\_\dbr + CURRENT\_\dbr USER}, or \hkcu{} in short, for user-specific settings +\item \texttt{HKEY\_\dbr + LOCAL\_\dbr MACHINE}, or \hklm{} in short, for system-level settings +\item A third hive, \texttt{HKEY\_\dbr CLASSES\_\dbr ROOT}, or + \hkcr, will be described in the next subsection. +\end{itemize} + +\subsection{Filetype associations} +\label{sec:wftas} + +The basic idea is that an extension has a default filetype or +ProgID, and this filetype in its turn can define commands such as +open, edit, view or print. For example, the extension \texttt{.jar} +has as its filetype or ProgID \texttt{jarfile}, and for the ProgID +\texttt{jarfile} the open command is defined as \emph{e.g.}\par +{\footnotesize +\begin{verbatim} +"C:\Program Files (x86)\Java\jre1.8.0_45\bin\javaw.exe" -jar "%1" %* +\end{verbatim} +}\normalsize +Extensions can also have secondary file associations. These are +the ones showing up when right-clicking a file and selecting `Open +with\textellipsis'. + +Filetype associations exist in per-user and system-wide flavors: + +{\sloppy +\begin{itemize} +\item User-specific filetype associations are stored in + \hkcu\texttt{\bslb Software\bslb Classes} +\item System-level filetype associations are stored in + \hklm\texttt{\bslb Software\bslb Classes} +\item The effective filetype associations are stored in + \texttt{HKEY\_\dbr CLASSES\_\dbr ROOT} or \hkcr, which is a + runtime merge of the above two branches. Settings in \hkcu{} + override corresponding settings in \hklm. +\end{itemize}} + +{\sloppy For example, the link from \texttt{.jar} to + \texttt{jarfile} is can be read from the \hkcr\texttt{\bslb.jar} + key and the link from \texttt{jarfile} to actual commands from the + \hkcr \texttt{\bslb jarfile} key.\footnote{In some situations, + reading from \hkcr{} proved not entirely reliable. Therefore, \TL{} + always explicitly checks first \hkcu{} and if necessary + \hklm.}\par} + +Secondary filetype associations can be stored in a subkey of the +extension subkey, either the \texttt{OpenWithList} (obsolete) or +the \texttt{OpenWithProgIds} subkey. + +Unfortunately, these user-level filetype associations do not roam. +With the RES desktop management system, this is no longer a problem +for us. But a future version of the launcher will contain a +workaround for other environments; see section \ref{sec:fixroam}. + +\subsection{UserChoice} +\label{sec:userchoice} + +Apart from this scheme, choices made by the user in the `Open +with\textellipsis' dialog are stored under subkeys of \hkcu +\texttt{\bslb Software\bslb Microsoft\bslb Windows\bslb + CurrentVersion\bslb Explorer\bslb FileExts\bslb \emph{.ext}}, the +exact subkey(s) depending on the Windows version. Such entries +should have priority over the ones described above, and do roam. + +Windows 8 and later may pop up a dialog asking with what program to +open a file even if there is already an answer in a +\texttt{Software\bslb Classes} key. The answer will be a preference +stored under the \texttt{FileExts} key mentioned above. This should +alleviate the problem of non-roaming filetype associations. + +The launcher will not touch these registry entries. + +\subsection{Application registration} +\label{sec:appreg} + +An application which is registered may have a better chance to be listed +as an alternative in the `Open with...' dialog. + +{\sloppy The currently recommended way to register an application is + under the \texttt{SOFTWARE\bsl Microsoft\bslb Windows\bslb + CurrentVersion\bslb App Paths\bslb \emph{basename}} key + (\texttt{basename} including \texttt{.exe} file extension). The + default entry of such a key is the full path of the + file. Therefore, only one file with a given basename can have such + a registration entry.\par} + +The other entry of interest under this key is `Path', which is a +searchpath fragment that should be prepended to the regular +searchpath, just for this program. This prefixing happens if the +program is opened by Windows Explorer. The path prefix is ignored +if the program is started from the command-line or from the +launcher. + +For filetypes defined in the launcher ini file, the launcher creates +an application registration key for the associated program, but only +if the \texttt{COMMAND} field is just a filename or -path, with or +without quotes. + +{\sloppy +Applications can also be registered under \hkcr \texttt{\bslb + Applications\bslb \emph{basename}}, but here is no option to set a +searchpath prefix. Microsoft considers this location obsolete.\par} + +\subsection{The searchpath and other environment variables} +\label{sec:env} + +Environment variables are also stored in the registry: per-user +variables in \hkcu\texttt{\bslb software\bslb environment}, system +environment variables in \hklm\texttt{\bslb System\bslb + CurrentControlSet\bslb Control\bslb Session Manager\bslb + Environment}. + +For the searchpath, the effective searchpath consists of the system +\texttt{\%Path\%} variable, with the user \texttt{\%Path\%} variable +\emph{appended} if it exists, with an intervening `;' of +course. Therefore, \emph{directories on the system searchpath have + priority over the user searchpath}. + +Other environment variables from these registry locations behave as +expected: the user version has priority if both exist. Note that the +names of environment variables are case-insensitive. + +{\sloppy +Various pieces of system information, such as \texttt{COMPUTERNAME} +and \texttt{CommonProgramFiles}, are not explicitly stored as +environment variables, but are nevertheless available as such.\par} + +\section{ Windows Known Folders} +\label{sec:known} + +Windows has an elaborate and ever expanding system of `Known +Folders': \emph{e.g.} Program Files, ProgramData, User Profile +(HOME directory), Start Menu, Desktop, Documents, Downloads, +History, SendTo, Templates, Administrative Tools, Pictures, Music, +Videos, Account Pictures, Cookies, Favorites, and dozens more, many +of them both in a system- and a user version. + +Sometimes a known folder is not a real folder but a virtual one, and +for some known folders, 64-bits applications and 32-bits +applications view things differently. + +There are APIs which associate known folder identifiers to actual +directory paths. + +With Windows Vista a new API has been introduced, and the old one +declared obsolete. One change for the better: the directory +name `Documents and Settings' has been replaced with simply `Users'. + +This API also gives access to other properties, such as the +localized names shown in Windows Explorer, such as `Programme' +instead of `Program Files', or `Gebruikers' instead of `Users'. + +Microsoft recommends to avoid hard-coded paths, and to place +everything under known folders instead. One benefit is at least that +files in known folders have a better chance of surviving system +upgrades. + +\subsection{Programs} +\label{sec:knownprogs} + +The directory reserved for programs is normally \texttt{c:\bslb + Program Files}. On 64-bit systems, this directory is reserved for +64-bits programs, and \texttt{c:\bslb Program Files (x86)} for +32-bits programs. Directories under one of the Program Files folders +are automatically write-protected. + +\subsection{Configuration- and data files} +\label{sec:known_configs} + +There are also preferred locations for per-user- and system-wide +program data. For Windows Vista and later these are: +\begin{itemize} +\item {\sloppy For user-specific settings, typical locations are + \texttt{\%appdata\%}, which is usually + \texttt{\%userprofile\%\bslb \%appdata\%\bslb roaming}, and + \texttt{\%localappdata\%}, which is usually + \texttt{\%userprofile\%\bslb \%appdata\%\bslb local}. For a + networked workstation, \texttt{\%appdata\%} may be relocated or + backed up to a location on the network, and be available to the + user on any workstation.\par} +\item {\sloppy For system-wide settings there is \texttt{\%ProgramData\%}, + usually \texttt{C:\bsl ProgramData}.\par} +\end{itemize} +On Windows Vista and later, these directories normally do \emph{not} +have spaces in their path. They are by default also hidden. + +\subsection{\TL{} choices} +\label{sec:known_tl} + +It is clear that \TL{} does not try very hard to conform to all +Microsoft's recommendations, and I do not think that it should. A +couple of obvious advantages of the existing default path +\texttt{C:\bslb texlive\bslb \emph{yyyy}}\footnote{Regular users can + create directories in the root directory of the C:-drive, even + though they cannot create regular files there.} are the absence of +spaces, and the locale-independence of the path seen in Windows +Explorer. + +In this default location, \TL{} will not be write-protected +automatically. For a system-wide installation, the \TL{} installer +itself will take care of this. + +{\sloppy +As to user files, it should be ok to put \texttt{\$TEXMFCONFIG}, +\texttt{\$TEXMFVAR} and tlaunch's \texttt{\%TLCONFIG\%} under +\texttt{\%appdata\%} or \texttt{\%localappdata\%}. For the first +two, this could also be done after the fact with a couple of lines +in \texttt{\emph{tlroot}/texmf.cnf}, \emph{e.g.}: +\begin{verbatim} +TEXMFVAR = $APPDATA/texlive2016/texmf-var +TEXMFCONFIG = $APPDATA/texlive2016/texmf-config +\end{verbatim} +There they will be hidden, but most users will never interact +directly with files in these directories anyway.\par} + +\end{document} 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."; + } +} diff --git a/Master/texmf-dist/web2c/tlaunch.ini b/Master/texmf-dist/web2c/tlaunch.ini new file mode 100644 index 00000000000..bcfd5538fb0 --- /dev/null +++ b/Master/texmf-dist/web2c/tlaunch.ini @@ -0,0 +1,115 @@ +[Strings] +; %VERSION% detected +TLNAME=TeX Live %VERSION% +; configuration directory; a couple of suggestions: +TLCONFIG=%userprofile%\.texlive%VERSION%\tlaunch +; or: +;TLCONFIG=%appdata%\.texlive%VERSION%\tlaunch +; ProgID for user-selected LaTeX editor; the setting below is the default +CUSTOMED_PROGID=TL.customed +; optional announcement +;ANNOUNCE=This is TLaunch with a sample ini file. + +; Filetypes + +[FT:TL.TeXworks.edit.%VERSION%] +COMMAND="%tlroot%\bin\win32\TeXworks.exe" +EXTENSIONS=.tex .cls .sty +; filetype is regular file association for extension; already default: +;PRIMARY=1 + +; for illustration purposes: +[FT:Notepad] +COMMAND=%systemroot%\notepad.exe +EXTENSIONS=.tex .cls .sty .txt .log +; PRIMARY 0: only set OpenWithProgID key +PRIMARY=0 + +; right-clicking a file of one of the supported types +; gives you the option to convert it to eps +[FT:TL.bitmap2eps.convert.%VERSION%] +COMMAND="%tlroot%\bin\win32\bitmap2eps.exe" +EXTENSIONS=.bmp .gif .jpe .jpeg .jpg .png .tif .tiff +PRIMARY=0 + +[FT:TL.DVIOUT.view.%VERSION%] +COMMAND="%tlroot%\bin\win32\dviout.exe" +EXTENSIONS=.dvi + +[FT:TL.PSView.view.%VERSION%] +COMMAND="%tlroot%\bin\win32\psv.exe" +EXTENSIONS=.eps .ps .pdf + +; 2-level menu + +; key is display string, value is action +; items can be: +; SO: shell object, e.g. document or URL; opened with current default program. +; SC: previously declared utility script +; FT: previously declared filetype +; FU: built-in function +; general commands + +; automatic cache generation from xetex may require changes to +; the root TEXMF.CNF +; It may not always work right when run from xetex +; so is also available as a utility script. +; see manual for requirements to make this work. +[SC:XeTeX-fontcache] +command=fc-cache -v +splash=Creating or updating XeTeX font cache + +[MN:File] +Browse TeX Live installation=explorer.exe "%tlroot%\.." +Quit=FU:quit + +[MN:Editors] +TeXworks=FT:TL.TeXworks.edit.%VERSION% +Notepad=FT:Notepad +Select default editor...=FU:options + +[MN:Viewers] +PostScript Viewer=FT:TL.PSView.view.%VERSION% +DVI Viewer=FT:TL.DVIOUT.view.%VERSION% + +[MN:Tools] +TeX Live Command Prompt=%comspec% /T "%TLNAME%" /e:on += +Re-initialize TeX Live=FU:initialize +Remove TeX Live settings=FU:clear += +TeX Live Manager="%tlroot%\bin\win32\tlmgr-gui.exe" +Uninstall completely=FU:uninst_all +Uninstall but keep directory=FU:uninst += +Editor choice=FU:editor_select += +Generate/Refresh xetex font database=SC:XeTeX-fontcache + +[MN:Documentation] +LaTeX Introduction=SO:%tlroot%\texmf-dist\doc\latex\lshort-english\lshort.pdf +LaTeX Reference=SO:%tlroot%\texmf-dist\doc\latex\latex2e-help-texinfo\latex2e.pdf +All TeX Live documentation by package=SO:%tlroot%\doc.html +FAQ=SO:%tlroot%\texmf-dist\doc\generic\FAQ-en\newfaq.pdf +Launcher=SO:%tlroot%\texmf-dist\doc\support\tlaunch\tlaunch.pdf += +AmsMath User Guide=SO:%tlroot%\texmf-dist\doc\latex\amsmath\amsldoc.pdf +Beamer User Guide=SO:%tlroot%\texmf-dist\doc\latex\beamer\doc\beameruserguide.pdf + +[MN:Online] +TeX Users Group (international)=SO:http://www.tug.org/ +TeX and LaTeX Q & A=SO:http://tex.stackexchange.com/ +LaTeX Community site=SO:http://www.latex-community.org/ +UK TeX FAQ online=SO:http://www.tex.ac.uk/faq + +[MN:Help] +About=FU:about + +[Buttons] +; FU:default_editor invokes the `default editor' if there is one. +; The editor_select dialog lets the user select a preconfigured editor +; if there is one, or select an existing program. +LaTeX Editor=FU:default_editor +Select default editor...=FU:editor_select +TeX Live Command Prompt=%comspec% /T "TeX Live" /e:on +Quit=FU:quit |