Archive: Background Image Problems


Background Image Problems
Ok im having a porblem with my installer. The background image script i put into the installer worked for only a short time now when i startup the installer the BImage doesnt show for the license page and directory page,only leading up to the installation page it shows and it worked before. It gives no errors when i compile it so its weird why it wont work, maybe someone can help. Here is the current one im testing:

XPStyle on

# !define DEBUG
!macro GetReturnValue
!ifdef DEBUG
Pop $R9
StrCmp $R9 success +2
DetailPrint "Error: $R9"
!endif
!macroend

Function .onGUIInit
InitPluginsDir
File /oname=$PLUGINSDIR\1.bmp "${NSISDIR}\Contrib\Graphics\Wizard\B.bmp"

!ifdef DEBUG
BgImage::SetReturn /NOUNLOAD on
!endif

BgImage::SetBg /NOUNLOAD /GRADIENT 0
!insertmacro GetReturnValue
BgImage::AddImage /NOUNLOAD /FILLSCREEN $PLUGINSDIR\1.bmp
!insertmacro GetReturnValue
BgImage::Redraw /NOUNLOAD

FunctionEnd

ShowInstDetails show

Section
BgImage::AddImage /NOUNLOAD $PLUGINSDIR\1.bmp
!insertmacro GetReturnValue
BgImage::Redraw /NOUNLOAD
SectionEnd

Function .onGUIEnd
BgImage::Destroy
FunctionEnd


I think i accidentally edited a small part of it once by accident but i look at this i don't see what could be the problem. help please:(

BTW: Im using nullsoft installer v2.37

Script seems fine, but it's not the complete script so I can't tell what else is getting in the way.


Here is the complete original script of the BImage plugin:

Name "BgImage.dll test"

OutFile "BgImage Test.exe"

XPStyle on

!define DEBUG
!macro GetReturnValue
!ifdef DEBUG
Pop $R9
StrCmp $R9 success +2
DetailPrint "Error: $R9"
!endif
!macroend

Function .onGUIInit
# the plugins dir is automatically deleted when the installer exits
InitPluginsDir
# lets extract some bitmaps...
File /oname=$PLUGINSDIR\1.bmp "${NSISDIR}\Contrib\Graphics\Wizard\llama.bmp"
File /oname=$PLUGINSDIR\2.bmp "${NSISDIR}\Contrib\Graphics\Checks\modern.bmp"

!ifdef DEBUG
# turn return values on if in debug mode
BgImage::SetReturn /NOUNLOAD on
!endif

# set the initial background for images to be drawn on
# we will use a gradient from drak green to dark red
BgImage::SetBg /NOUNLOAD /GRADIENT 0 0x80 0 0x80 0 0
!insertmacro GetReturnValue
# add an image @ (150,0)
BgImage::AddImage /NOUNLOAD $PLUGINSDIR\2.bmp 150 0
!insertmacro GetReturnValue
# add the same image only transparent (magenta wiped) @ (150,16)
BgImage::AddImage /NOUNLOAD /TRANSPARENT 255 0 255 $PLUGINSDIR\2.bmp 150 16
!insertmacro GetReturnValue
# create the font for the following text
CreateFont $R0 "Comic Sans MS" 50 700
# add a blue shadow for the text
BgImage::AddText /NOUNLOAD "Testing 1... 2... 3..." $R0 0 0 255 48 48 798 198
!insertmacro GetReturnValue
# add a green shadow for the text
BgImage::AddText /NOUNLOAD "Testing 1... 2... 3..." $R0 0 255 0 52 52 802 202
!insertmacro GetReturnValue
# add the text
BgImage::AddText /NOUNLOAD "Testing 1... 2... 3..." $R0 255 0 0 50 50 800 200
!insertmacro GetReturnValue
# show our creation to the world!
BgImage::Redraw /NOUNLOAD
# Refresh doesn't return any value

FunctionEnd

ShowInstDetails show

Section
# play some sounds
FindFirst $0 $1 $WINDIR\Media\*.wav
StrCmp $0 "" skipSound
moreSounds:
StrCmp $1 "" noMoreSounds
BgImage::Sound /NOUNLOAD /WAIT $WINDIR\Media\$1
# Sound doesn't return any value either
MessageBox MB_YESNO "Another sound?" IDNO noMoreSounds
FindNext $0 $1
Goto moreSounds

noMoreSounds:
FindClose $0
skipSound:

# change the background image to Mike, tiled
BgImage::SetBg /NOUNLOAD /TILED $PLUGINSDIR\1.bmp
!insertmacro GetReturnValue
# we have to redraw to reflect the changes
BgImage::Redraw /NOUNLOAD

MessageBox MB_OK "Mike the llama"

# clear everything
BgImage::Clear /NOUNLOAD
# Clear doesn't return any value
# set another gradient
BgImage::SetBg /NOUNLOAD /GRADIENT 0xFF 0xFA 0xBA 0xAA 0xA5 0x65
!insertmacro GetReturnValue
# add some text
BgImage::AddText /NOUNLOAD "A Desert for Mike" $R0 0 0 0 50 50 800 150
!insertmacro GetReturnValue
# add mike as an image
BgImage::AddImage /NOUNLOAD $PLUGINSDIR\1.bmp 50 150
!insertmacro GetReturnValue
# again, we have to call redraw to reflect changes
BgImage::Redraw /NOUNLOAD
SectionEnd

Function .onGUIEnd
# Destroy must not have /NOUNLOAD so NSIS will be able to unload
# and delete BgImage before it exits
BgImage::Destroy
# Destroy doesn't return any value
FunctionEnd


As for the full script for the installer of the program in workign on:

Name "Cryptonite: Dual Segas"
Caption "Cryptonite: Dual Segas"
Icon "${NSISDIR}\Contrib\Graphics\Icons\nsis1-install.ico"
OutFile "Install.exe"
InstallDir $DESKTOP\Cryptonite
LicenseText "Please read these Terms carefully before accessing or using the software"
LicenseData "TOU.txt"

Page license
Page directory
Page instfiles

UninstPage uninstConfirm
UninstPage instfiles

#Splash Screen
Function .onInit
SetOutPath $TEMP
File /oname=spltmp.bmp "my_splash.bmp"

; optional
; File /oname=spltmp.wav "my_splashshit.wav"

advsplash::show 1000 2000 2000 -1 $TEMP\spltmp

Pop $0 ; $0 has '1' if the user closed the splash screen early,
; '0' if everything closed normally, and '-1' if some error occurred.

Delete $TEMP\spltmp.bmp
; Delete $TEMP\spltmp.wav

FunctionEnd

RequestExecutionLevel admin

;--------------------------------

#Installation Section Starts Here

!define MUI_PRODUCT "Cryptonite: Dual Segas"
!define MUI_FILE "savefile"
!define MUI_VERSION "1.0.0"
!define MUI_BRANDINGTEXT "Cryptonite: Dual Segas"
CRCCheck On

Section "Installation F (required)"

SetOutPath $INSTDIR

SectionIn RO

File Install2.nsi
File Segas.exe
File DXT10.DLL
File Setup.ini
File Av.VDF


WriteRegStr HKLM SOFTWARE\NSIS_Cryptonite "Install_Dir" "$INSTDIR"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Cryptonite" "DisplayName" "Dual Segas"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Cryptonite" "UninstallString" '"$INSTDIR\uninstall.exe"'
WriteRegStr HKLM SOFTWARE\Cryptonite\Dual Segas "$INSTDIR"
WriteUninstaller "uninstall.exe"

SectionEnd

; Uninstaller

UninstallText "This will uninstall Segas. Hit next to continue."
UninstallIcon "${NSISDIR}\Contrib\Graphics\Icons\nsis1-uninstall.ico"

Section "Uninstall"

DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Cryptonite"
DeleteRegKey HKLM "SOFTWARE\SOFTWARE\Cryptonite\Dual Segas"
Delete "$INSTDIR\install2.nsi"
RMDir /r "$INSTDIR\*.*"
RMDir "$INSTDIR\"

IfFileExists "$INSTDIR" 0 NoErrorMsg
MessageBox MB_OK "Note: $INSTDIR could not be removed!" IDOK 0 ; skipped if file doesn't exist
NoErrorMsg:



SectionEnd

That's the original example script which doesn't have a license page or a directory selection page.


Yes thats the original example script but even when i add both license page and directory it does the same thing.


Attach (do not copy & paste) the complete example which fails for you.


Here is my script that i cant get to work. You have to add a image with the name "B", extension bmp to ${NSISDIR}\Contrib\Graphics\Wizard to get it to compile. The size of the background image i work with is 1280*960 and it only works perfectly without "/FILLSCREEN" when the resolution is 1280*960. When i change the resolution its outve place and when i add "/FILLSCREEN" the screen goes black and it says "Cannot load bitmap".


/FILLSCREEN is only valid for BgImage::SetBg and not for BgImage::AddImage. In your script, black comes from the BgImage::SetBg call and the error comes from using /FILLSCREEN in the BgImage::AddImage.

You should attach the script that gives you trouble and the one that's working next time.


Ok ill remember next time and thanks for the help i fixed the problem now :)