Remko Weijnen's Blog (Remko's Blog)

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

Archive for December, 2010

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.


Terminal Server Remote Keyboard Layout

Today I shadowed a user’s session in Citrix and when I wanted to type something I noticed that the keyboard layout was incorrect.

This is and old “friend” that I always tend to forget about. So hopefully this post will help me to remember it :D.

You can prevent this by adding a value “IgnoreRemoteKeyboardLayout” to the registry key HKLM\System\CurrentControlSet\Keyboard Layout:

reg add “HKLM\SYSTEM\CurrentControlSet\Control\Keyboard Layout” /v IgnoreRemoteKeyboardLayout /t REG_DWORD /d 0x00000001 /f

This option has been present since Windows 2000 but was broken in Windows 2003. For Windows 2003 there are two related hotfixes, see kb 842136 and kb 917910.


Today I needed to script the installation of IBM System i Access for Windows (formerly called IBM Client Access).

With older versions of this client (up to 5.4) you could use the -r (record) installer switch to record the install in a setup.iss file but version 6.1 uses an MSI based installer.

IBM offers the client in a 2 DVD download but you probably only need the first dvd (dvd 1 has both the x86 and x64 installers, dvd 2 has the ia64 installer) which is a whopping 3,5 GB download.

Inside the download (a zip) is an iso file of which you will only need the files in the root and the Image32 or Image64a folder.

Inside the image folder are subfolders names MRI29xx where xx is a language identifier:

The following Identifiers are used: (more…)

  • 1 Comment
  • Filed under: Altiris, script
  • Master Return codes in Altiris

    Altiris offers a Master Return code, a very usefull feature that is not used often I think. In this article I will explain why I find them usefull and we will implement a Master Return code for Installations that require a reboot.

    A Master Return code can be consired as a Global Action handler, whenever a job returns a specific error/return/result code this Global handler will be called (unless you override it in the job with another action).

    A perfect usage for a Global Action handler is installing MSI files that need I reboot. If you do nothing the system will be rebooted after the successfull installation and your job will return as failed with error 3010.

    Microsoft documents that 3010 means ERROR_SUCCESS_REBOOT_REQUIRED: A restart is required to complete the install. This message is indicative of a success.

    To prevent the reboot we can pass REBOOT=ReallySurpress to the MSI but we still need to indicate to Altirs that 3010 actually means Success and that we need to reboot.


  • Filed under: Altiris
  • After doing an unattended installation of the Citrix Online Plugin it was not possible to launch a Published Application.

    It would just give the error mesage: “citrix online plugin could not launch the requested published application”.

    Even though the installation finished without errors and the logfiles indicated no failure at all I was able to fix it by using 2 steps described in CTX123761.

    First install the Microsoft Visual C++ 2005 Redistributable Package SP1 and the (re)deploy the Online Plugin adding a Transform called transform_notstrict.mst which can be found in the aforementioned KB Article.

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


    I was cleaning up some old data on my Hard Drive when I found a program I wrote about a year ago.

    At that time I was doing a project where I was deploying a Windows 2008 based Citrix Environment.

    I wanted to get rid of the new Personal Folders or User’s files icon on the Desktop and replace it with the familiar My Documents icon.


    These settings are stored in the Registry under HKEY_CLASSES_ROOT\CLSID\{folder’s GUID}\ShellFolder.