Упаковка приложения, использующего API-интерфейс ImageMagick C - PullRequest
5 голосов
/ 16 июня 2010

Я создал небольшое приложение для Windows, которое использует API-интерфейс ImageMagick C, но натолкнулось на кирпичную стену. Приложение работает нормально, и я готов поделиться им с несколькими другими в нашей организации, но я не могу найти документацию по распространению такого приложения без установки ImageMagick на целевой машине.

Есть ли у кого-нибудь здесь информация или ссылка на информацию, в которой подробно описано, как упаковать ее для распространения? Какие библиотеки DLL требуются и какие необходимо зарегистрировать в Windows? Целевые пользователи будут использовать XP и Win7.

Ответы [ 5 ]

4 голосов
/ 18 ноября 2011

Никогда не находил решения, поэтому вот что я обнаружил:

Использование imageMagikNet.dll и (лежащих в основе) dll-файлов imageMagik, похоже, что для правильной работы этой библиотеке нужны некоторые ключи реестра.

Здесьмоя упаковка приложения ImageMagikNet, которое работает ...

  1. ImageMagickNET.dll (http://imagemagick.codeplex.com/) скомпилировано для 6.5.3-10
  2. All CORE_RL * .dll изустановка ImageMagik 6.5.3-10 (ImageMagick-6.5.3-10-Q16-windows-dll.exe)
  3. Все IM_MOD_RL * .dll из установки ImageMagik 6.5.3-10 (ImageMagick-6.5.3-10-Q16-windows-dll.exe)
  4. Все * 90.dll из установки ImageMagik 6.5.3-10 (ImageMagick-6.5.3-10-Q16-windows-dll.exe)
  5. x11.dll из установки ImageMagik 6.5.3-10

  6. Раздел реестра, который выглядит следующим образом:

    [HKEY_LOCAL_MACHINE \ SOFTWARE \ ImageMagick]

    [HKEY_LOCAL_MACHINE \ SOFTWARE \ ImageMagick \ 6.5.3]

    [HKEY_LOCAL_MACHINE \ SOFTWARE \ ImageMagick\ 6.5.3 \ Q: 16] "BinPath" = "[TARGETDIR]" "LibPath" = "[TARGETDIR]" "CoderModulesPath" = "[TARGETDIR]"

    [HKEY_LOCAL_MACHINE \ SOFTWARE \ ImageMagick \ Current] "Version" = "6.5.3" "QuantumDepth" = dword: 00000010 "BinPath" = "[TARGETDIR]" "LibPath" = "[TARGETDIR]" "CoderModulesPath" = "[TARGETDIR]"

Я знаю, что это может быть не совсем правильный путь, так как я имитирую установку imageMagik в реестре, и я не знаю, как это будет работать, если клиент установит ImageMagik на своем компьютере, но пока,это единственный способ, который я нашел.

Мое приложение .net использует ImageMagik только для обрезки изображений.

Надеюсь, это поможет ...

4 голосов
/ 25 июня 2010

Мне пришлось сделать что-то подобное, хотя я и сам построил Imagemagick, чтобы обрезать жир.То, что вы можете сделать, это на вашей машине, установить DLL, используя exe, который они предоставляют .В процессе установки убедитесь, что вы установили флажок «Установить заголовки и библиотеки разработки на С и С ++».

Затем установочный каталог будет содержать заголовки в каталоге include и библиотеки в дереве.В lib вы найдете библиотеки, с которыми вам нужно ссылаться.Хотя есть тонна dll, что делает это небольшой проблемой.

То, что я закончил делать, когда создавал, было просто создать один dll ImageMagick и файл .lib для ссылки.Я создал свой собственный проект из источника и построил DLL.Затем вы можете отправить созданную вами DLL и библиотеку с заголовками из исходного кода.

РЕДАКТИРОВАТЬ: Я также должен заявить, что процесс установки происходит только на вашем компьютере.Затем вы можете скопировать dlls / libs / headers из пути установки и отправить их вместе с вашим пакетом, не требуя от пользователя установки чего-либо, кроме вашего приложения.

3 голосов
/ 25 июня 2010

Я могу предложить два метода:

  1. Используйте статические библиотеки (двоичные файлы, доступные на сайте ImageMagick) и компилируйте ваше приложение, используя их (может быть невозможно, если ваше приложение находится в .NET или аналогичном)
  2. Проверьте, какие DLL загружены вашим приложением, и поместите их в тот же каталог, что и исполняемый файл во время установки / распаковки, поскольку Windows всегда включает текущий каталог в свой поиск DLL
  3. Теоретически вы можете играть с SxS и сделать так, чтобы ваш пакет регистрировал библиотеки в хранилище SxS, и ваше приложение зависело от них. Хотя я лично являюсь сторонником SxS, я подозреваю, что это принесет ненужные осложнения, учитывая, что у команды ImageMagick, по-видимому, нет версии SxS, что снижает ценность, получаемую от использования SxS (то есть совместного использования DLL)
2 голосов
/ 08 декабря 2012

Помимо упаковки всех двоичных файлов и папок модулей, вы можете просто установить переменные окружения MAGICK_CODER_MODULE_PATH и MAGICK_FILTER_MODULE_PATH, не нужно вносить записи в реестр.

См. module.c в исходном коде ImageMagick, функция GetMagickModulePath.

1 голос
/ 18 июня 2010

Из описания на этой странице, похоже, что последний пакет Windows перечислен, ImageMagick-6.6.2-Q16-windows.zip, упакован без установщика и предназначен для использования с приложениями которые хотят заниматься собственной установкой и распространением. Это звучит ближе всего к тому, что вы ищете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...