5

我创建了一个使用 ImageMagick C API 的小型 Windows 应用程序,但遇到了一些麻烦。该应用程序运行良好,我已准备好与我们组织中的其他一些人共享它,但如果没有在目标计算机上安装 ImageMagick,我找不到有关分发此类应用程序的文档。

这里有没有人有信息或信息链接,详细说明如何打包分发?需要哪些 DLL,哪些需要在 Windows 中注册?目标用户将混合使用 XP 和 Win7。

4

5 回答 5

4

也从未找到解决方案,所以这就是我发现的:

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

这是我的 ImageMagikNet 应用程序的打包工作......

  1. ImageMagickNET.dll( http://imagemagick.codeplex.com/ ) 针对 6.5.3-10 编译
  2. 安装 ImageMagik 6.5.3-10 (ImageMagick-6.5.3-10-Q16-windows-dll.exe) 中的所有 CORE_RL*.dll
  3. 安装 ImageMagik 6.5.3-10(ImageMagick-6.5.3-10-Q16-windows-dll.exe) 的所有 IM_MOD_RL*.dll
  4. 安装 ImageMagik 6.5.3-10(ImageMagick-6.5.3-10-Q16-windows-dll.exe) 的所有 *90.dll
  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]" "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 来裁剪图像。

希望能帮助到你...

于 2011-11-18T15:36:24.987 回答
4

我必须做一些类似的事情,虽然我自己构建了 Imagemagick 以便我可以修剪脂肪。您可以做的是在您的机器上,使用它们提供的 exe安装 dll 。在安装过程中,确保选中安装 C 和 C++ 开发头文件和库的复选框。

然后安装目录将包含包含目录中的头文件,以及整个树中的 dll。您将在 lib 中找到需要链接的库。但是有大量的 dll,这使得这有点问题。

我在构建时最终所做的只是创建一个 ImageMagick dll 和一个 .lib 文件来链接。我从源代码创建了自己的项目并构建了一个 dll。然后,您可以使用源代码中的标头发送 dll 和您创建的 lib。

编辑:我还应该声明安装过程只发生在您的机器上。然后,您可以从安装路径复制 dlls/libs/headers 并将它们与您的包一起提供,而不是要求用户安装除您的应用程序之外的任何东西。

于 2010-06-24T22:35:34.080 回答
3

我可以建议两种方法:

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

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

请参阅module.cImageMagick 源代码中的函数GetMagickModulePath

于 2012-12-08T17:18:51.193 回答
1

From the description on this page, it looks like the last Windows package listed, ImageMagick-6.6.2-Q16-windows.zip, is packaged without an installer, and is intended for use with applications that want to do their own installation and distribution. This sounds closest to what you're looking for.

于 2010-06-18T05:45:08.920 回答