Remko Weijnen's Blog (Remko's Blog)

About Virtualization, VDI, SBC, Application Compatibility and anything else I feel like

Archive for the ‘Unattended Installation’ Category

Unattended Installation of IBM WebSphere MQ

Today I needed to create a silent install for IBM WebSphere MQ, in my case version

I started by reading IBM’s documentation: WebSphere MQ Unattendend (silent) Installation which desribes that we can create a response file using the SAVEINI parameter.

So I recorded a response file and tested the install using the USEINI parameter as indicated by the documentation.

However the installation failed producing only this error message:

One or more problems occured. Review the trace and/or log file for details. (AMQ4739)


Earlier today I wrote about Using the CorrectFilePaths shim to redirect an ini file to a writable location and believe it or not the next application I was working with today needed a nice shim as well.

This one was a little more complicated and that’s why I am writing a second post about it.

I am not sure if this is actuall documented somewhere but a Shim is not applied to Applications or DLL’s that reside in the system directory.

The application in question here is a Visual Basic 6 application which uses the VB6 runtime, msvbvm60.dll which resides usually in %systemroot%\system32.

We need to do two things if we want to apply the shim to msvbvm60.dll:


Today I needed to package an application called PlesirReality and I noticed that it wrote an ini file into the program directory (in my case D:\Apps\PlesirReality).

I looked into this ini file (areastate.ini) and it writes user settings in there, like the last position of the window etc.

We can see this easily with Process Monitor:


This presents us with several problems:

The first problem is that the user does not have write permission in this directory so upon application exit we get an ugly error message:


We could “fix” this by giving the user write permissions to this directory or even to this specific file but here comes the seconds problem:

On a multi user environment like Citrix or Terminal Server/Remote Desktop Services it means that when one user exists he will he save his settings for all users.

And then we have a third problem:

When a users starts the application on another server he will not get the expected settings because each server will have it’s own copy of this ini file.


Unattended Installation of the Oracle Client

Last week I needed to an unattended installation of the Oracle Client, in my case version

Oracle has a record switch that allows you to record an installation and generate a response file using: setup -record -destinationFile response_file_name. This is documented here.

When you are finished you can use this response file to perform the unattended install, eg setup -silent -responseFile response_file_name.

There is a problem though, the installer (setup.exe) launches a java based installer and immediately returns.

This was a problem for me since I cannot deploy a dependant application if the Oracle install hasn’t finished yet.

I did some googling and found a lot of questions about this subject and saw a common resolution where a script is watching a certain file that is creating when the installation has finished in a loop.

I figured there should be a better wait so I to a closer look at the installer with Ida Pro. I noticed that setup.exe launches another exe. called oui.exe (Oracle Universal Installer) which in turn launches Java.


Packaging an ActiveX Component: Easy?

Today I needed to package an applications that I was told was very simple. If I hear something like that my first thought is always “hmmm”.

So I prepared a machine to build the package and followed the instructions which were to go to a specific URL and download the package (probably an ActiveX control from there).

I opened the URL and immediately got an error message:

The specified LICD is not available

The error message 0x80004005 is not very helpfull since it stands for E_FAIL (winerror.h).


Yesterday I was packaging an application called Kluwer Juridische Bibliotheek. When the user first starts this application a screen with the License Conditions pops up and it must be accepted:


I always try to remove such things as I don’t think it’s necessary for every user to accept it.


Packaging an Application that uses the BDE

Today I needed to package an application that uses the Borland Database Engine (BDE).

The BDE is a database engine/connectivity component commonly used in Delphi and C++ Builder applications. It has been deprecated since 2000 when it was replaced by dbExpress.

But it’s still widely used so you may still find applications that require the BDE.

In my environment I already have a package for the BDE itsself. But the application I needed to package today, needs to have an Alias addded.

This is usually done manually by going into the BDEADMIN control panel applet or by copying the file where BDE saves the aliases (IDAPI32.CFG).

Here is a screenshot of the Alias my application needs (it uses an Interbase database):


I didn’t like the copy approach and didn’t even consider the manual option so I wrote 2 little tools.


This means you are installing the wrong edition, eg x86 version on an x64 OS.

All available version are listed on the MSDN Visual J# Redistributable Packages page.

Related: The case of the VMware vSphere Client

Citrix and Java JRE Versions

If you have ever installed Citrix Presentation Server/XenApp or one of the management consoles then you have probably dealt with Java versions.

Citrix is very picky about the Java version so it’s usually best to initially install the Jre version that is delivered with the product.

In my case however I needed to install the CMC for Xenapp 5 on Windows 2003, it requires JRE 5.0 Update 9 but this version was undesirable.

So I tried to install the CMC with the current JRE version (1.6.0_22 at this time) but it makes the Installer exit immediately: