Problem Solved!
- Wednesday Sep 24,2008 09:04 PM
- By wmensah
- In myDiary
I finally got everything working just the way I want it. Below is a summary of the problem and the solution to it
Problem:
GTK 2.0 Runtime Environment gets installed in 2 different directories based on which version of Windows you’re running. In my case, Vista and XP
In Vista, it was installed to: C:\Program Files (x86)\Common Files\
In XP, it was installed to C:\
As a result the GTK_BASEPATH environment had 2 different values for each operating system – not such a good thing.
Unfortunately for my python application which requires pango modules to run, the pango.modules and gdk-pixbuf.loaders files had paths to the necessary dll files hard-coded in them.
This is a portion of my pango.modules file
# Pango Modules file
# Automatically generated file, do not edit
#
# ModulesPath = C:\GTK\lib\pango\1.6.0\modules
#
“C:\\GTK\\lib\\pango\\1.6.0\\modules\\pango-arabic-fc.dll” ArabicScriptEngineFc PangoEngineShape PangoRenderFc arabic:* nko:*
“C:\\GTK\\lib\\pango\\1.6.0\\modules\\pango-arabic-lang.dll” ArabicScriptEngineLang PangoEngineLang PangoRenderNone arabic:*
Notice how C:\\GTK has been hard-coded. This created a problem whenever the application was installed and run on a different computer other than mine (on which the hard-coded paths made sense). I suppose the executable file pango-querymodules.exe is supposed to fix this but I had weird results instead. So my solution?….
Solution:
- Manually go inside these two files: pango.modules and gdk-pixbuf.loaders and replace every instance of GTK’s base path with some string of your choice ( I used <gtk_basepath> for mine).
- Create a python file to access the two files that has hard-coded paths in them: pango.modules and gdk-pixbuf.loaders and perform a search and replace <gtk_basepath> with the value of the GTK_BASEPATH environment variable. You can do something like:
import os
replacestring = os.environ['GTK_BASEPATH']
where replacestring is a variable that will be used to replace every instance of <gtk_basepath> in both files (watch out for ‘\’ and ‘\\’)
- Finally create a batch file to execute this python file after installation is complete. You can use the same batch file to delete the python file after that when done because you wont need it anymore.?
My batch file looked like this:
START PYTHON postscript.py
DEL postscript.py
And that’s it, pango.modules and gdk-pixbuf.loaders should now have the correct paths to GTK no matter where it is installed.
I hope this helps someone.