I found a discussion where a user was not happy because he thought
that Mifos installation process is quite tricky even though the whole
installation process is always document step by step with its release.
It made me think that windows users are usually comfort loving people,
if they want to try a software then they just want an Intelligent
Installer (exe) that can predict the system and walk them through the
installation (hand holding) by asking "yes or no" kinna stuff at the
end of installation they want a desktop shortcut which they always use
to run the application by hardly caring about other configurations. I
know that Linux users do not hesitate to refer to the
manual/documentation for troubleshooting and they somehow figure out
things. I don't want people to get wrong impression about Mifos just
cause they think its hard to install.
This is an very interesting problem statement. I would like to
takeover the project for "Mifos Windows Installer" and I will try to
finish it before release of Mifos 1.4, given that I also have higher
priority work related to Mifos.
I was trying to understand which platform would be best for this purpose.
On page http://www.mifos.org/developers/wiki/WindowsInstaller NSIS is suggested.
(-) Windows specific installation creation platform
(+) has maven plugin
I have seen mostly IzPack for various java based projects (but not web
apps in my knowledge)
(+) Crossplatform installer builder
(+) has maven plugin
I found that projects like OpenMRS and OpenBravo uses BitRock Installer.
http://wiki.openbravo.com/wiki/Projects/Bitrock_Installers/Technical_Documentation
http://openmrs.org/wiki/Building_the_OpenMRS_Windows_Installer
(+) Crossplatform installer builder
(-) Does not has maven plugin but there is examples to use it with maven
http://blog.bitrock.com/2009/11/how-to-integrate-installbuilder-with.html
(/) Though its a commercial product it provides free license to
opensource projects.
http://installbuilder.bitrock.com/open-source-licenses.html
In my personal opinion I would choose BitRock.
Please feel free to give suggestion/comments/argument, I appreciate
all kinds of help. :)
Cheers,
Udai
------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
trial. Simplify your report design, integration and deployment - and focus on
what you do best, core application coding. Discover what's new with
Crystal Reports now. http://p.sf.net/sfu/bobj-july
1. Install MySQL, create a database, create a couple of users and
grant permissions to the created database.
2. Download the application.
3. Run the application and follow the instructions.
Among NSIS/IzPack/BitRock I am still not sure which one I am going to
use. I agree not being OSS a issues, I just leaned toward because
BitRock seems to me quite convenient to use.
I just want to create a windows installer, don't have any plan for
.deb and .rpm right now. A cross platform framework should be able to
take care of that (I will know when I will start).
Now, the work flow for installation which I have in mind is something
like this. This is something which I was trying with BitRock, for
IzPack you need JRE already installed.
Mifos-complete-Installer.exe (definitely more then 200MB) (onclick install.)
It will install all the required things under a given
folder(specified by user), only
Mifos (scripts will have variables configuration relatively
under this folder)
- tomcat (already configured, no need to ask for any parameter)
- jre
- mysql(non-install mysql) (already configured, no need to
ask for any parameter)
- a browser (firefox)
Mifos-slim-Installer.exe (probably 70-80 MB)
1. Install JRE6
first detect using environment variable. (JRE_HOME, JAVA_HOME)
then default installation location. (Program Files/Java/jre6)
if not found then ask for the jre folder to user and suggest
him to download JRE.
2. Ask for mysql parameters (Setup database)
mysql root password, host, port (Require MySQL already
installed and running,)
detect mysql (including version 5.1) and report error
mifos_database name
mifos_database user name
mifos_database user password
run mifos database scripts
3. Detect Tomcat 6
first detect using environment variable. (CATALINA_HOME)
then default installation location. (Program Files/Apa.../Tomcat 6.0)
Ask for tomcat configurations. (admin, manager, port)
Create a control script for start/stop of tomcat and use
configuration files (server.xml)
4. Create shortcuts etc
These are just draft and nothing is fixed yet.
Any thoughts?
Udai
Udai,
I believe this is one of the prototype installer builds done with IzPack if you want to take a look - ftp://test.mifos.org/Installer/mifos-installer-04182008/MifosApplicationInstaller-18042008/.
Also, there were a few of discussion threads regarding a Windows installer in 2008:
regards,
Jeff
Please scour the archives and wiki for historical discussion on
installers and the different installer builders available. We worked
hard to make sure all these lessons learned are public and permanent!
> NSIS / IzPack are definitely both popular. I've never heard of
> BitRock, and it's non-OSS nature could be an issue?
Yes, that's an issue. :)
BitRock has offered free licenses, but I would prefer a completely FLOSS
solution, since some are available and apparently work fine.
> All that such a thing really needs to do is to: package up the mifos
> WAR, include a container (Tomcat/Jetty?) and probably some default
> configuration into an archive, build a Windows Service, a Start Menu &
> Uninstall entry, and wrap a useless ;) Next>> / Next>> EXE which makes
> people feel comfortable around it all... that's bascially the "use
> case" for this, I think (having done this before for in-house stuff).
> For *NIX, it's not so much a Windows-like Next>> / Next>> thing, but
> "packages" (*.deb & *.rpm) that are probably of interest? I don't
> know if NSIS / IzPack / BitRock can do those now?
Not sure, but even if they can I think the possibility of creating
an .rpm or .deb that conforms to Fedora's or Debian's packaging
guidelines is remote. Not that that should stop us (we can host our own
repository, for instance), just something to keep in mind.
I'm forgetting exactly why we abandoned the IzPack installer spike... I
think the code needed quite a bit more work before it was ready to be
integrated into the trunk.
With whatever installer/wizard we end up implementing, ease of
maintenance should be a primary concern.
> The fun & more intersting part is how to deal with the DB of course.
> Ideally, one could use a default set-up with an included pure Java
> in-memory DB (e.g. hsqldb, or "Java DB" which is Derby and included in
> JDK v6), BUT that's overhead for dev, testing & maintenance... so I
> would NOT actually suggest that.
Yep, lots of MySQL-specific code in Mifos right now.
> What I WOULD suggest is mandatory for such a project / set-up though
> is at a minimum an at least simple web-based Mifos "post-installation
> system configuration page", if you know what I mean? Use Case:
> Download & run this installer (whatever platform). Point your browser
> to http://localhost:6789/ - and see a page (with no authentication,
> yet) where you can change the port, configure connection to your
> mysql, may be push the DDL into the mysql, choose an administrative
> password, ... without that, you have an installer but users still need
> to fiddle with Tomcat server.xml internals - why should they have to?
> Consider it a black box. Re. implementation of this, of course it's
> outside the WAR (unless you deal with the DataSource yourself; why
> not?), but what you can do is hack a little something that e.g. reads
> & rewrites the server.xml for the port and then restarts the
> container... from the WAR. Unconventional may be, but works and leads
> to great user satisfaction (from experience).
Yes, I really like this idea too. A "first run" helper/wizard works well
for Wordpress. Another interesting project is OpenMRS: they have a
database wizard/connection creation helper written using a Java stack
that we looked at a while back but never spent time to try integrating
with our code.
> BTW: One interesting "side effect" when deploying this approach is
> that you can "pre-package" correct performance settings much more
> easily. For example, developers may know that for a production system
> you should e.g. switch off JSP hot-reloading (it is, or at least used
> to, surprisingly expensive) - now that you "control" the black box you
> can include the desired web container configuration and launch
> scripts.
Totally.
> Lastly, have you guys seen how recent versions of Hudson do this? On
> http://wiki.hudson-ci.org/display/HUDSON/Meet+Hudson there is a Java
> Web Start launcher... click https://hudson.dev.java.net/hudson.jnlp
> and go to http://localhost:8080/ - it probably cannot get any easier
> than that? And then somewhere in it's System Config. menu there is
> this entry where with one more click you can have it install itself as
> a Windows Service (no more Java Web Start launcher stuff). Pretty
> cool, isn't it? On http://hudson-ci.org/ they also have *.deb & *.rpm
> packages now... The running code in the app seems to be ahead of some
> of the Wiki doc... ;-) may be worth looking more closely at Hudson
> code at how they do this?
Me too. I really like this idea.
Now, the work flow for installation which I have in mind is something
like this. This is something which I was trying with BitRock, for
IzPack you need JRE already installed.
Mifos-complete-Installer.exe (definitely more then 200MB) (onclick install.)
It will install all the required things under a given
folder(specified by user), only
Mifos (scripts will have variables configuration relatively
under this folder)
- tomcat (already configured, no need to ask for any parameter)
- jre
- mysql(non-install mysql) (already configured, no need to
ask for any parameter)
- a browser (firefox)
Mifos-slim-Installer.exe (probably 70-80 MB)
1. Install JRE6
first detect using environment variable. (JRE_HOME, JAVA_HOME)
then default installation location. (Program Files/Java/jre6)
if not found then ask for the jre folder to user and suggest
him to download JRE.
2. Ask for mysql parameters (Setup database)
mysql root password, host, port (Require MySQL already
installed and running,)
detect mysql (including version 5.1) and report error
mifos_database name
mifos_database user name
mifos_database user password
run mifos database scripts
3. Detect Tomcat 6
first detect using environment variable. (CATALINA_HOME)
then default installation location. (Program Files/Apa.../Tomcat 6.0)
Ask for tomcat configurations. (admin, manager, port)
Create a control script for start/stop of tomcat and use
configuration files (server.xml)
First of all I would like to mention again as I mentioned in my first
mail to this thread that "Mifos Installer" is not a high priority
project as compared to other tasks in Mifos (bugs and features), The
drafts were quite rough a draw and not given so much thought. Also Its
my mistake that I missed out the work that has already been done in
this direction.
Yes, there are lots of other cool stuff that can be done including
configuration from web page, but I am just concern about windows(exe)
standalone installer.
- IzPack framework for standalone installer. Already there has been
some work done with this framework for mifos installer and maven
plugin for IzPack will be handy.
- Only one installer should be there for a platform
- No need to include any software, just do the configuration which
most people find hard to follow in documentation.
mifos-installer (limiting the scope)
User will have to install JRE and Tomcat before running the installer,
and should have root access to a MySQL database.
- Detect JRE, if not found ask for folder, if NO folder then exit.
- Detect tomcat, if not found ask for folder, if NO folder then exit.
- Ask for tomcat configuration parameters. You can run tomcat with
mifos configuration files it doesn't required to ship Tomcat with
mifos (eg Eclipse Tomcat configuration)
- Copy mifos.war to webapp
- Ask MySQL connection parameters and validate connection then
create mifos user/database.
- Write configurations and create shortcuts
For this we need
- IzPack configuration files for mifos install.
- mavenized module which will manage it.
I will post more detail in future about the progress, right now I am
not sure how much time I will be able to give this project.
Thanks you all for taking time to post your views.
Cheers,
> If you don't mind me saying, that would be a no go for IzPack IMHO...
I was thinking that too. I think JRE has to be there, this should be
prerequisite for this software installer.
> BUT I thought there are ways around this, I just looked into it a bit; check out
> these
> links: http://izpack.org/documentation/izpack-utils.html, http://www.6footplus.com/home/show/219, http://jira.codehaus.org/browse/IZPACK-174
> & http://launch4j.sourceforge.net/ (some posters on the izpack mailing list
> stated that they prefer launch4j over the izpack2exe). The basic idea seems
> to be to create a ZIP with a JRE in it, and then have some mini
> launcher (existing, read pages) which kicks off something which can then
> kick off the izpack JAR... that kind of idea, from what a gathered (only
> read it briefly).
Cool, but I don't want worry about user not be able to install JRE
because in that case the all kinds installer won't be any help anyway
;-)
> Agreed for Mifos/Tomcat/JRE (above), disagree for mysql (I thought there was
> some mysql license issue, what was the deal with that again? or has that
> gone away recently?), and disagree for browser (why?? it only bloats up the
> installer, and is the one piece that most users will already be familiar
> with / know about how to install / already have - or have & use IE if they
> don't know/care about FF).
Yup, mysql licence is a issue (GNU-GPL),
I agree, no browser. (sorry I added that, it was just out of line)
It should be mostly for a configuration helper installer Not something
which will include JRE/Tomcat/Mysql
Thanks,