打包使用ImageMagick C API的应用程序

我已经创build了一个使用ImageMagick C API的小应用程序,但已经碰到了一堵砖墙。 该应用程序工作正常,我准备与我们的组织中的其他人分享,但我找不到文件分发这样的应用程序,而无需在目标机器上安装ImageMagick。

这里有没有人有信息或信息的链接,详细说明如何打包发行? 哪些DLL是必需的,哪些需要注册到Windows? 目标用户将使用XP和Win7。

Solutions Collecting From Web of "打包使用ImageMagick C API的应用程序"

我不得不做类似的事情,尽管我自己制作了Imagemagick,所以我可以修剪脂肪。 你可以做的是在你的机器上,使用他们提供的exe来安装dll。 在安装过程中,确保您选中了安装C和C ++开发头文件和库的框。

然后,安装目录将包含包含目录中的头文件和整个树中的dll。 你会发现你需要在lib中链接的库。 虽然有很多dll,这使得这个问题成为了一个问题。

当我建立的时候我最终做的只是创建一个ImageMagick dll和一个.lib文件来链接。 我从源创建我自己的项目,并建立一个DLL。 然后你可以发送dll和你创建的源文件头的头文件。

编辑:我也应该说,安装过程只发生在你的机器上。 然后,您可以从安装路径中复制dlls / libs / headers,并将它们与您的软件包一起发货,而不是要求用户安装除您的应用程序之外的任何内容。

从来没有找到一个解决方案,所以这里是我发现:

使用imageMagikNet.dll和(底层)imageMagik DLL,似乎这些库需要一些注册表项才能正常运行。

这是我的包装的ImageMagikNet应用程序工作…

  1. ImageMagickNET.dll( http://imagemagick.codeplex.com/ )编译为6.5.3-10
  2. 所有CORE_RL * .dll从ImageMagik 6.5.3-10(ImageMagick-6.5.3-10-Q16-windows-dll.exe)
  3. 所有安装ImageMagik 6.5.3-10(ImageMagick-6.5.3-10-Q16-windows-dll.exe)的IM_MOD_RL * .dll
  4. 所有* 90.dll从ImageMagik 6.5.3-10(ImageMagick-6.5.3-10-Q16-windows-dll.exe)
  5. 从ImageMagik 6.5.3-10安装x11.dll

  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]”“CodermoduleesPath”=“[TARGETDIR]”

    [HKEY_LOCAL_MACHINE \ SOFTWARE \ ImageMagick \ Current]“CodermoduleesPath”=“[TARGETDIR]”“ ]”

我知道,可能不是一个干净的方式去,因为我模拟在注册表中的imageMagik安装,我不知道如何将它的工作,如果一个客户端在他的机器上安装ImageMagik,但迄今为止,这是我发现的唯一方法。

我的.net应用程序只使用ImageMagik裁剪图像。

希望能帮助到你…

我可以建议两种方法:

  1. 使用静态库(ImageMagick站点上提供的二进制文件)并使用这些库编译应用程序(如果您的应用程序使用.NET或类似的方式,则可能不可行)
  2. 检查应用程序加载了哪些DLL,并在安装/解包过程中将它们放在与可执行文件相同的目录中,因为Windows始终在搜索DLL时包含当前目录
  3. 理论上,您可以使用SxS进行游戏,并使您的软件包可以使用SxS商店注册库并让您的应用程序依赖于它们。 虽然我个人是SxS的倡导者,但我怀疑它会带来不必要的复杂情况,因为ImageMagick团队似乎并没有自己的SxS版本,从而降低了使用SxS(即DLL共享)所获得的价值。

从这个页面上的描述看来,它看起来像列出的最后一个Windows包,ImageMagick-6.6.2-Q16-windows.zip,没有安装程序打包,旨在用于希望自己安装和分发的应用程序。 这听起来最接近你正在寻找的东西。

以及打包所有的二进制文件和模块文件夹,您可以简单地设置MAGICK_CODER_MODULE_PATHMAGICK_FILTER_MODULE_PATH环境变量,无需创建注册表项。

在ImageMagick源代码中查看module.c ,函数GetMagickmoduleePath