【问题标题】:How to package a haskell gtk2hs glade application on windows?如何在 Windows 上打包 haskell gtk2hs glade 应用程序?
【发布时间】:2011-03-07 18:36:03
【问题描述】:

我用 gtk2hs、Glade 和 Haskell 制作了一个小 GUI 应用程序。它在 Windows XP 上运行良好,但用户需要安装 GTK+、gtk2hs(它要求 libglade-2.0.0.dll)和 GHC(因为它是 gtk2hs 依赖项)才能运行它。

我自己是 Windows n00b,但如何从用户的角度简化安装我的小 GUI?有没有办法将它与所需的 .dll 打包? 我怎样才能最好地找出需要哪些 .dll? 有什么好的做法?

非常感谢, 贾拉

【问题讨论】:

    标签: windows haskell gtk glade gtk2hs


    【解决方案1】:

    我终于找到了自己问题的答案。我使用 de Inno Setup 实用程序(您可以在此处找到:http://www.jrsoftware.org/isdl.php)来制作 Windows 安装程序。 对于名为 Crosschecker 的 GTK / Glade / Gtk2hs 应用程序,我使用了以下配置:

    ; -- crosschecker.iss --
    ; For making the crosschecker installer.
    
    [Setup]
    AppName=Crosschecker
    AppVersion=0.1
    DefaultDirName={pf}\Crosschecker
    ; Since no icons will be created in "{group}", we don't need the wizard
    ; to ask for a Start Menu folder name:
    DisableProgramGroupPage=yes
    UninstallDisplayIcon={app}\crosschecker.exe
    OutputDir=userdocs:Inno Setup Examples Output
    
    [Files]
    Source: "crosschecker.exe"; DestDir: "{app}"
    Source: "window.glade"; DestDir: "{app}"
    
    ; GTK+ dependencies
    ; DLL
    Source: "libs\libcairo-2.dll"; DestDir: "{app}"; Flags: ignoreversion
    Source: "libs\libpangocairo-1.0-0.dll"; DestDir: "{app}"; Flags: ignoreversion
    Source: "libs\jpeg62.dll"; DestDir: "{app}"; Flags: ignoreversion
    Source: "libs\libtiff3.dll"; DestDir: "{app}"; Flags: ignoreversion
    Source: "libs\libpng12-0.dll"; DestDir: "{app}"; Flags: ignoreversion
    Source: "libs\zlib1.dll"; DestDir: "{app}"; Flags: ignoreversion
    Source: "libs\intl.dll"; DestDir: "{app}"; Flags: ignoreversion
    Source: "libs\libgdk_pixbuf-2.0-0.dll"; DestDir: "{app}"; Flags: ignoreversion
    Source: "libs\libgdk-win32-2.0-0.dll"; DestDir: "{app}"; Flags: ignoreversion
    Source: "libs\libglib-2.0-0.dll"; DestDir: "{app}"; Flags: ignoreversion
    Source: "libs\libgmodule-2.0-0.dll"; DestDir: "{app}"; Flags: ignoreversion
    Source: "libs\libgobject-2.0-0.dll"; DestDir: "{app}"; Flags: ignoreversion
    Source: "libs\libgthread-2.0-0.dll"; DestDir: "{app}"; Flags: ignoreversion
    Source: "libs\libgtk-win32-2.0-0.dll"; DestDir: "{app}"; Flags: ignoreversion
    Source: "libs\libpango-1.0-0.dll"; DestDir: "{app}"; Flags: ignoreversion
    Source: "libs\libpangoft2-1.0-0.dll"; DestDir: "{app}"; Flags: ignoreversion
    Source: "libs\libpangowin32-1.0-0.dll"; DestDir: "{app}"; Flags: ignoreversion
    Source: "libs\libglade-2.0-0.dll"; DestDir: "{app}"; Flags: ignoreversion
    Source: "libs\libatk-1.0-0.dll"; DestDir: "{app}"; Flags: ignoreversion
    Source: "libs\libgio-2.0-0.dll"; DestDir: "{app}"; Flags: ignoreversion
    Source: "libs\libxml2.dll"; DestDir: "{app}"; Flags: ignoreversion
    Source: "libs\iconv.dll"; DestDir: "{app}"; Flags: ignoreversion
    Source: "etc\gtk-2.0\gdk-pixbuf.loaders"; DestDir: "{app}\etc\gtk-2.0"; Flags: ignoreversion
    
    
    [Icons]
    Name: "{commonprograms}\Crosschecker"; Filename: "{app}\crosschecker.exe"
    Name: "{commondesktop}\Crosschecker"; Filename: "{app}\crosschecker.exe"
    

    大部分 .dll 来自 GTK,少数来自 gtk2hs 包...我将所有 .dll 复制到 lib 目录,这就是 Inno Setup 配置所查看的位置。

    HTH,

    贾拉

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多