MSI installer for KDE4

Pau Garcia i Quiles pgquiles at elpauer.org
Thu Aug 21 16:17:14 CEST 2008


Quoting Jaroslaw Staniek <js at iidea.pl>:

> Pau Garcia i Quiles said the following, On 2008-08-21 13:40:
>
>> Quoting "Aaron J. Seigo" <aseigo at kde.org>:
>>
>>> Hello Hamed ...
>>>
>>> On Thursday 21 August 2008, you wrote:
>>>> Is (or will be) there any MSI installer for kde4 on windows?
>>> I really don't know, but I'm CC'ing the kde-windows team because
>>> they probably
>>> *do* know ;)
>>
>> This is something I'd like to see. There was some chatting about this
>> at  aKademy and I was reading more about side-by-side assemblies
>> before writing but here comes a "mind --dump".
>>
>
> Hi,
> "Two" notes for the start, I mentioned them at Akademy:
>
>> Not MSI installers necessarily, but standalone application installers
>> which only contain the application binaries and, maybe, some specific
>> dependencies.
>
> Please note that we have much more modular packaging than this. E.g.
> applications are so often only bootstraps for real code, e.g. can be 20KB
> large as just contains main() function

I don't understand what you mean

> We do not link statically nor bundle graphical resources with every app

I'm not proposing that. Icons, graphics, languages, etc would be part  
of the redistributable packages (kdelibs 4.1, kdepimlibs 4.1, etc)

> . I'll
> try to explain this a bit more below.
>
>> I think what we should do is have redistributable kdelibs, kdepimlibs,
>> etc binary packages mimicking the Visual C++ Redistributable Packages
>> Microsoft makes available for Visual C++. Using side-by-side
>> assemblies (SxS, http://msdn.microsoft.com/en-us/library/aa376307.aspx
>> ), these libraries would be shared by all KDE applications and thanks
>> to the versioning capabilities SxS provides, it would even be possible
>> to have KDE 4.1 and KDE 4.2 applications (for instance, Parley from
>> 4.2 and Kate for 4.1) without kdelibs 4.1 and 4.2 clashing.
>
> Someone would need to make research how this could compatible with mingw
> binaries, and how msvc and mingw binaries can live side-by-side. And whether
> anything like this could be built without need for installing msvc. Also note
> that people want to use cross-compilaton on Linux.

AFAIK SxS is not supported by MingW.

MSVC2005 allegedly works under wine, although that is not the ideal solution.

>
>> How would this work (at least in my mind :-) ? You would only download
>> an application and the installer (NSIS, MSI or whatever it uses) would
>> look for the libraries it needs.
>>
>> Take, for instance, KWord. The KWord installer would only contain the
>> KWord binaries and 3rd party dependencies specific to KWord. When the
>> installer is started, it would look for KDElibs 4.1 (or 4.2, I don't
>> know then KWord plans to release) and KOfficeLibs 2.0. If KDElibs 4.1
>> and/or KOfficeLibs 2.0 are not found, it would tell you it needs the
>> "KDElibs 4.1 redistributable package", exactly the same way
>> applications compiled with Visual C++ 2005 and 2008 do now if you are
>> on Windows 2000 or XP.
>
> I wonder how asking the user to find deps by hand is better. It may be
> "familiar" but not better, just like crappy old car may seem to be "familiar"
> just for one week before you get accustomed with a shiny "unfamiliar" one :)

Given that how many people are using Windows, it looks like "familiar"  
means actually "better" for many people.

>  > It could even offer you to download and install
>> the package for you. This "KDElibs 4.1 redistributable package" would
>> then contain KDElibs 4.1 and its 3rd party dependencies.
>
> Could you please explain how this is different (except naming) than   
> the KDE on Windows installer?

Totally different

What you would have downloaded is a single application (KWord)  
installer which contains the application binaries, as opposed to  
generic installer which bundles nothing (the current KDE on Windows  
installer).

In case you are offline, you would install the KDElibs redistributable  
package and the KOfficeLibs redistributable package yourself, then  
KWord. With the current WinKDE installer, you would need to mirror the  
WinKDE repository, then tell the installer the location.

Offline installations would be as easy as dropping three files  
(kdelibs4.1_redist_x86.exe, kofficelibs2.0_redist_x86 and  
kword_2.0.exe) in one folder, then the user double clicks on  
kword_2.0.exe and he's done.

> In fact features needed to achieve all this, are part of the installer, so
> perhaps what you request is to distribute parts of installers linked into the
> individual setup.exe files? I would be very interested to see a small
> bootstrap files that initiate dowloading of apps with dependencies, so only
> the files can be put in places like softpedia.com.

I don't really understand what you mean with linking or bootstrapping :-?

> The files can be like KLIK
> packages (http://klik.atekon.de/) bound to a given protocol in your   
> browser so
> no need to use .exe files for that (the disadvantage is a need for performing
> one-time install of a KLIK-like protocol, what's of course not unfamiliar for
> the userbase since e.g. bittorrent clients use the same approach).

KLIK bundles the application and all its libraries and resources in a  
single package, it does not share libraries or resources. By using SxS  
we would save that, as applications needing the same libraries and  
resources would share them.

> Let's note that MS has redistributable packages that most often do _not_
> depend on other redistributable packages, perhaps because are linked so
> heavily that do not contain the dependencies.

I would say they do not depend on other redistributable packages  
because they are "low-level" stuff, thus few possible "levels of  
dependency" are present.

> At most there are two levels of
> dependency, but I cannot even remember such case. It's the rule in MS and
> expected in most closed source offerings, and natiral that you have greater
> control over packages if there are no external dependencies you do not 100%
> cotnrol.

Unfortunately with KDE we have lots of dependencies, so we are out of  
this scenario.

> Even more, e.g. MS Office apps have been using their own (not the one coming
> from the OS) graphical layers/widget systems and who even knows   
> this? I cannot
> see people running away scared from shops because of this :)

This is because the MS Office division is usually one step ahead of  
the systems (programming languages) division in regards to widgets and  
libraries. For instance: the ribbon UI was invented in Office, so  
there were no libraries coming from the VC++ people they could rely  
on, that's why it was necessary for them to bundle the UI libraries  
with Office.

> We can bundle almost everything with individual packages but in turn the
> packages would be big and their contents would be most likely redundant.

No need for this. What I propose is to bundle kdelibs, resources  
needed by kdelibs and 3rd party libraries needed by kdelibs in the  
kdelibs redistributable package. Same for kdepimlibs and kofficelibs.

kdelibs redistributable package = kdelibs binaries + kdelibs resources  
+ 3rd party libraries needed by kdelibs

We would then have standalone installers for the applications, which  
would contain the application binaries and resources, and the 3rd  
party libraries specific to that application. Third party libraries  
used by several applications would go to the kdelibs redistributable  
package (or kdepimlibs redist package, or kofficelibs redist package).

> Note that closed source offerings even have self-contained binary blobs for
> graphics used in the apps, most usually compiled as windows resources, less
> likely kept as separate files. We have shared graphical resources. This shows
> the differences, that of course are here because of our much more open
> development model.

As I said before, they would be in the redistributable package, not in  
the application installer.

> That said I remember many cases when I needed to quickly fix something,
> possibly on customer's end-user machine where only final release of KDE
> packages were installed. I was able to manipulate/upgrade/fix things _only_
> using the filesystem tools, since
> 1) the installation is fully-file-based, resources, settings, plugins are all
> shared, and kept in stuctured dirs, outside of the Windows Registry, and in
> most cases dealing with UIDs is not needed
> 2) the knowledge how to deal with things are this level already come from
> experience of using Unix environments; there are only minor differences like
> names of the library files.
> That would not be possible or easy if the bianries were not well shared.

Certainly but IMHO being able to "hack" the installation is less  
important than having intuitive and familiar installers.

>
>> My point is the current installer works very well because it resolves
>> dependencies and installs everything but it's not what a Windows user
>> is used to and IIRC,
>
> i.e. is it too well designed, so they are scared? Could you provide any
> rational reasons?

Too many options

When you want to install, say, Amarok, it automagically selects  
dependencies, which immediately creates a "WTF is going on!?" feeling  
into the user.

One easy way to improve this would be to have "fake standalone  
installers": you download a small amarok_online_installer.exe, then it  
shows you the Amarok logo, inspects your system and:
- internally the installer "thinks": "uh oh, this guy is not using  
KDE, I'll need to download the whole Internet and more", and goes for it
- the installer shows a friendly message to the user: "The installer  
is going to donwload Amarok from the Internet. This operation may take  
a few minutes, or considerably longer depending on your Internet  
connection" (this Windows message makes me laugh every time I read it  
:-)

It's still different from what I propose because this "fake standalone  
installer" would download everything (it does not contain the Amarok  
binaries) and I'm not sure it would allow coexistence of applications  
from two KDE versions (for instance, 4.1 and 4.2) without squashing  
the 4.1 libraries with the 4.2 ones. Yes, binary compatibility and  
all, but that means that, for instance, KDevelop would automagically  
have some new option I don't want/like/need just because Kate got  
updated.

> Perhaps you propose better defaults or/and installation profiles like distros
> already do (e.g. minimal installation, office, full...)?

It's not what I'm proposing and I don't really like that. I have not  
made any survey but I think people usually want to install a  
particular application, not a "minimal installation" or an "office  
installation" which may or may not contain the application they want.

>
> The installed for sure does not install "everything", at least IIRC.

I never said it installs everything

> I believe
> we do assume that there's just good balance between installing minimal set of
> depenencies (that allows you to add new applications easier), and   
> full install
> (aimed at developers which OTOH makes your kde directories heavier).
>

How is this related to my redistributable packages proposal? :-?

>> offline installations need you to essentially
>> mirror the WinKDE repository and tell the WinKDE installer where the
>> mirror is (not exactly intuitive for the average Windows user).
>
> CD/DVD/FS medium could be picked as the installation source. E.g. we could
> have separate DVD with simply few-click installation process. User would not
> be asked about settings if not really necessary. It's a good design prectices
> in for any app.

Why would I want to mirror the WinKDE repository, wasting space and  
providing an intricate directory hierarchy when I can do something as  
simple as dropping kde4.1_redist_x86.exe and parley_4.1.exe in a folder?

>> Summarizing, what I propose is:
>> * Have redistributable packages for kdelibs, kdepimlibs and
>> kofficelibs, each one of them including its third-party dependencies
>> * Use side-by-side assemblies and make kdelibs, kdepimlibs and
>> kofficelibs be shared assemblies
>> * Standalone installers for applications, including the application
>> and the 3rd party dependencies specific to that application
>
> Perhaps you have issues with the GUI of the installer, in terms of usability
> (then such improvements can be made as the installer is very actively
> maintained - and kudos for this to the Team!), not about the whole idea which
> is exactly the same now, you only use different names (or paths) for the same
> things.

I think the installer is very good but not perfect. IMHO, the more we  
mimic the way users are familiar with to install applications, the  
more users we will have.

> Finally, would you be interested to take part in the development process of
> KDE on Windows?

Of course. I have some notes I took at aKademy and will be sending a  
couple of e-mails, probably tomorrow.

WRT the redistributable libraries and the standalone installers, it is  
a considerable effort, so I will not pursue that path unless there is  
general agreement this is the way to go. Even if this agreement is  
reached, I'm pretty busy with another application until mid-September.

-- 
Pau Garcia i Quiles
http://www.elpauer.org
(Due to my workload, I may need 10 days to answer)



More information about the Kde-windows mailing list