summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xMaster/bin/win32/tlaunch.exebin0 -> 114176 bytes
-rwxr-xr-xMaster/bin/win32/tlaunchmode.exebin0 -> 1536 bytes
-rw-r--r--Master/source/tlaunch-0.5.1-src.zipbin0 -> 67224 bytes
-rw-r--r--Master/source/tlaunch.README21
-rw-r--r--Master/texmf-dist/doc/support/tlaunch/COPYING674
-rw-r--r--Master/texmf-dist/doc/support/tlaunch/Changes25
-rw-r--r--Master/texmf-dist/doc/support/tlaunch/README22
-rw-r--r--Master/texmf-dist/doc/support/tlaunch/figures/custom_ed.pngbin0 -> 56281 bytes
-rw-r--r--Master/texmf-dist/doc/support/tlaunch/figures/tlaunch_rug.pngbin0 -> 11781 bytes
-rw-r--r--Master/texmf-dist/doc/support/tlaunch/figures/tlaunch_window.pngbin0 -> 9378 bytes
-rw-r--r--Master/texmf-dist/doc/support/tlaunch/rug.zipbin0 -> 10650 bytes
-rw-r--r--Master/texmf-dist/doc/support/tlaunch/tlaunch.pdfbin0 -> 367271 bytes
-rw-r--r--Master/texmf-dist/doc/support/tlaunch/tlaunch.tex1066
-rw-r--r--Master/texmf-dist/scripts/tlaunch/tlaunchmode.pl132
-rw-r--r--Master/texmf-dist/web2c/tlaunch.ini115
15 files changed, 2055 insertions, 0 deletions
diff --git a/Master/bin/win32/tlaunch.exe b/Master/bin/win32/tlaunch.exe
new file mode 100755
index 00000000000..1aa7910b2d3
--- /dev/null
+++ b/Master/bin/win32/tlaunch.exe
Binary files differ
diff --git a/Master/bin/win32/tlaunchmode.exe b/Master/bin/win32/tlaunchmode.exe
new file mode 100755
index 00000000000..5777d90a17a
--- /dev/null
+++ b/Master/bin/win32/tlaunchmode.exe
Binary files differ
diff --git a/Master/source/tlaunch-0.5.1-src.zip b/Master/source/tlaunch-0.5.1-src.zip
new file mode 100644
index 00000000000..ebaf11f700f
--- /dev/null
+++ b/Master/source/tlaunch-0.5.1-src.zip
Binary files differ
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
new file mode 100644
index 00000000000..d0d1c6a5710
--- /dev/null
+++ b/Master/texmf-dist/doc/support/tlaunch/figures/custom_ed.png
Binary files differ
diff --git a/Master/texmf-dist/doc/support/tlaunch/figures/tlaunch_rug.png b/Master/texmf-dist/doc/support/tlaunch/figures/tlaunch_rug.png
new file mode 100644
index 00000000000..86390b8e9ba
--- /dev/null
+++ b/Master/texmf-dist/doc/support/tlaunch/figures/tlaunch_rug.png
Binary files differ
diff --git a/Master/texmf-dist/doc/support/tlaunch/figures/tlaunch_window.png b/Master/texmf-dist/doc/support/tlaunch/figures/tlaunch_window.png
new file mode 100644
index 00000000000..4570f8efd34
--- /dev/null
+++ b/Master/texmf-dist/doc/support/tlaunch/figures/tlaunch_window.png
Binary files differ
diff --git a/Master/texmf-dist/doc/support/tlaunch/rug.zip b/Master/texmf-dist/doc/support/tlaunch/rug.zip
new file mode 100644
index 00000000000..8e0b16d33d5
--- /dev/null
+++ b/Master/texmf-dist/doc/support/tlaunch/rug.zip
Binary files differ
diff --git a/Master/texmf-dist/doc/support/tlaunch/tlaunch.pdf b/Master/texmf-dist/doc/support/tlaunch/tlaunch.pdf
new file mode 100644
index 00000000000..53d5631b966
--- /dev/null
+++ b/Master/texmf-dist/doc/support/tlaunch/tlaunch.pdf
Binary files differ
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