2011-03-07 3 views
11

gtk2hs, Glade 및 Haskell을 사용하여 약간의 GUI 응용 프로그램을 만들었습니다. 그것은 Windows XP에서 잘 실행되지만 사용자는 GTK +, gtk2hs (libglade-2.0.0.dll을 묻습니다) 및 GHC (gtk2hs 의존성)를 설치하여 실행해야합니다.윈도우에서 haskell gtk2hs glade 애플리케이션을 패키지화하는 방법은 무엇입니까?

저는 직접 Windows n00b입니다.하지만 사용자의 관점에서 내 작은 GUI를 설치하는 것을 어떻게 간단하게 할 수 있습니까? 필요한 .dll 파일로 패키지하는 방법이 있습니까? 그리고 어떤 .dll 파일이 필요한지 가장 잘 알 수 있습니까? 좋은 연습이 무엇입니까?

덕분에 많이 Jarra

답변

6

나는 마침내 내 자신의 질문에 대한 답을 발견했다. 나는 이노 설치 유틸리티 (여기에서 찾으실 수 있습니다 : http://www.jrsoftware.org/isdl.php)를 사용하여 Windows 설치 프로그램을 만들었습니다. lib 디렉토리 디렉토리에

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

의는 GTK의 gtk2hs 패키지에서 몇에서 온 .DLL의 대부분 ... 나는 모든 .DLL을 복사의 : Crosschecker라는 GTK/레이드/Gtk2hs 응용 프로그램에 대한 나는이 confiuration를 사용 , 그래서 Inno Setup 설정이 보입니다.

HTH,

Jarra