我用gtk2hs,Glade和Haskell做了一个GUI应用程序。 它在Windows XP上运行良好,但用户需要安装GTK +,gtk2hs(它要求libglade-2.0.0.dll)和GHC(因为它是一个gtk2hs依赖项)才能运行它。
我自己是一个Windows n00b,但是我怎么能从用户的angular度简化安装我的小GUI? 有没有办法将其与所需的.dll打包? 我怎样才能find哪些.dll的将需要? 什么是好的做法?
非常感谢,贾拉
我终于找到了自己的问题的答案。 我用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,
Jarra