2010-06-16 7 views
5

Ho creato una piccola app per Windows che utilizza l'API ImageMagick C ma che è stata inserita in un pezzetto di un muro di mattoni. L'app funziona perfettamente e sono pronto a condividerlo con alcuni altri nella nostra organizzazione, ma non riesco a trovare la documentazione sulla distribuzione di tale app senza installare ImageMagick sul computer di destinazione.Creazione di un'applicazione che utilizza l'API ImageMagick C

Qualcuno qui ha informazioni, o un collegamento a informazioni, che dettagli come impacchettarlo per la distribuzione? Quali DLL sono richieste e quali devono essere registrati con Windows? Gli utenti target saranno su un mix di XP e Win7.

risposta

1

Dalla descrizione sulla pagina this, sembra l'ultimo pacchetto di Windows elencato, ImageMagick-6.6.2-Q16-windows.zip, è impacchettato senza un programma di installazione ed è destinato all'uso con le applicazioni che vogliono fare il loro propria installazione e distribuzione. Questo suona più vicino a quello che stai cercando.

+1

Non è proprio quello che sto cercando. Sto solo cercando informazioni sulla confezione dei componenti necessari per supportare un'applicazione scritta usando l'API, non l'intera suite ImageMagick. –

2

posso suggerire due metodi:

  1. Utilizzare librerie statiche (binari disponibili sul sito ImageMagick) e compilare l'applicazione utilizzando quelli (potrebbe non essere fattibile se l'applicazione è in .NET o simile)
  2. Verifica quali DLL sono caricate dall'applicazione e inseriscile nella stessa directory dell'eseguibile durante l'installazione/decompressione, poiché Windows include sempre la directory corrente nella sua ricerca di DLL
  3. In teoria, puoi giocare con SxS e rendere il pacchetto registrato le librerie con SxS store e la tua applicazione dipende da loro. Mentre io sono personalmente un sostenitore di SxS, ho il sospetto che avrebbe portato complicazione inutile dato che la squadra ImageMagick non sembra avere la versione SxS da soli, riducendo il valore ottenuto da utilizzare SxS (che è la condivisione DLL)
+0

Per # 2, è possibile utilizzare DEPENDS.EXE (http://www.dependencywalker.com/) probabilmente per vedere quali DLL sono richieste. – ewall

4

Ho dovuto fare qualcosa di simile, anche se ho costruito io stesso Imagemagick in modo da poter tagliare il grasso. Quello che puoi fare è sul tuo computer, installare le DLL usando lo exe they provide. Nel processo di installazione, assicurati di selezionare la casella che dice installa le intestazioni e le librerie di sviluppo C e C++.

La directory di installazione conterrà quindi le intestazioni nella directory di inclusione e le DLL nella struttura. Troverete libs che è necessario collegare in lib. Ci sono un sacco di DLL, il che rende questo un piccolo problema.

Quello che ho finito quando ho creato è stato creare una singola DLL ImageMagick e un file .lib da collegare. Ho creato il mio progetto dall'origine e ho creato una dll. Quindi puoi spedire la DLL e la lib che crei con le intestazioni dalla fonte.

MODIFICA: Devo anche specificare che il processo di installazione si verifica solo sulla macchina. È quindi possibile copiare le librerie/librerie/librerie/libere dal percorso di installazione e spedirle con il pacchetto, piuttosto che richiedere all'utente di installare altro che la propria app.

3

non ha mai trovato una soluzione sia così ecco cosa ho scoperto:

Utilizzando imageMagikNet.dll e (underlying) DLL ImageMagik, sembrano questi lib esigenze alcune chiavi di registrazione per funzionare correttamente.

Qui è la mia confezione di applicazione ImageMagikNet che funziona ...

  1. ImageMagickNET.dll (http://imagemagick.codeplex.com/) compilato contro 6.5.3-10
  2. Tutti CORE_RL * .dll dall'installazione di ImageMagik 6.5.3-10 (ImageMagick-6.5.3-10-Q16-windows-dll.exe)
  3. Tutti IM_MOD_RL * .dll dalla installazione di ImageMagik 6.5.3-10 (ImageMagick-6.5.3-10-Q16-windows-dll.exe)
  4. Tutti * 90.dll dall'installazione di ImageMagik 6.5.3-10 (ImageMagick-6.5. 3-10-Q16-windows-dll.exe)
  5. x11.dll dall'installazione di ImageMagik 6.5.3-10

  6. una chiave di registro che è simile al seguente:

    [HKEY_LOCAL_MACHINE \ SOFTWARE \ ImageMagick]

    [HKEY_LOCAL_MACHINE \ SOFTWARE \ ImageMagick \ 6.5.3]

    [HKEY_LOCAL_MACHINE \ SOFTWARE \ ImageMagick \ 6.5. 3 \ D: 16] "binpath" = "[TARGETDIR]" "LibPath" = "[TARGETDIR]" "CoderModulesPath" = "[TARGETDIR]"

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

So che potrebbe non essere un modo pulito per andare da quando simulo un'installazione di imageMagik nel registro e non so come funzionerà se un client installa ImageMagik sulla sua macchina, ma finora è l'unico modo che ho trovato.

La mia app .net utilizza ImageMagik solo per ritagliare le immagini.

Speranza che aiuta ...

2

, nonché il confezionamento di tutti i file binari e la cartella moduli, si può semplicemente impostare le variabili d'ambiente e MAGICK_CODER_MODULE_PATHMAGICK_FILTER_MODULE_PATH, non c'è bisogno di fare le voci di registro.

Vedere module.c nel codice sorgente ImageMagick, funzione GetMagickModulePath.

Problemi correlati