← Back to team overview

bzr-windows team mailing list archive

Re: [RFI] Windows packaging/installers

 

On Thu, Aug 6, 2009 at 2:24 AM, Ian
Clatworthy<ian.clatworthy@xxxxxxxxxxxxx> wrote:
> Hi and welcome to the Bazaar Windows mailing list!
>
> To get the ball rolling, I'd like to hear everyone's thoughts on how
> Bazaar ought to be packaged on Windows. I think we should start by
> thinking about an ideal outcome. We can worry about reality - installer
> size, toolset + compilers, time remaining until 2.0 ships - after we
> have some agreement about what we're aiming for.
>
> Here are some "degrees of freedom" to consider:
>
> * OS version: XP vs Vista vs 7 vs 2003, etc.
> * 32 vs 64 bit

I assume this is about which versions to support installation on. If
that's the case, here's my opinion:

- We should support installation in all releases from XP to 7, but not
on anything older than that, like 2000 or 95.
- We should probably start making NTFS a requirement, since there are
filesystem operations that only work on NTFS and not on FAT32 and
older which we could benefit from. In a couple years we could drop
support for XP and 2003 and start benefiting from the transactional
filesystem support that exists in Vista and newer to make certain
operations cheaper (this is already exposed in pywin32, AFAICT).

> * multiple languages

Multiple installer languages only or i18n of error messages is also a
goal? I suspect that if we deliver only the first, it would be
reasonably fine as most projects seem to do the same.

> * different audiences: gui vs command line as preferred interface
> * bundled documentation format: Windows Help vs HTML vs PDF

At Enfold Systems, we used to build and bundle the versions from a
single source (ReST). Building Windows Help from HTML is reasonably
easy and gives pretty good results. Built-in search is good enough,
and you can create hierarchies of topics and index of words reasonably
easily.

Using the same source for PDF proved to be suboptimal, specially
because there are different expectations for a PDF than the other two
formats. Generally the PDF version looked a lot less polished and very
few people seemed to use it. Scaling images such that they looked nice
on the PDF had a lot to do with this. We ended up dropping the PDF
version.

> * admin rights: some users will have them and others may not

This is a biggie. Installing inside the Users folder instead of
system-wide should work just fine for pretty much everything except
TortoiseBZR. If we make TortoiseBZR a separate or optional install,
then a non-admin install will certainly be possible.

I particularly like the way installing Chrome on Windows works, it
feels like a really nice experience. The only complaint I have there
is that it doesn't even ask you whether you want to install
system-wide, so there's a surprise when you switch accounts and you
have to install Chrome again.

> * bundled python vs not

+1 for bundled.

> * cygwin vs standard shell

cygwin should have their own package of bzr, like Martin says.

> Also, what do we bundle vs install separately:
>
> * plugins?
> * GUI apps: TortoiseBzr, Explorer or both?
> * 3rd-party tools? (e.g. for ssh, 3-way GUI merging, etc.)

There needs to be a balance of which things get included, but it also
should be trivial to get add-ons. I generally prefer the 'net
installer' approach, like Cygwin and MikTEX, which give you an a
chance to pick other options that are not bundled and then perform the
download for you.

Most applications seem to be moving to this approach. Most notably,
all recent Microsoft software gives you the option of downloading a
>1Mb bootstrap installer that lets you pick some options then fetches
and installs only the software you choose. They also give you an
option to download a full, 'offline installer' which is generally way
bigger and includes everything and the kitchen sink.

In terms of Bazaar and the options outlined here this could be translated as:

== Net Installer ==

This is the default option, prominently displayed, easy to get. This
could be seen as option (d) in your list.

- A small, bootstrap installer that may include only bzr-core
- Once this installer is started, it detects if you have Python
installed system-wide (easy: query the registry)
- Optional software is presented. If the user has Python and doesn't
choose optional software, just install bzr-core into the existing
Python and be done with it.
- If Python is not installed system-wide, a checkbox to install Python
is added to the options, and its greyed-out, such that you cannot
unselect it. This fetches the official Python MSI and installs it in
silent mode with the default options.
- For all the other options selected, a separate installer is
downloaded and run in silent mode with default options.

I am pretty confident we could reuse most of the infrastructure from
AppUpdater [1] to create this installer. Specially since it's written
in Python.

== Offline Installer ==

This is an alternative installer that is not prominently displayed,
but if you look really close (maybe a footnote on the download page?)
you can find it. This is a bumped up version of option (c) in your
list.

- A big installer with everything and the kitchen sink
- Includes both 32 and x64 versions of all software and dependencies
- Every optional software and it's dependencies are separate
installers, which get installed in silent mode with default options.


[1] http://www.nabber.org/projects/appupdater/

-- Sidnei



Follow ups

References