I've given this message and idea to a few people already, via email and IRC, so I thought maybe I should share it slightly wider and get feedback from people.
I am intending to start a project called HsInstaller, to produce Windows installers for:
Hat, Yhc, WinHugs and any Cabal program (definately Hoogle, hoepfully Happy, Alex, Haddock etc.), maybe GHC and Gtk2Hs if thats possible. This project does NOT hope to create installers for libaries, just standalone executable programs. A wrapper can be produced for libraries that just calls the underlying Cabal infastructure much more easily.
At the moment the Haskell community has several different installers, the C based one I wrote for WinHugs that generates a .exe, and the GHC one you have that generates a .msi, and the Gtk2Hs one that uses InnoSetup. There are advantages and disadvantages to all approaches, but since the world is going steadily towards .msi's that might be the best format to standardise on. Of course, it might not be the best format, discussion is welcome!
Unfortunately the installer code used by GHC is not publically available, one consequence of this is that GHC does not have snapshot installers for Windows, and in fact a GHC release is not prepackaged for Windows - this is something done later.
So, my general thoughts are to try and see if a copy of the GHC installer can be obtained (this is apparently likely in the future). Collect all the installers that everyone uses, sit down with everyone who wants an installer and figure out what we have, and what we want. Once thats done we can start implementing something that everyone can reuse easily.I am intending to start a project called HsInstaller, to produce Windows installers for:
Hat, Yhc, WinHugs and any Cabal program (definately Hoogle, hoepfully Happy, Alex, Haddock etc.), maybe GHC and Gtk2Hs if thats possible. This project does NOT hope to create installers for libaries, just standalone executable programs. A wrapper can be produced for libraries that just calls the underlying Cabal infastructure much more easily.
At the moment the Haskell community has several different installers, the C based one I wrote for WinHugs that generates a .exe, and the GHC one you have that generates a .msi, and the Gtk2Hs one that uses InnoSetup. There are advantages and disadvantages to all approaches, but since the world is going steadily towards .msi's that might be the best format to standardise on. Of course, it might not be the best format, discussion is welcome!
Unfortunately the installer code used by GHC is not publically available, one consequence of this is that GHC does not have snapshot installers for Windows, and in fact a GHC release is not prepackaged for Windows - this is something done later.
Anyone have any thoughts? I have about 4 projects that need installers (Hat, Yhc, WinHugs, Hoogle), but it would be nice if everyone could be satisfied by the results.
Yeah, I'd love some people to pay attention to Win32 installers for Haskell stuff. I find it rather hard to build the Gtk2Hs installer.
ReplyDeleteMy major issue is with libs that are FFI bindings to C libs. I know you said this is slightly beyond your immediate scope, but then you did mention Gtk2Hs :-)
MSI would be a good choice. While I am unsure how mature it is, as I do not run Windows, I know WIPT (http://www.acm.uiuc.edu/projects/Wipt) runs off them and looks fairly useful.
ReplyDeleteHello Mitchell,
ReplyDeleteI have three questions:
1) For the installation of WinHugs, can I simply copy the installed files to another machine and it would run?
2) What registry entries does it use in windows? So far all I see are the uninstaller registry entries as well as the file extentions registration for the WinHugs filetype.
3)Is there a parameter for a silent installation of WinHugs?
Thanks
A small comment on the installer. The idea of going MSI for windows may be the best option because it has the ability to repair the installation automatically if it is damaged (e.g. deleted files).
Some issues with MSI's I have experienced:
complexity is a problem where alot of registry entries are meing made/changed.
If the msiexec engine is failing (virus problems), it is very difficult to install the package. A possible suggestion is to have a parallel installer that doesn't require msiexec.
Hi Naresh:
ReplyDelete1) Yes, it should do. If you take the installer and rename .exe -> .zip you can even extract it manually.
2) Thats about it. There are also some settings (window size, Hugs options, heap size etc.), but these are automatically generated on new machines.
3) No, unfortunately. The new HsInstaller would definately have this.
We can make HsInstaller have multiple targets - some MSI, some .exe etc. This will probably come later though. I hope our MSI's will be quite reliable though.