Hi Joost and all other interested developers,

I spent a lot of time time to merge my LyXWinInstaller with the one you created for LyX 2. To be able to follow what I have done and to be able to work together on the code base I committed it to trunk:
http://www.lyx.org/trac/changeset/38820
The idea is hereby to use trunk as working space for the merging and only stable things should go into the 2_0_x branch.

Every change is of course discuss-able and the installer version I committed is a first proposal. I'm sure that some things like can be done more clever.

These are the things I have implemented in your installer:

- I replaced the LaTeX check and installation routine with my installer for the 
following reasons:
- your checkup takes on my machine more than a minute until MiKTeX's folders an configuration is found. I therefore read the registry so that the checkup is now performed in a second. - you only supported MiKTeX, I also built in support for TeXLive (the installation of LyX's own sty-files to TeXLive is not yet implemented) - you installed LyX's sty-files always to MiKTeX's user folder. But when LyX is installed for all users, we need to install them to MiKTeX's main folder to be available for all users
  - MiKTeX will be bundled with LyX, not installed. See below why I think this 
is necessary.
- we need to configure MiKTeX to install missing packages on the fly. I also set a default package location. This is necessary because new users don't know what MiKTeX is for and why they should give their OK to install additional things. They even cannot know what a LaTeX-package is. They will learn these things _after_ installing LyX. (Even many experienced LyX users (like my students) don't know how LaTeX works in LyX's background, the just use LyX and don't want to be bothered with anything else.)

- I used the custom LaTeX installer page from my installer, only because this is already translated to 22 languages. The page design is a matter of taste, so we can also use yours if you prefer it for a certain reason.

- I implemented the feature to check if LyX is running. In this case it cannot be uninstalled and you get a warning to close LyX and save your files before.

- I implemented the feature to check if another instance of the installer is already running to avoid broken installations when the installer was started twice the same time.

- I added a basic translation for 18 languages

- there is now an installer page where you can select LyX's start menu folder. This was once requested by users.

- there is now an installer page where you can select the components to install like JabRef and GSview, if there should be a desktop icon or not and if the .lyx file extension should be linked to the installed LyX version. The installations of JabRef and GSview are not yet silent - is on my todo list. To be able to disable the file extension linking is important, for example for users who are working on important documents (like theses), and thus want to keep LyX 1.6.x as the linked version for *.lyx-files.

- the last installer page has now an option to start LyX after the installation. The option is by default disabled, but this feature is kind of standard (users expect this, especially new ones).

- the uninstaller sops if LyX was installed for all users with admin privileges, but the user wants to uninstall it without admin permissions

- if a third-party program like MiKTeX was installed together with LyX, it is now possible to remove it also together with LyX. The uninstall has a page where you can enable/disable this. Third-party programs are only offered to uninstall if they were installed together with this LyX version. So in MiKTeX was once installed with 1.6.9, the uninstaller of 2.0.1 won't touch it. If you uninstall LyX 1.6.9 and deny MiKTeX's uninstallation, then LyX will never touch it again, also not if you reinstall 1.6.9. The same method should be used for the uninstallation of metafile2eps (will implement this later after having a closer look at this issue)

- I needed to change LyX's NSIS declaration to have an unique identity - I modified them so that the version mumbering also contains the bugfix releases (2.0.0 instead of only 2.0)

- at the end of the installation, the installer asks you to update MiKTeX (if this is used for LyX). This is important because many things reported at the mailing lists are LaTeX-issues that will be fixed in more recent versions of the packages. Therefore one needs to update MiKTeX from time to time. As my experience is that people don't do that manually, it is necessary that the installer of LyX offers this. If you don't want to update as you are e.g. writing an important document, you can decline this. I implemented this feature as a dialog at the end of the installation process. I don't know if this is OK for silent installations. Can you please have a look how this can be improved?

- support for eLyXer

- support to detect
  - text editors (will update this routine)
  - an SVG editor (currently only ImageMagick)
  - an image editor

- register also *.lyx14 and *.lyx13 to LyX if the user agreed to link *.lyx to 
the new LyX version.

- created 2 different nsi-files. This way you can simply execute the lyx-bundle.nsi file and get a ready to use bundle installer. (No need to edit an NSIS file.)

(-you can ignore my path changes insettings.nsh, I'm to lazy to remove them 
(they went in accidentally))

-----

Some questions:

- why do you use a file list for things like the fonts? They are all in LyX's Resources folder like the layout files and scripts. Moreover, you missed 2 fonts in your list. Also for python and Ghostscript there is no list necessary because we can file the whole folder recursively.

- why do you use special versions of Python and Ghostscript? This makes it hard for other to build the installer and I don't see why this is necessary. It is also harder to keep them up to date. I built an installer where I used the official versions of the latest IM, Python 2.7.1 and GS 9.0.2. They work fine here on my two test PCs - one with GS and Python pre-installed, one without them.

- you don't have the LyXLauncher in your dependency package. Can you please add 
it.

----

Some generalities:

- the idea is to provide an installer that can be used by every developer if he has NSIS installed. He can then call the lyx.nsi file and get a ready to use installer. Everything should be possible withing the checked-out SVN folders. I therefore want to put your dependency package also to SVN.

- there should be 2 installer versions:
1. a bundle release that comes with MiKTeX, JabRef and GSview (maybe we can kick-out GSview but that's another discussion)
 2. a standard version that only installs LyX (no MiKTeX, Jabref, etc.)

- MiKTeX should not be downloaded. Bundling it has the advantage that the user can download one installer package and install it offline. He can then start to work with LyX without the need to go to the Internet again. The latest MiKTeX installer has the most important packages installed and the missing journal-paper LaTeX-packages and class files don't harm. Once a user from Iceland called my attention to this point. And also at my South America trip I saw how many people have to work due to the loss of private broadband connections: go to an Internet café with broadband connection, download the program, put it onto a USB stick, go home and install the program Users that only want to upgrade LyX, don't need to take care about MiKTeX and Co because they are already installed. For these users we have the standard installer.

------

TODO-list:

- fix that metafile2eps is not automatically uninstalled since other installed LyX versions need it. (I plan to use the same method as for MiKTeX and Co.)

- decrease the installer size by not shipping every exotic spell checker language file. I plan to ship only the English files by default. Others can be installed from the Web. A normal user only needs 1 language (and not 113 as we currently ship) and downloading/installing it doesn't require a broadband connection. The installation of these files need also be changed because all future LyX versions will use them. So we should do the same as for Aspel: install them so as they don't need to be installed/uninstalled for every new LyX release. They will be installed as standalone program. If you later really need to update your dictionary, you can download the latest version from the net and put it in hunspell's installation folder.

- make the installation of JabRef silent

- kick out support for GSview if necessary (has a different license than the GPL and thus cannot be installed silently because its license requires to accept it).

- the installer code contains now unused functions. I will remove them bit by bit. For example I currently still check if a ghostscript version is installed.

- sanitize the python problem: http://www.lyx.org/trac/ticket/7562 (don't know 
yet what the problem is)


---------------

So please give it a try. The best is to see it in action. In case you cannot build it, I uploaded a test version here:
http://download.berlios.de/lyxwininstall/LyX-200-4-Bundle.exe

Please ask  me if you don't know why I did a change or have any question!

regards Uwe

Reply via email to