Возможно ли, что GTK или gtksharp в Windows жестко кодируют DLL-библиотеки загрузчика? - PullRequest
2 голосов
/ 25 мая 2011

Я только что завершил свое приложение GTK # / Mono и готовлюсь к сборке установщика. (Я работаю в .NET Framework 3.5 и самой последней стабильной версии Mono, 2.6.7, которая устанавливает Gtk 2.10.0). Я бы предпочел сделать установку как можно более локальной и не заставлять людей переходить на установку GTK # для. NET самостоятельно. Я посмотрел на установщик для banshee (http://banshee.fm)), и я прошел почти весь путь. К сожалению, встроенные в мое приложение ресурсы PNG не загружались.

Примерно через час близости с procmon (http://sysinternals.com), я обнаружил, что файл libpixbufloader-png.dll не загружается. Его ищут только в одном месте: c: \ program files \ GtkSharp \ 2.12 \ lib \ gtk-2.0 \ 2.10.0 \ loaders. Если я создаю только это дерево папок и вставляю туда файл, он работает.

Кажется немного безумным, что GTK # / GTK будет искать только этот файл в жестко заданном месте - даже в папке, в которой находится приложение. Может кто-нибудь сказать мне, если а) это действительно ожидаемое поведение, и б ) если я могу что-нибудь с этим поделать, если не считать, что мой установщик сам делает этот путь? Я знаю, что могу также просто запустить установщик GTK #, но я надеялся сохранить все компоненты Mono / GTK локально для моей установки, чтобы избежать путаницы в версиях и т. Д.

Ответы [ 2 ]

1 голос
/ 30 мая 2011

Вам не нужно вызывать .exe упомянутый мой jpobst , потому что вы можете ввести относительные пути в файл конфигурации gdk-pixbuf.loaders (кстати, как вы видите пути не жестко закодировано).

1 голос
/ 25 мая 2011

Я думаю, что ваш установщик должен запустить это в конце:

C: \ Program Files \ GtkSharp \ 2.12 \ bin \ gdk-pixbuf-query-loaders.exe

См. Wix для официального установщика Gtk # здесь:

https://github.com/mono/gtk-sharp/blob/gtk-sharp-2-12-branch/msi/unmanaged/unmanaged.wxs

...