Opened 9 years ago

Closed 9 years ago

#11852 closed defect (fixed)

Windows Installer does not allow users to select to use system GTK+ install, disabling GTK+ themes

Reported by: leeter Owned by: datallah
Milestone: 2.7.1 Component: winpidgin (gtk)
Version: 2.7.0 Keywords: gtk installer windows
Cc: Hybridchemistry, LadyAsul


The Windows installer does not allow the user to choose to use a system wide GTK+ install instead of the local install. This behavior makes it impossible to use GTK+ themes.

Change History (17)

comment:1 Changed 9 years ago by datallah

  • Status changed from new to pending

It isn't impossible to use GTK+ themes; it is just becomes a manual process. I'm planning to update the FAQ with instructions how to do this in the next few days.

We will no longer be distributing a system-wide GTK+ installer.

Pidgin will use an existing GTK+ installation if it is present (and in the Path or has the appropriate registry keys set).

comment:2 Changed 9 years ago by leeter

  • Status changed from pending to new

I installed

as I like to keep a system wide theme... the pidgin installer did NOT recognize that it was installed and ignores %USERPROFILE%\.gtkrc-2.0

I understand not distributing a system wide installer for GTK+, but ignoring a system wide install is not acceptable, PROVIDED it meets the version requirements for pidgin.

comment:3 Changed 9 years ago by datallah

The issue is that it is finding the GTK+ runtime that is present alongside pidgin and giving that priority.

You need to remove that and not install it when installing pidgin to make pidgin use the "global" runtime.

There isn't a "standard" way to detect a GTK+ installation, so we can't reasonably do so from the installer.

It is possible that the installer won't let you skip the GTK+ runtime installation, in which case that is something that should be fixed.

comment:4 Changed 9 years ago by leeter

Agreed, however the option not to install the local GTK+ CANNOT be selected, it is greyed out so as you said that needs to be fixed... I should note that I have tried both installers and both seem to have this issue. I will try installing and then deleting the local GTK+ install to see if it reverts to the global one.

comment:5 Changed 9 years ago by leeter

no luck... it can't find the global GTK+ install despite it being in the path

comment:6 Changed 9 years ago by datallah

  • Status changed from new to pending

What does pidgin -d say when you run it and there is no local GTK+ runtime installed?

comment:7 Changed 9 years ago by leeter

  • Status changed from pending to new
Unable to determine GTK+ path.
Assuming GTK+ is in the PATH.
Setting locale: LANG=en
Looking for Perl... found in 'C:\Perl8\'.
Looking for MIT Kerberos... Could not open reg subkey: SOFTWARE\MIT\Kerberos
Error: (2) The system cannot find the file specified.

not found.
Error loading pidgin.dll.
Error: (127) The specified procedure could not be found.

comment:8 Changed 9 years ago by leeter

it seems to be hard set to look for a folder named GTK, whereas the GTK runtime is GTK2-Runtime, I have confirmed that it will work and I can get themes working correctly if I symlink %programfiles(x86)%\GTK2-Runtime as the GTK folder, not an elegant solution but it does work for vista and 7 users.

comment:9 Changed 9 years ago by datallah

It *will* look for a GTK subdirectory, but if that isn't there, it continues and tries to use any GTK+ instance in your PATH.

It doesn't look like your external GTK+ instance is actually in the PATH.

You need the \bin directory of the GTK+ structure in the path, not the root.

comment:10 Changed 9 years ago by leeter

I have both... however it doesn't seem to find it, like I said, I think it's ignoring GTK2-Runtime which is the GTK+ default install path now

please note:

C:\Program Files (x86)\Pidgin>echo %path%
C:\Perl8\site\bin;C:\Perl8\bin;C:\Perl\site\bin;C:\Perl\bin;C:\Perl64\site\bin;C:\Perl64\bin;C:\Program Files (x86)\MiKTeX 2.7\miktex\bin;
C:\sml\bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Program Files\Intel\DMIX;
c:\Program Files (x86)\Microsoft SQL Server\90\Tools\binn\;C:\Program Files (x86)\Common Files\Lenovo;C:\Windows\System32\WindowsPowerShell\v1.0\;
C:\CUDA\bin;C:\Program Files (x86)\Common Files\Roxio Shared\9.0\DLLShared\;C:\Program Files\Common Files\Lenovo;
C:\Program Files (x86)\Lenovo\Client Security Solution;C:\Program Files\Lenovo\Client Security Solution;
C:\Program Files\Intel\WiFi\bin\;C:\Program Files\Common Files\Intel\WirelessCommon\;C:\Program Files (x86)\Common Files\Roxio Shared\DLLShared\;
C:\Program Files (x86)\GtkSharp\2.12\bin;C:\Program Files (x86)\Lenovo\Access Connections\;C:\Windows\System32\Windows System Resource Manager\bin;
C:\Windows\idmu\common;%programfiles(x86)%\GTK2-Runtime\bin;C:\Program Files (x86)\AMD\BROOKPLUS SDK v1.00.0_beta\sdk\lib;
C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\;C:\Program Files (x86)\SSH Communications Security\SSH Secure Shell;
C:\Python25\;C:\opt\bin;C:\Program Files (x86)\Quest Software\PuTTY\;
C:\Perl\bin;C:\Program Files (x86)\GTK2-Runtime;C:\Program Files (x86)\GTK2-Runtime\bin

comment:11 Changed 9 years ago by datallah

  • Status changed from new to pending

It can't ignore your %PATH%.

What is the specific error you see?

comment:12 Changed 9 years ago by leeter

  • Status changed from pending to new

This is the error that pops up:

The procedure entry point gtk_selection_data_get_data_type could not be located in the dynamic link library libgtk-win32-2.0-0.dll

HOWEVER I would like to reinforce that I HAVE gotten it to work with the system GTK+ but ONLY through a symlink ( mklink /d GTK ..\GTK2-Runtime ). Which indicates to me that it is not properly dealing with the Path.

comment:13 Changed 9 years ago by datallah

  • Status changed from new to pending

Aha. It is actually a different problem.

Your Path is being honored, but you're running into a DLL Hell problem.

If you search for libgtk-win32-2.0-0.dll (or possibly for libgtk-win32-2.0-0.dll) I bet you'll find multiple instances.

Pidgin is using a different version than the one you want it to because it is earlier in the path.

If you had the previous global installer provided by Pidgin installed and it is still present, that could be the problem because the old installer added that to the AppPath? for Pidgin.

comment:14 Changed 9 years ago by leeter

  • Status changed from pending to new

Verified, GTK 2.14.7 was hiding in the "%programfiles(x86)%\Common Files" directory, although a conflict may still exist with GTK#

I am going to recommend a change to that error pop up to indicate that possible multiple version of GTK may exist.

Finally, I am going to recommend this is closed.

comment:15 Changed 9 years ago by datallah

I'm going to keep this open until we improve the installer so that you don't have to jump through hoops not to install the "included" GTK+ runtime.

comment:16 Changed 9 years ago by darkfly

I kind of got the themes working again for me in 2.10 GTK, though I'm pretty sure this is a lazy, and unprofessional way. But it works for me until someone does patch it.

What I did was: Copied both lib, and etc from Root:\Program Files (x86)\Common Files\GTK\2.0\ Pasted both lib, and etc into Root:\Program Files (x86)\Pidgin\Gtk\ Copied "gtkthemeselector.exe" from Root:\Program Files (x86)\Common Files\GTK\2.0\bin\ Pasted "gtkthemeselector.exe" to Root:\Program Files (x86)\Pidgin\Gtk\bin\

The theme-selector seems to work for me, and I don't have any problems as of yet. If anyone else wants to try this until there's a proper fix.

comment:17 Changed 9 years ago by datallah@…

  • Milestone set to 2.7.1
  • Resolution set to fixed
  • Status changed from new to closed

(In 2a7ad9dd15f080096423a10b56336b0f1c25783a):
Allow the GTK+ Runtime to be unselected when there is no existing runtime (but not when there is an existing runtime that is too old). This allows "advanced" users to more easily reuse a global GTK+ runtime if they choose to do so.

Additionally, this provides some additional alerts and hints about what to do when downloading the GTK+ Runtime or Spellchecking dictionary fails.

Fixes #11852, #11889

Note: See TracTickets for help on using tickets.
All information, including names and email addresses, entered onto this website or sent to mailing lists affiliated with this website will be public. Do not post confidential information, especially passwords!