[Mifos-developer] Mifos Windows Installer Project

136 views
Skip to first unread message

Udai Gupta

unread,
Nov 22, 2009, 5:01:43 AM11/22/09
to Developer
Hi,

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

El Jagg

unread,
Nov 22, 2009, 12:54:24 PM11/22/09
to Mifos software development
Hi,
I think that an application can be a success for some people and a turn off for others. The success and failure/turn off can be ease of use and installation though not in that exact order. I have looked at MIFOS and I think it is a very good application and I like it. But my biggest turn off is that it's not simple to install on a windows machine, at least I do not find it to be and as a result can't recommend it to my clients.
I am a Web developer and I primarily work with Joomla, Dreamweaver,Drupal and other CMS I am also very comfortable working with PHP. I have also work with XAMPP and WAMP both of which I think are brilliantly conceived applications. When I get a web based application and I can simply place it inside the (WWW or HTDOCS) folder and do the necessary data  base creation and watch the application install it make it so much fun to use and work with and I think that MIFOS can be like that as well.
I have downloaded and installed MYSQL for windows as well as TomCat and the JAVA JRE but when I looked at the documentation and the various folders for example  catalina_Home/webapps. I do not see this folder(Catalina_Home) so I assume that I should create it which I did but then I thought that why should I create such a folder and then move the "Webapps" into it and the "WebApps" folder is natively installed with the "JRE" application it just did not make any sense. In my opinion the documentation does not match what I see when I installed JRE and that also added to my turn offs. May be if I had a Linux Box things may be different but, for now, I do not so it's only windows for now. I have attached a screen shot.
Just providing a bit of feed back. Thank you for reading this.

--
Kind Regards
Omar McLeod  Information Technology Consultant

“What the superior man seeks is in himself; what the small man seeks is in others ” (Confucius)




-------------------------------------------------------
Internet e-mail Confidentiality Disclaimer:
-------------------------------------------------------
This Message and any attachments is intended solely for the addressee(s) and contains confidential, privileged and non-disclosable information. Please do not copy, distribute or forward this e-mail to anyone, unless authorized. If you are not the intended recipient of this message and/or have received this message in error, please notify the sender immediately by return e-mail and destroy/delete all copies of the e-mail.
MIFOS_Issue_1.png

Udai Gupta

unread,
Nov 22, 2009, 1:26:31 PM11/22/09
to Mifos software development
Hi El,

I got very much excited to see a mail criticizing the install documentation, but soon I realized that there was no problem there in the part you highlighted in the image. It clearly mention that CATALINA_HOME is an environment variable and you have to set it. (in the second line of highlighted part). It also states that what that environment variable means.

Its easier for someone having experience with tomcat configurations and settings to understand those statements, but its not too hard for a newbie also.

It happens to me also when I skip one of two lines to get to the point and  next lines stops making sense. In that condition I go back to scan that document again so that I do not miss important information.

Thanks for taking your time to give some input,

Udai

Michael Vorburger

unread,
Nov 23, 2009, 5:34:56 AM11/23/09
to Mifos software development
Hello,

NSIS / IzPack are definitely both popular.  I've never heard of BitRock, and it's non-OSS nature could be an issue?

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?

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.

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

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.

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?

Best regards,
Michael

_______________________
Michael Vorburger
http://www.vorburger.ch


Keith Pierce

unread,
Nov 23, 2009, 6:58:26 AM11/23/09
to Mifos software development
The first poster mentioned the ease of installing Drupal CMS, and it
might be worth looking at its very simple procedure
(http://drupal.org/node/628292), similar to what Michael describes.
Mifos is a little more complex in that it requires a Tomcat-like
server (Drupal is PHP-based and only requires an Apache server).
Getting as close to this would achieve the goals and have a better
chance of generating delighted customers.

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.

Udai Gupta

unread,
Nov 23, 2009, 8:52:54 AM11/23/09
to Mifos software development
Hi,

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 Gupta

unread,
Nov 23, 2009, 10:15:11 AM11/23/09
to Mifos software development

mifos-complete-installer (include everything) (One click install, no parameter asked)
mifos-slim-installer (more configuration, step by step)

Interestingly a year ago some work has been done in this direction using IzPack (I found documentation only)
http://www.mifos.org/developers/wiki/MifosInstaller
http://www.mifos.org/knowledge/resources/Mifos_ Installer.ppt
http://www.mifos.org/knowledge/resources/Documentation of Mifos Installer.doc

Jeff Brewster

unread,
Nov 23, 2009, 12:57:16 PM11/23/09
to Mifos software development

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:

http://tinyurl.com/yeq793w

http://tinyurl.com/ydk6qyp

http://tinyurl.com/y9w5s4d

http://tinyurl.com/yea4jok

 

regards,

Jeff

Adam Monsen

unread,
Nov 23, 2009, 2:23:47 PM11/23/09
to Mifos Developer Discussions
Great discussion, folks!

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.

signature.asc

Michael Vorburger

unread,
Nov 23, 2009, 4:34:18 PM11/23/09
to Mifos software development
Udai,

some thoughts / feedback:

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.
 
If you don't mind me saying, that would be a no go for IzPack IMHO...  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.htmlhttp://www.6footplus.com/home/show/219http://jira.codehaus.org/browse/IZPACK-174http://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).

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)

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

Again if you don't mind me saying: I wouldn't waste your time on two packages! Focus on one only, which in my mind, and apparently of Keith & Adam as well, is a mix in the middle of your two: Your complete package MINUS mysql and browser, PLUS what you describe in point 2. above! Dealing with 1. and most certainly (I have been there..) 3. is a waste of support cycles - users WILL manage to mess this up, so just totally "black box" it (i.e your "complete" installer). I noticed this idea of two different installers with a lighter one which re-uses an existing pre-installed Tomcat was already in the air in the posts from last year... if nobody minds a strong opinion on that, personally I can't think of a single argument in favor of this mixed approach, only overhead in dev & validation, so personally I would really suggest a single installer including a container like Tomcat (or Jetty?? it's really cool, and much easier embedable..), only. - Anybody who needs to .. "fiddle", can always continue to do it step-by-step manually like mifos is supposed to be installed today.

Re. "parameters", I think this could be extended (later? by others?) to cover not only what you describe for mysql above, but also Tomcat (HTTP port, ...). It would be cool if this was a) web-based and NOT parameters in the installation (or not only), and b) "repeatable" - you should be able to go back to that "initial set-up" web page later, secured, so you don't have to uninstall / re-install just because you changed mifos_database user password.

Just some thoughts - hope this helps?

Regards!

Udai Gupta

unread,
Nov 23, 2009, 5:38:54 PM11/23/09
to Mifos software development
Folk,

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,

Udai Gupta

unread,
Nov 23, 2009, 6:17:02 PM11/23/09
to Mifos software development
Hi Michael,

> 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.htmlhttp://www.6footplus.com/home/show/219http://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,

Reply all
Reply to author
Forward
0 new messages