texlive[43114] Master: Upload of tlaunch, TeX Live Launcher

commits+siepo at tug.org commits+siepo at tug.org
Wed Feb 1 15:18:04 CET 2017

Revision: 43114
Author:   siepo
Date:     2017-02-01 15:18:04 +0100 (Wed, 01 Feb 2017)
Log Message:
Upload of tlaunch, TeX Live Launcher

Added Paths:

Added: trunk/Master/bin/win32/tlaunch.exe
(Binary files differ)

Index: trunk/Master/bin/win32/tlaunch.exe
--- trunk/Master/bin/win32/tlaunch.exe	2017-02-01 04:41:12 UTC (rev 43113)
+++ trunk/Master/bin/win32/tlaunch.exe	2017-02-01 14:18:04 UTC (rev 43114)

Property changes on: trunk/Master/bin/win32/tlaunch.exe
Added: svn:executable
## -0,0 +1 ##
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
\ No newline at end of property
Added: trunk/Master/bin/win32/tlaunchmode.exe
(Binary files differ)

Index: trunk/Master/bin/win32/tlaunchmode.exe
--- trunk/Master/bin/win32/tlaunchmode.exe	2017-02-01 04:41:12 UTC (rev 43113)
+++ trunk/Master/bin/win32/tlaunchmode.exe	2017-02-01 14:18:04 UTC (rev 43114)

Property changes on: trunk/Master/bin/win32/tlaunchmode.exe
Added: svn:executable
## -0,0 +1 ##
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
\ No newline at end of property
Added: trunk/Master/source/tlaunch-0.5.1-src.zip
(Binary files differ)

Index: trunk/Master/source/tlaunch-0.5.1-src.zip
--- trunk/Master/source/tlaunch-0.5.1-src.zip	2017-02-01 04:41:12 UTC (rev 43113)
+++ trunk/Master/source/tlaunch-0.5.1-src.zip	2017-02-01 14:18:04 UTC (rev 43114)

Property changes on: trunk/Master/source/tlaunch-0.5.1-src.zip
Added: svn:mime-type
## -0,0 +1 ##
\ No newline at end of property
Added: trunk/Master/source/tlaunch.README
--- trunk/Master/source/tlaunch.README	                        (rev 0)
+++ trunk/Master/source/tlaunch.README	2017-02-01 14:18:04 UTC (rev 43114)
@@ -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

Property changes on: trunk/Master/source/tlaunch.README
Added: svn:eol-style
## -0,0 +1 ##
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/support/tlaunch/COPYING
--- trunk/Master/texmf-dist/doc/support/tlaunch/COPYING	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/support/tlaunch/COPYING	2017-02-01 14:18:04 UTC (rev 43114)
@@ -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
+  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
+  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.
+  16. Limitation of Liability.
+  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
+    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
+  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

Added: trunk/Master/texmf-dist/doc/support/tlaunch/Changes
--- trunk/Master/texmf-dist/doc/support/tlaunch/Changes	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/support/tlaunch/Changes	2017-02-01 14:18:04 UTC (rev 43114)
@@ -0,0 +1,25 @@
+2017-02-01 Siep Kroonenberg <siepo at 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 at 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 at cybercomm.nl> Release 0.4.0
+	Initial public release

Added: trunk/Master/texmf-dist/doc/support/tlaunch/README
--- trunk/Master/texmf-dist/doc/support/tlaunch/README	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/support/tlaunch/README	2017-02-01 14:18:04 UTC (rev 43114)
@@ -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
+- 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.

Property changes on: trunk/Master/texmf-dist/doc/support/tlaunch/README
Added: svn:eol-style
## -0,0 +1 ##
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/support/tlaunch/figures/custom_ed.png
(Binary files differ)

Index: trunk/Master/texmf-dist/doc/support/tlaunch/figures/custom_ed.png
--- trunk/Master/texmf-dist/doc/support/tlaunch/figures/custom_ed.png	2017-02-01 04:41:12 UTC (rev 43113)
+++ trunk/Master/texmf-dist/doc/support/tlaunch/figures/custom_ed.png	2017-02-01 14:18:04 UTC (rev 43114)

Property changes on: trunk/Master/texmf-dist/doc/support/tlaunch/figures/custom_ed.png
Added: svn:mime-type
## -0,0 +1 ##
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/support/tlaunch/figures/tlaunch_rug.png
(Binary files differ)

Index: trunk/Master/texmf-dist/doc/support/tlaunch/figures/tlaunch_rug.png
--- trunk/Master/texmf-dist/doc/support/tlaunch/figures/tlaunch_rug.png	2017-02-01 04:41:12 UTC (rev 43113)
+++ trunk/Master/texmf-dist/doc/support/tlaunch/figures/tlaunch_rug.png	2017-02-01 14:18:04 UTC (rev 43114)

Property changes on: trunk/Master/texmf-dist/doc/support/tlaunch/figures/tlaunch_rug.png
Added: svn:mime-type
## -0,0 +1 ##
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/support/tlaunch/figures/tlaunch_window.png
(Binary files differ)

Index: trunk/Master/texmf-dist/doc/support/tlaunch/figures/tlaunch_window.png
--- trunk/Master/texmf-dist/doc/support/tlaunch/figures/tlaunch_window.png	2017-02-01 04:41:12 UTC (rev 43113)
+++ trunk/Master/texmf-dist/doc/support/tlaunch/figures/tlaunch_window.png	2017-02-01 14:18:04 UTC (rev 43114)

Property changes on: trunk/Master/texmf-dist/doc/support/tlaunch/figures/tlaunch_window.png
Added: svn:mime-type
## -0,0 +1 ##
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/support/tlaunch/rug.zip
(Binary files differ)

Index: trunk/Master/texmf-dist/doc/support/tlaunch/rug.zip
--- trunk/Master/texmf-dist/doc/support/tlaunch/rug.zip	2017-02-01 04:41:12 UTC (rev 43113)
+++ trunk/Master/texmf-dist/doc/support/tlaunch/rug.zip	2017-02-01 14:18:04 UTC (rev 43114)

Property changes on: trunk/Master/texmf-dist/doc/support/tlaunch/rug.zip
Added: svn:mime-type
## -0,0 +1 ##
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/support/tlaunch/tlaunch.pdf
(Binary files differ)

Index: trunk/Master/texmf-dist/doc/support/tlaunch/tlaunch.pdf
--- trunk/Master/texmf-dist/doc/support/tlaunch/tlaunch.pdf	2017-02-01 04:41:12 UTC (rev 43113)
+++ trunk/Master/texmf-dist/doc/support/tlaunch/tlaunch.pdf	2017-02-01 14:18:04 UTC (rev 43114)

Property changes on: trunk/Master/texmf-dist/doc/support/tlaunch/tlaunch.pdf
Added: svn:mime-type
## -0,0 +1 ##
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/support/tlaunch/tlaunch.tex
--- trunk/Master/texmf-dist/doc/support/tlaunch/tlaunch.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/support/tlaunch/tlaunch.tex	2017-02-01 14:18:04 UTC (rev 43114)
@@ -0,0 +1,1066 @@
+% fonts
+  raiselinks=false,%
+  colorlinks=true,%
+  bookmarksnumbered=true,%
+  bookmarksopen=true,%
+  bookmarksopenlevel=1%
+  >{\raggedright\hspace{0pt}\arraybackslash}p{#1}}
+\def\fta{filetype association}
+\def\FTA{Filetype association}
+% if bold small caps available:
+% if bold small caps unavailable:
+%\def\hkcu{HKEY\_\dbr CURRENT\_\dbr USER}
+%\def\hklm{HKEY\_\dbr LOCAL\_\dbr MACHINE}
+%\def\hkcr{HKEY\_\dbr CLASSES\_\dbr ROOT}
+  \def\descriptionlabel##1{\hspace\labelsep\ttfamily\selectfont ##1}%
+  \description}{\enddescription}
+\title{TLaunch: a launcher for a \TL{} system}
+\author{Siep Kroonenberg}
+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}
+% let physical pages match logical ones
+\chapter{The launcher}
+  \centering
+  \includegraphics[width=.7\linewidth]{figures/tlaunch_window}
+  \caption{A possible Launcher window}
+  \label{fig:launcher}
+\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.
+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
+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.
+\subsection{Normal mode}
+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
+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
+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.
+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}
+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
+\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}
+\section{The ini file}
+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.
+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
+The binary and the ini file should have the same first name.
+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.
+The ini file is a regular Windows ini file with sections,
+definitions and comment lines.
+\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{;}'.
+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}
+  \small\centering
+  \hline
+  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}
+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)}
+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:
+;SHELL_CMD="%tlroot%\bin\win32\TeXworks.exe" "%1"
+EXTENSIONS=.tex .cls .sty
+The commented lines are optional and represent default values.
+\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}.
+\subsection{Sections for utility scripts}
+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
+command=fc-cache -v
+splash=Creating or updating XeTeX font cache
+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}
+The following functions are available:
+\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
+\subsection{Menus and buttons}
+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:
+\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.
+In a submenu section, a sole `\texttt{=}' will produce a separator
+line. In the button section, it will do nothing.
+Example buttons- and submenu sections (see section
+\ref{sec:utscripts} for the \texttt{SC:XeTeX-fontcache} entry):
+Editor choice=FU:editor_select
+TeX Live Command Prompt=%comspec% /T "TeX Live" /e:on
+Generate/Refresh xetex font database=SC:XeTeX-fontcache
+All TeX Live documentation by package=SO:%tlroot%\doc.html
+TeX and LaTeX Q & A=SO:http://tex.stackexchange.com/
+LaTeX Editor=FU:default_editor
+PostScript Viewer=FT:TL.PSView.view.%VERSION%
+\subsection{The General section}
+Here, three keywords are allowed:
+\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.
+An example general section:
+Since these are all default settings, one may as well omit this section.
+\section{Editor choice}
+  \centering
+  \includegraphics[width=.8\linewidth]{figures/custom_ed}
+  \caption{Editor selection with a file browser for a custom editor}
+  \label{fig:ed_sel}
+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}
+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 and uninstallation are triggered by command-line
+\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.
+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
+\subsection{The tlaunchmode script}
+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}
+  \centering
+  \includegraphics[width=.7\linewidth]{figures/tlaunch_rug}
+  \caption{The launcher at the Rijksuniversiteit Groningen}
+  \label{fig:launcher_rug}
+This chapter is about the launcher-based \TL{} installation at the
+\RUG{} (Rijksuniversiteit Groningen) and the environment in which it
+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.
+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
+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}
+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}
+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:
+\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
+There are also controls for:
+\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
+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}
+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}
+Some of the add-ons needed a bit more work than just copying the
+installed program directory to its place under the \TL{} root:
+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.
+\TS{} autoconfigures itself fine, but there were still two problems:
+\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.
+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
+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.
+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
+\section{Moving the \XeTeX{} font cache}
+{\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
+FC_CACHEDIR = $TEXMFVAR/fonts/cache
+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
+in \texttt{\emph{tlroot}/texmf.cnf}. A per-user font configuration
+is then created by a line
+  "%TLROOT%\tlpkg\tlpostcode\xetex.pl"
+  install "%TLROOT%" skip_gen 2>NUL
+(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}
+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
+\chapter{Windows issues}
+\section{User and system}
+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.
+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
+\section{Windows configuration}
+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}
+We have to deal with three locations or hives within the registry:
+\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.
+\subsection{Filetype associations}
+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
+"C:\Program Files (x86)\Java\jre1.8.0_45\bin\javaw.exe" -jar "%1" %*
+Extensions can also have secondary file associations. These are
+the ones showing up when right-clicking a file and selecting `Open
+Filetype associations exist in per-user and system-wide flavors:
+\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.
+{\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}.
+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}
+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
+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.
+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}
+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.
+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}
+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
+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}
+There are also preferred locations for per-user- and system-wide
+program data. For Windows Vista and later these are:
+\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}
+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}
+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
+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.
+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.}:
+TEXMFVAR = $APPDATA/texlive2016/texmf-var
+TEXMFCONFIG = $APPDATA/texlive2016/texmf-config
+There they will be hidden, but most users will never interact
+directly with files in these directories anyway.\par}

Property changes on: trunk/Master/texmf-dist/doc/support/tlaunch/tlaunch.tex
Added: svn:eol-style
## -0,0 +1 ##
\ No newline at end of property
Added: trunk/Master/texmf-dist/scripts/tlaunch/tlaunchmode.pl
--- trunk/Master/texmf-dist/scripts/tlaunch/tlaunchmode.pl	                        (rev 0)
+++ trunk/Master/texmf-dist/scripts/tlaunch/tlaunchmode.pl	2017-02-01 14:18:04 UTC (rev 43114)
@@ -0,0 +1,132 @@
+#!/usr/bin/env perl
+# This file is public domain.
+my $Master;
+  $^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.
+  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.";
+  }

Property changes on: trunk/Master/texmf-dist/scripts/tlaunch/tlaunchmode.pl
Added: svn:eol-style
## -0,0 +1 ##
\ No newline at end of property
Added: trunk/Master/texmf-dist/web2c/tlaunch.ini
--- trunk/Master/texmf-dist/web2c/tlaunch.ini	                        (rev 0)
+++ trunk/Master/texmf-dist/web2c/tlaunch.ini	2017-02-01 14:18:04 UTC (rev 43114)
@@ -0,0 +1,115 @@
+; %VERSION% detected
+; configuration directory; a couple of suggestions:
+; or:
+; ProgID for user-selected LaTeX editor; the setting below is the default
+; optional announcement
+;ANNOUNCE=This is TLaunch with a sample ini file.
+; Filetypes
+EXTENSIONS=.tex .cls .sty
+; filetype is regular file association for extension; already default:
+; for illustration purposes:
+EXTENSIONS=.tex .cls .sty .txt .log
+; PRIMARY 0: only set OpenWithProgID key
+; right-clicking a file of one of the supported types
+; gives you the option to convert it to eps
+EXTENSIONS=.bmp .gif .jpe .jpeg .jpg .png .tif .tiff
+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.
+command=fc-cache -v
+splash=Creating or updating XeTeX font cache
+Browse TeX Live installation=explorer.exe "%tlroot%\.."
+Select default editor...=FU:options
+PostScript Viewer=FT:TL.PSView.view.%VERSION%
+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
+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
+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
+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
+; 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

Property changes on: trunk/Master/texmf-dist/web2c/tlaunch.ini
Added: svn:eol-style
## -0,0 +1 ##
\ No newline at end of property

More information about the tex-live-commits mailing list