запустить wxHaskell на другой машине

Я скомпилировал программу haskell, которая использует библиотеку wxHaskell, теперь я хотел бы знать, как заставить ее работать на других машинах, на которых не установлен wxHaskell. Конечно, я вижу ошибки и могу скопировать dll, написанные в выводе, и скопировать их на эту машину, но что такое профессиональное решение, могу ли я написать какой-нибудь установщик или что-то в этом роде?

Спасибо за помощь


person gruber    schedule 04.05.2010    source источник


Ответы (2)


Вам нужно будет полностью статически связать исполняемый файл. Как это сделать зависит от системы к системе, но в основном включает передачу флага -static в GHC и -optl-static вашему компоновщику.

person Don Stewart    schedule 05.05.2010

Если вы используете последние кабализованные реализации wxHaskell, это довольно просто, так как почти все статически связаны.

Я использую InnoSetup с открытым исходным кодом, и он работает очень хорошо. Моему сценарию требуется как минимум следующее:

AppName=My Wonderful Application
AppVerName=My Wonderful Application 0.1.13
CreateAppDir=yes
DefaultDirName={pf}\MyWonderfulApplication

[Files]
Source: "path\to\your\wxWidgets.dll"
Source: "path\to\msvcrt.dll"
Source: "path\to\your\application.exe"

Все пути, кроме DefaultDirName, являются путями на вашей машине разработки.

Ключевыми элементами являются ваша wxWidgets DLL (может быть несколько DLL, в зависимости от того, как вы создали wxWidgets — я рекомендую и использую монолитный вариант, который создает одну DLL, wxmsw28u_gcc_custom.dll) и двоичный файл вашего приложения.

Если вы ссылаетесь на какие-либо другие библиотеки, они вам также понадобятся. Для многих сторонних библиотек в Windows требуется msvcrt.dll, поэтому я упомянул об этом.

person Jeremy O'Donoghue    schedule 24.05.2010