2009-08-27 9 views
6

Non riesco a aggiungere un'immagine alla prima pagina di un programma di installazione scritto con NSIS/MUI2.Immagine di benvenuto mancante in NSIS/MUI2

Ecco una versione ridotta del codice che sto usando.

!include "MUI2.nsh" 

!define MUI_HEADERIMAGE 
    !define MUI_HEADERIMAGE_BITMAP nsis-header.bmp 

!define MUI_WELCOMEFINISHPAGE_BITMAP nsis-welcome.bmp 

OutFile "Setup.exe" 

# Set language 
!insertmacro MUI_LANGUAGE "English" 

# Pages for installation 
!insertmacro MUI_PAGE_WELCOME 
!insertmacro MUI_PAGE_LICENSE "..\LICENSE" 
!insertmacro MUI_PAGE_FINISH 

Section Foo 
SectionEnd 

L'intestazione è visualizzata correttamente nella pagina della licenza, ma non riesco a visualizzarla nella pagina di benvenuto. Ho provato con un'immagine 164x314 (come consiglia il documento), con bitmap salvate in 16b o 24b o 32b, con la stessa immagine dell'intestazione (per assicurarmi che non fosse un problema con la bitmap), compilando l'installazione in Win2k e Linux ... Niente funziona.

la bitmap viene correttamente memorizzato nel setup:

$ 7z l demyo-1.4.exe | grep modern- | awk '{ print $4 }' 
$PLUGINSDIR/modern-header.bmp 
$PLUGINSDIR/modern-wizard.bmp 

Qualsiasi idea di quello che sto facendo male?

+0

La dimensione che sembrava funzionare per me è un'altezza di 57 px, misurata in realtà dalla finestra di dialogo MUI2. Una dimensione 149x57 mi ha procurato uno striscione senza distorsioni. Mi chiedo che cosa sta causando questa differenza? – savolai

+1

Per le intestazioni, dovresti effettivamente usare 150x57. Il documento è qui: http://nsis.sourceforge.net/Docs/Modern%20UI/Readme.html. La mia descrizione riguardava l'immagine verticale a sinistra. –

risposta

10

MUI_LANGUAGE macro (s) deve venire dopo le MUI_PAGE_* macro nel file sorgente

+0

Questo è incredibilmente stupido (di me) e assolutamente corretto. Molte grazie. –

1

Il codice appare bene, ma ho notato che hai detto:

ho provato con un'immagine 164x364 (come il doc raccomanda)

Il documentation raccomanda in realtà 164x314. Quindi, se questo non è solo un errore di battitura da parte tua, prova a ridimensionare l'immagine.

Se questo non aiuta, dicci cosa sta succedendo invece della tua immagine. È l'immagine di default o è solo vuota?

+0

Sì, quello era un errore di battitura, mi dispiace. –

3

Garantire la vostra immagine è 8bit

+0

Grazie, ma la risposta di Anders sopra era quella giusta. –

+0

Sembra funzionare anche con 24 e 32 bit, almeno nella versione recente. – Cray

+0

Grazie, questo ha funzionato per me. Ho usato IrfanView Freeware, posso consigliarlo per inviare immagini da X bit -> 8 bit. –

1

Volete vedere il file nsis-welcome.bmp e messo in archivio il modern-wizard.bmp.

5

Per le altre persone come me con lo stesso problema, ma (leggermente) soluzione diversa:

Assicurarsi avete la macro MUI_LANGUAGE. (E come suggerisce la risposta reale, deve essere dopo i macro di pagina). Se non si include affatto, molte cose sembrano non funzionare, non solo immagini, ma anche alcuni testi, e così via ..

!insertmacro MUI_LANGUAGE "English" 
+1

Grazie! Finalmente è stato! L'uomo odio NSIS, non posso credere che non ci sia alternativa a questo giorno (WiX è troppo complesso per gli installatori semplici) ... – Muers

7

Anche con la guida che Anders fornito non ho potuto ottenere questo per funzionare. Il mio problema era con l'immagine stessa.

Questa procedura ha funzionato per me usando GIMP 2.8.10:

  • Creare un'immagine utilizzando la modalità RGB (Immagine> Metodo> RGB) utilizzando la dimensione appropriata per qualunque cosa si sta creando (164x364 per MUI_WELCOMEFINISHPAGE_BITMAP, 150x57 per MUI_HEADERIMAGE_BITMAP)
  • File> Esporta come ...
  • assegna un nome al file con.estensione bmp
  • clic su "Esporta"
  • nella finestra intitolata "Esporta immagine come BMP" espandere "Opzioni di compatibilità" e controllare la casella che dice "Non scrivere informazioni sullo spazio colore"
  • anche, nella finestra intitolata "Esporta immagine come BMP" espandere "Opzioni avanzate" e controllare il pulsante di opzione sotto "24 bit" accanto a "R8 G8 B8"
  • clic su "Esporta"

Ora ricompilare lo script NSI e il vostro installatore deve sta usando l'immagine (s) che hai specificato.

0

Ho affrontato lo stesso problema e il problema è risolto come menzionato nella risposta originale.

!define MUI_ABORTWARNING 
!define MUI_ICON "my.ico" 
!define MUI_UNICON "my.ico" 

!define MUI_HEADERIMAGE 
!define MUI_HEADERIMAGE_BITMAP orange.bmp 
!define MUI_WELCOMEFINISHPAGE_BITMAP orange_b.bmp 

!insertmacro MUI_PAGE_WELCOME 
!insertmacro MUI_PAGE_LICENSE "LicenseAgreement.rtf" 
!insertmacro MUI_PAGE_DIRECTORY 
!insertmacro MUI_PAGE_INSTFILES 
!insertmacro MUI_LANGUAGE "English" 

!insertmacro MUI_UNPAGE_CONFIRM 
!insertmacro MUI_UNPAGE_INSTFILES 

un punto di interesse qui, se il file della lingua è già caricato in altro luogo in qualsiasi file di intestazione utilizzando

LoadLanguageFile "${NSISDIR}\Contrib\Language files\English.nlf" ;don't include while using MUI2 

Poi NSIS segnala il seguente errore.

Error: can't load same language file twice. 
Error in macro MUI_LANGUAGE on macroline 9 

Qualsiasi file di inclusione lingua deve essere commentata per vedere le immagini di intestazione.

Problemi correlati