Wednesday 12 February 2014

ColdFusion 9 on Windows 8

G'day:
I'm about to pop down to NZ for a coupla weeks to see me folks and make sure they're all still in working order and the like. And drink beer with my NZ-based mates. As part of this, I've retired my old Netbook, and have bought myself a new cheapish laptop (or an "ultrabook" as apparently they are being fashioned, these days) as its replacement. The reason I had the netbook is that the battery life was excellent, which was very handy on long-haul flights, plus it was a handy size for using on aircraft and when lurking in airport terminals. Which I do frequently enough for that to be a consideration. Anyway, this new thing has Windows 8 on it, and I spent Fri eveing and Saturday morning setting it up. Which went fine until I needed to install ColdFusion 9.

First things first, I know ColdFusion 9 is not supported on Windows 8. I don't care if it's supported - I'd never solicit support from Adobe regarding ColdFusion - but I also know that it does indeed run fine. It's actually just the installer that doesn't work on Windows 8. You'd've thought that - given CF9 is still a "supported" CF platform - Adobe would have fixed this when they fixed it for CF10, but they reckon they don't have to. Oh well.

Just to verify I wasn't mistaken about the installer not working on Windows 8, I ran it. And after a short while I got this error:


Which expands out to be:



Lovely.

Anyway, I had heard people mention a silent install option on ColdFusion, so decided to have a look at that. If the problem is in the installer (and it's the GUI part of the installer, as far as I understand it), then running a silent install should circumvent that issue.

I'd never done a silent install of CF before, so there's a learning experience here too. I googled "coldfusion silent install", and the very first link had Adobe-written instructions: "Performing a silent installation of ColdFusion 9". It's actually very straight forward. One just has to set up an installer.properties file, stick it in the same directory as the installer file, and run it. That's it.

My installer.properties was thus:

INSTALLER_UI=SILENT
SILENT_LICENSE_MODE=developer
SILENT_INSTALLER_TYPE=jrun
SILENT_WEBROOT_FOLDER=C:\\apps\\adobe\\JRun4\\servers\\cfusion\\cfusion-ear\\cfusion-war
SILENT_INSTALL_ODBC=false
SILENT_INSTALL_SOLR=false
SILENT_INSTALL_SAMPLES=false
SILENT_INSTALL_JNBRIDGE=false
SILENT_INSTALL_FOLDER=C:\\apps\\adobe\\JRun4
SILENT_CONTEXT_ROOT=/
SILENT_ADMIN_PASSWORD=123
SILENT_FLEX_ENABLED=false
SILENT_ENABLE_RDS=false


That's all pretty straight forward and obvious (and documented on that site I linked to, so I'll not repeat it here). I'm not sure I needed to specify the web root dir when I'm just using the JWS, but never mind.

So I ran this, and after a few seconds I got... this again:


Huh? Which part of "silent" is Adobe misunderstanding here? Why the hell is the silent installer invoking the GUI? At this juncture I raised a question on ServerFault: "ColdFusion 9 silent install invokes GUI installer on Windows 8". Anit from Adobe came back with this explanation:

[...]The GUI is launching because the system requirements are not met. The popup is the error window, due to the installer failure.[...]
Sigh. be that as it may, you still shouldn't be attempting to report that via the GUI. Just put an entry in the log. That's the whole thing with a silent install: it's silent. And... you're a bunch of bloody idiots, because supported or not, the only thing that prevents ColdFusion 9 running on Windows 8 is the installer GUI, so it's only because you try to use the installer GUI here that the thing fails. Unbelievable.

At this point I was talking to Sean about this, and he came up with this "cunning" idea:

Good thinking! I already had ColdFusion 10 installed on the new machine, so I should just be able to drop the .war file into [some directory... I'd need to google], and I'd be away laughing.

I adjusted the install.properties file to produce a .war file instead (it's one of the options), and ran it on my other machine (which runs Windows 7). No worries.

However I couldn't see where the webapps directory was in my ColdFusion 10 install. I have to say I did not check for long: once I saw that the directory file structure bore little resemblance to the standard Tomcat directory structure I decided to not bother trying. I knew Adobe had messed with the version of Tomcat they use for ColdFusion 10, so didn't want to go down the rabbit hole of trying to do anything with it that I might expect a normal Tomcat install to manage. Call me paranoid.

Having checked just now (I'm writing this on Tuesday, a few days later), I have found the webapps dir. Two of them in fact:

query
DIRECTORYNAME
1C:\Apps\Adobe\ColdFusion\10\cfusion\jettywebapps
2C:\Apps\Adobe\ColdFusion\10\cfusion\runtimewebapps

The latter isn't anything to do with Tomcat, and I'm a bit bemused by the location of the other one. In the "runtime" dir? Anyway, I did not pursue that avenue, so that's not relevant.

Next I decided to kill two birds with one stone: I needed Railo on this machine as well, so instead of my usual approach of just using Railo Express, I decided to D/L and install the full Tomcat version. Then - with a hint of satisfaction - I could use "Railo" to get ColdFusion to work. Chuckle.

So I installed Railo 4.1 from the download @ "Railo 4.1 installers (4.1.2.005)", got that up and running, and then slapped my ColdFusion 9 .war file into the webapps dir, and cranked up Tomcat and the .war exploded and after a bit, ColdFusion seemed to be installed. I hit CFAdmin, and it displayed the screens for "completing my installation", and everything seemed happy. The problem was every time I ran a CFML file, it was still Railo that was running the request, not ColdFusion. I messed around for a bit (OK, all morning), de-installing / re-installing, googling, tweaking Tomcat, Railo and ColdFusion files, but no joy. Pity.

So I decided... screw it whilst it'd be amusing to have ColdFusion running out of the Tomcat installed by Railo, I was certainly not feeling very well-humoured about my lack of progress, and life's too short sometimes. I just went to the Apache website, downloaded Tomcat, googled-up some docs about various CFML installations (cfSearching's "ColdFusion + Tomcat + Apache + Windows (Take the plunge)"; Todd Rafferty's "Installing Railo on Tomcat - The Windows Edition"; and Matt Woodward's "Installing and Configuring Apache 2.2, Tomcat 6.0, and Open BlueDragon on Windows 2003 Server"), and came to the conclusion all I needed to do is this:

  • unzip the Tomcat zip file;
  • create an environment variable CATALINA_HOME to point to where I unzipped Tomcat to, in my case C:\apps\apache\tomcat\7\;
  • create an environment variable JAVA_HOME pointing to my JDK: C:\Apps\Java\jdk1.7.0_51 (installed separately, earlier);
  • rename my cfusion.war file to CF902.war (entirely me call what to call it, I'll just end up with multiple CF versions in there, so gave it a version-specific name);
  • start Tomcat (by running startup.bat in the tomcat/bin dir);
  • drop the CF902.war file into the tomcat/webapps directory;
  • watch Tomcat explode it;
  • browse to http://cf902.local:8080/CF902/CFIDE/administrator and completed the ColdFusion installation/configuration;
  • err...
  • ... that's it.
It's definitely a dev install: I have to start it via batch file, I'm just using Tomcat's inbuilt web server, and I've got that /CF902 context reference in the URL path. But I don't care. This instance is just for messing around, and it's fine. I've completed the installation properly in the past, and there's not much to getting Apache into the mix too, and making the URLs nicer. But life's too short, as I said before.

Thanks to Leigh, Todd and Matt for documenting that stuff I linked to above. It wasn't all directly related to what I was doing, but it was interesting in-context reading. And thanks to Sean for the .war idea.

--
Adam