A few years ago I really needed to get Oracle Forms Runtime 6i working on 64-bit Windows. The only setup I had, was Oracle Developer 6 setup given by application vendor 15 years ago. What is legacy, may never die (Game of Thrones pun intended).
The setup would throw error at some point (I’ve forgotten the error message but it was something useless) and I took a deep dive in ORAINST setup architecture. You know, the one before Oracle Universal Installer that nobody remembers. Automating already worked on 32bit architectures but I didn’t quite get it why it failed on 64bit systems.
In the end I found out that ORAINST called a few self-extracing archives deep in setup folders. And these archives turned out to be created with shareware (!) versions of PKWARE PKZIP. Wow, Oracle – really?. The actual problem is that self-extracting module is 16bit and 64bit Windows doesn’t have NTVDM. And modern PKZIP versions don’t use the same command line parameters anymore…
I wanted to preserve ORAINST as much as possible so the workaround involved:
- Extract PKZIP archive and recompress it with 7-Zip self-extractor module. This results in 32/64bit code depending on your target.
- Small wrapper script to translate PKZIP arguments to 7-Zip
start "" /wait "%~dp0d2q60-32b.exe" -o"%3" -y
Where d2q60-32b.exe is filename created by 7-Zip.
- Put them in the same folder and run them through BAT2EXE
- Replace 16bit file with output of BAT2EXE
Now when you run ORAINST setup, following will happen:
- ORAINST calls problematic file with PKZIP specific parameters
- BAT2EXE bootstrapper will extract itself and payload to a temporary folder
- BAT2EXE calls wrapper script with whatever was passed into itself
- Script will take just 3rd attribute (target path) and pass it to 7-Zip extractor
- 7-Zip will extract data to target location (some help files and documentation)
- All components clean up after themselves
- ORAINST continues setup
There might have been additional files but for my needed features only one file needed to be replaced: “win32\d2dh\6_0_5_6_0\doc\d2q60.exe”. ORAINST and Oracle 8 generation is mostly forgotten so it’s hard to say if there were alternative install medias or considerations. This way, Forms 6 worked on at least Windows 8.1 64bit and maybe Windows 10 early builds as well, I’ve forgotten over the years. ORAINST required XP SP3 compatibility and a few scriptable tweaks as well but these were quite trivial.
Before this workaround I had noticed a few threads in various forums with the same issue. Now if you find this article and you still need to use Orace Forms 6, congrats.