2011-03-07 19 views
11

me hizo una pequeña aplicación GUI con Gtk2Hs, Glade y Haskell. Funciona muy bien en Windows XP, pero los usuarios necesitan para instalar GTK +, Gtk2Hs (que pide libglade-2.0.0.dll) y GHC (ya que es una dependencia Gtk2Hs) con el fin de ejecutarlo.Cómo empaquetar una aplicación Gtk2Hs Haskell claro en las ventanas?

Soy un n00b de Windows a mí mismo, pero ¿cómo puedo simplificar la instalación de mi pequeña interfaz gráfica de usuario desde la perspectiva de un usuario? ¿Hay alguna manera de empaquetarlo con el .dll necesario? Y cómo es la mejor forma de averiguar qué .dll serán necesarios? ¿Qué es una buena práctica?

Muchas gracias, Jarra

Respuesta

6

finalmente encontré la respuesta a mi propia pregunta. Solía ​​utilidad de Inno Setup (que se puede encontrar aquí: http://www.jrsoftware.org/isdl.php) para hacer un instalador de Windows. Para una aplicación GTK/Glade/Gtk2Hs llamada Crosschecker He utilizado este confiuration:

; -- 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" 

La mayoría de los .dll de vienen de GTK, unos pocos del paquete Gtk2Hs ... he copiado todos .dll de un directorio lib , entonces ahí es donde se ve la configuración de Inno Setup.

HTH,

Jarra

Cuestiones relacionadas