【问题标题】:Is it possible that GTK or gtksharp on Windows hardcodes the loader DLLs?Windows 上的 GTK 或 gtksharp 是否有可能对加载程序 DLL 进行硬编码?
【发布时间】:2011-09-01 20:06:45
【问题描述】:

我刚刚完成了我的 GTK#/Mono 应用程序,并准备构建一个安装程序。 (我在 .NET Framework 3.5 和最新的稳定版 Mono 2.6.7 中工作,它安装了 Gtk 2.10.0)我希望尽可能在本地进行安装,而不是强迫人们去安装 GTK# for . 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 只会在单个硬编码位置查找此文件似乎有点疯狂——甚至在应用程序所在的文件夹中也不行。有人可以告诉我是否 a) 这确实是预期的行为,并且 b ) 如果我能做些什么,除了让我的安装程序自己创建这条路径吗?我知道我也可以生成 GTK# 安装程序,但我希望将所有 Mono/GTK 内容保留在我的安装本地,以避免以后对版本等产生混淆。

【问题讨论】:

    标签: mono installation gtk gtk#


    【解决方案1】:

    您不必调用我的 jpobst 中提到的 .exe,因为您可以在 gdk-pixbuf.loaders 配置文件中输入 relative 路径(顺便说一句,如您所见路径没有硬编码)。

    【讨论】:

      【解决方案2】:

      我认为您的安装程序需要在最后运行它:

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

      在此处查看官方 Gtk# 安装程序的 Wix:

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

      【讨论】:

      • 好吧,见鬼,看看那个。我现在会搞砸它,并在它起作用时投票!谢谢。
      • 不幸的是,官方 Gtk# 安装程序与我的 Windows 机器上实际安装的最新 GtkSharp 相比存在各种不一致。然而,gdk-pixbuf-query-loaders.exe 实际上是正确的线索。现在我的生活很糟糕,试图让它与 WIx 一起工作......
      猜你喜欢
      • 1970-01-01
      • 2021-03-25
      • 1970-01-01
      • 1970-01-01
      • 2016-04-07
      • 1970-01-01
      • 1970-01-01
      • 2011-01-26
      • 1970-01-01
      相关资源
      最近更新 更多