MSI installer for KDE4

Jaroslaw Staniek js at iidea.pl
Thu Aug 21 15:19:51 CEST 2008


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.
We do not link statically nor bundle graphical resources with every app. 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.

> 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 :)

 > 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?
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. 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).

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. 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.
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 :)

We can bundle almost everything with individual packages but in turn the 
packages would be big and their contents would be most likely redundant.
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.

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.

> 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?

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

The installed for sure does not install "everything", at least IIRC. 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).

> 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.

> 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.

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

-- 
regards / pozdrawiam, Jaroslaw Staniek
  Sponsored by OpenOffice Polska (http://www.openoffice.com.pl/en) to work on
  Kexi & KOffice (http://www.kexi.pl/en, http://www.koffice.org/kexi)
  KDE Libraries for MS Windows (http://windows.kde.org)


More information about the Kde-windows mailing list