This is not solely an installer issue.
Actually, it is.
...
I am not talking about 'make'ing FPC --it's an entirely different issue --'make' cannot deal with paths with spaces in them. That is known.
But, once FPC is 'make'd, there is no reason to keep to 'no paths with spaces' rule.
The installer, can --therefore-- relocate the necessary binaries from FPC to, say, 'C:\Program Files\FPC' and re-adjust its config files etc.
fpc yes, if you want it as separate installation (it comes pre-compiled anyway).
Lazarus: no => because installation/deinstallation of packages require to recompile the IDE.
(packages: as in lnet, synapse, or the ones that come with Lazarus)
Lazarus depends on fpc, and fpc depends on other tools (like winres). And some of them (afaik winres) do not work, if there a spaces in the folder name.
Well.. it will to be made to work then, won't it?
you need to talk to 3rd party then => the team maintaining winres needs to accept your patch (or the fpc team needs to maintain a separate version for a life time, and merge all fixes and extensions all the time....)
And for someone who never recompiles lazarus (e.g. never changes installed packages) it would be no problem to have spaces in lazarus folder name. But if you recompile lazarus, or install packages....
It just does not feel right for an opensource project to have to be downloaded in binary form every time you need to upgrade --or experiment..
Really? I use a lot of opensource: VLC, VirtualBox, WinMerge, ... they all come as binary package => and I am truly glad they do.
If I want to contribute, the have a repository, and I can download and compile => but without installer
That seems to me a very common opensource thing.
On Linux, some of them come as source, and compile during installation (e.g mysql on freebsd).
But if I want to contribute, I still need to setup a special work environment, and no installer for that.
Haven't tried, but ok
(see below: multiply laz installation on one box [1])
I did. And, it's very frustrating.
Ok, that comes down to:
-installer should ask for install path => I did mention
- You need to find a solution for how to get each installation to use a different config file (on window you can put it into the desktop shortcut, but run into trouble as soon as the user starts the IDE without the shortcut. (not an installer problem, but needs to be solved for this)
Mixing various installations of Lazarus with various installations of free pascal, is (on top of the above) only a question of configuring lazarus correct => an expert user choice, definetly not an installer choice. (because you will get issues with ppu files not being suited for the different fpc version...)
That's why to me, there is a limited need for separate fpc and Lazarus installer => that is for expert users.
The installer should deliver what the average user needs => a working setup. And that does work very well with a combined install.
Lazarus does not put anything in the registry.
Well, IMO, it should.
It's cross platform => linux aint having no registry
If it will have a proper uninstaller under Windows, I think it should.
I never trie to uninstall => but under windows there is an uninstall entry in the control panel/programs stuff. So I guess it will at least delete the program dir?
As for user options: Most applications I know, either leave them in place, are ask the user.
Yes. It needs to be optional.
If they were always deleted, then most software, if updated would loose all settings.
And, there are times you might want just that.
hence I listed it in the summary
Installing one out of a chosen list:
That would not be a question of improving the installer, that would be a question of providing the different packages.
By 'packages' do you mean a zip file with sources-only?
In this context, different installer packages (e.g with/without sources)
However I don't think sources should be optional => I don't really see the need for more installers ... but it's an opinion only
(optional stuff is on lazarus-ccr)
If so, I haven't come across one.
The current installer could do that.
Frankly, I find the current installer far too fat.
I'd prefer to download a small webinstaller that pulls the parts (versions of Lazarus and/or FPC) from the web in a source zip file and installs them locally.
Same amount of dwnload in the end (unless there were optional parts...
Actually more download, if you install on more than one box
The problem on windows is, that (and that is not an issue of the installer, that holds true, even if you put everything together by hand):
If you use more than one version of lazarus, then each one *must* have it's own config dir (unless you know very exactly why you do not want this) => because at latest when you change the installed packages for one installation, it screws up the other installs => but also if they use diff version of fpc....
And, a proper installer can take care of all of these.
How? Yes for the shortcut on the desktop / in the start men. But how, if I the user goes to the install dir (e.d to start lazarus.old.exe after adding a package failed, and the new lazarus doesn't start anymore?
How can the installer change, that you must give a command line param to lazarus, and that on windows you can not do that, if you start the exe directly (no shortcut, no batch)
How can the installer fix this; how can it change the abilities of windows or the lazarus exe?
But the only way on windows to start lazarus with a diff config dir, is by using a shortcut (so you can give command-line param) [ok, or by batch or by hand from cmd line]
Nope. The installer could put each different version of Lazarus under a different sub-directory, such as:
C:\Program Files\Lazarus\x.x.xx\
It is about the config dir.
the lazarus.exe decides where it expects it => if the installer put's it elsewhere, Lazarus will not find it, and create a new one.
The installe can not fix that => you must extend lazarus itself for this
Therefore if a user has multiply installs, goes directly to the install dir, and clicks the exe there (or start lazarus.new.exe or lazarus.old.exe) => thinks are likely to go wrong.
You're assuming the 'install dir' to be pre-determined. But, it should not be; it should be user selectable/definable. I mean, I should be able to place it wherever I like, such as the above, or
No I did not assume this. My above concerns where in case even if the install dir is change able.
The config does not reside in the install dir => and lazarus must be able to find it.
Having multiply Lazarus installations is currently an expert option, and this is not an issue of the installer (it will be an installer issue, if and only if all the above is solved)
I know it is an 'expert option' --i.e. you become an 'expert' if you spend hours getting it right; and then scared to touch it again
And in a way it is good you become an expert, because if the installer just gives it to you, and you don't know all the rules that needs to be known for that scenario, then you break what the installer gave you.
So yes => you could create an installer that does set this up => but it leaves you with equal problems, you will just notice a little bit later.
You need to make lazarus itself save to deal with such setups => e.g regognizing if one lazarus is invoked with the config of another... it's possible, but in lazarus, not in the installer.
**********************
And the only valid example for the normal user needing more than one installation was 32 vs 64 bit
Better to make one installation do be able to cross compile, and serve both targets.
The normal end user should not need more than one installation => If he does need it, then nly because something is missing somewhere else.
**********************
And, the last thing I want to be an 'expert' on is one of these useless skills. It simply has to be done by the installer for all --including the 'expert's..
"bit" and "dot" ?
32-bit..64-bit
see above => it means you need a cross compile within a single setup
0.9.27..0.9.29
Why do you need this, if all you want to do is to compile your own app?
Does it? On windows?
(Honest question, I don't know, despite all warnings I always work as admin. to much hassle with other apps, and with windows itself.
Of course, it is.
FPC/Lazarus should think beyond a single-user working on a personally owned boxes. In the corp environment, there are policy rules; and one of them is not to litter root folder.
back to choosable install path
back to space in path issue.
solve them, and this is solved too => so it is a repeat (or just a reason, not a new feature)
The first one is used (at least with current lazarus), not sure what you want?
Fpc has only fpc.cfg as config, but on windows, this should never be needed to be changed (not for the average user anyway)
Under Windows, Lazarus considers FPC as an integral part of itself --which, in reality it isn't.
I am an average user (or, I'd like to be) and I would like to be able to install different versions of FPC in order to try to see how a newer version behaves.
Problem:
all the ppu for the LCL (which all your apps work) => they only work with the EXACT fpc that they came with.
Install another fpc => you must recompile them all
switch back to the original fpc => recompile again
hence=> this is an expert option
--------------
I cut the rest => it's alll nice reasons why you want to have the above....
But it comes down, solve the problems why the above is not yet there:
- spaces in path (must be fixed and committed to 3rd party tool)
- not mixing config dirs (how to give a cmd line param do an exe, if it isn't called via shortcut)
- lazarus detect and warn, if it is started in such a way, that it uses the config of another install
- ppu files only work with one fpc version => if you chnage the fpc version used by an installation of lazarus, then they do no longer work
I hope I didn't leave anything out.
Once that is fixed, then an installer with all the options becomes use-able