usbloadergx/source/Wiiload.nsi
rameonweb f26bf18ebf *add SendElf to the WL installer for large WAD files
*add extra context for wad files (Send to Wii [SendElf])
2009-08-02 22:34:06 +00:00

271 lines
9.3 KiB
Plaintext

;Website: http://code.google.com/p/usbloader-gui/
;Copyright 2009 NeoRame
;This program is free software: you can redistribute it and/or modify
;it under the terms of the GNU General Public License as published by
;the Free Software Foundation, either version 3 of the License, or
;(at your option) any later version.
;This program is distributed in the hope that it will be useful,
;but WITHOUT ANY WARRANTY; without even the implied warranty of
;MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;GNU General Public License for more details.
;You should have received a copy of the GNU General Public License
;along with this program. If not, see http://www.gnu.org/licenses/gpl-3.0.html.
!define TEMP2 $R1 ;Temp variable
!define TEMP3 $R2 ;Temp variable
!define TEMP4 $R3 ;Temp variable
!define TEMP5 $R4 ;Temp variable
!include "InstallOptions.nsh"
!include "LogicLib.nsh"
!include InstallerConfig.nsh
!define SHCNE_ASSOCCHANGED 0x08000000
!define SHCNF_IDLIST 0
;=== Program Details
Name "${NAME2}"
OutFile "..\${FILENAME}.exe"
InstallDir "$PROGRAMFILES\${NAME}"
Caption "${NAME2} Installer"
VIProductVersion "${VERSION}"
VIAddVersionKey ProductName "${NAME2}"
VIAddVersionKey Comments "For more informations please visit http://code.google.com/p/usbloader-gui/"
VIAddVersionKey CompanyName "${TEAM}"
VIAddVersionKey LegalCopyright "${TEAM}"
VIAddVersionKey FileDescription "${NAME2}"
VIAddVersionKey FileVersion "${VERSION}"
VIAddVersionKey ProductVersion "${VERSION}"
VIAddVersionKey InternalName "${NAME}"
VIAddVersionKey LegalTrademarks "${NAME2} installer created by ${TEAM}."
VIAddVersionKey OriginalFilename "${FILENAME}.exe"
;=== Runtime Switches
SetCompressor /SOLID lzma
CRCCheck on
AutoCloseWindow True
ShowInstDetails nevershow
ShowUnInstDetails nevershow
;=== Include Modern UI
!include "MUI.nsh"
;=== General
;Get installation folder from registry if available
InstallDirRegKey HKCU "Software\${NAME}" ""
;=== Interface Settings
!define MUI_ABORTWARNING
;===Language Selection Dialog Settings
;Remember the installer language
!define MUI_LANGDLL_REGISTRY_ROOT "HKCU"
!define MUI_LANGDLL_REGISTRY_KEY "Software\${NAME}"
!define MUI_LANGDLL_REGISTRY_VALUENAME "Installer Language"
;=== Program Icon
Icon "files\${NAME}.ico"
;=== Icon & Style ===
!define MUI_ICON "files\${NAME}.ico"
BrandingText "${NAME2} - Easy Setup for Dummys!"
!define MUI_WELCOMEFINISHPAGE_BITMAP ${NAME}.bmp
!insertmacro MUI_PAGE_WELCOME
Page custom SetCustom ValidateCustom ": Enter IP" ;Custom page. InstallOptions gets called in SetCustom.
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_PAGE_FINISH
;=== Languages
!insertmacro MUI_LANGUAGE "ENGLISH" ;first language is the default language
;Things that need to be extracted on startup (keep these lines before ;any File command!)
;Use ReserveFile for your own InstallOptions INI files too!
ReserveFile "${NSISDIR}\Plugins\InstallOptions.dll"
ReserveFile "IPPage.ini"
;=====Install Section
Section "Components"
;Get Install Options dialog user input
ReadINIStr ${TEMP2} "$PLUGINSDIR\IPPage.ini" "Field 3" "State"
ReadINIStr ${TEMP3} "$PLUGINSDIR\IPPage.ini" "Field 4" "State"
ReadINIStr ${TEMP4} "$PLUGINSDIR\IPPage.ini" "Field 5" "State"
ReadINIStr ${TEMP5} "$PLUGINSDIR\IPPage.ini" "Field 6" "State"
; App Install
SetOutPath $SYSDIR
File /r "Files\${NAME}.exe"
SetOutPath $INSTDIR
File /r "Files\*.ico"
File /r "Files\*SendElf.exe"
CreateDirectory "$SMPROGRAMS\${NAME}"
WriteUninstaller $INSTDIR\Uninstall.exe
CreateShortCut "$SMPROGRAMS\${NAME}\Uninstall.lnk" "$INSTDIR\Uninstall.exe"
CreateShortCut "$SMPROGRAMS\${NAME}\SendElf.lnk" "$INSTDIR\SendElf.exe"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${NAME}" "DisplayName" "${NAME}"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${NAME}" "DisplayVersion" "${VERSION}"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${NAME}" "Publisher" "${TEAM}"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${NAME}" "URLInfoAbout" "${URL}"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${NAME}" "DisplayIcon" "$INSTDIR\${NAME}.ico"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${NAME}" "UninstallString" '"$INSTDIR\Uninstall.exe"'
WriteRegStr HKCU "SOFTWARE\TCP Loader" 'Ip' '${TEMP2}.${TEMP3}.${TEMP4}.${TEMP5}'
WriteRegStr HKCU "SOFTWARE\TCP Loader" 'Port' '4299'
WriteRegStr HKCU "SOFTWARE\TCP Loader" 'File' ''
;=== WIILOAD TCP Stuff
; include for some of the windows messages defines
!include "winmessages.nsh"
; HKLM (all users) vs HKCU (current user) defines
!define env_hklm 'HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment"'
!define env_hkcu 'HKCU "Environment"'
; set variable
WriteRegExpandStr ${env_hkcu} WIILOAD tcp:${TEMP2}.${TEMP3}.${TEMP4}.${TEMP5}
; make sure windows knows about the change
SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} 0 "STR:Environment" /TIMEOUT=5000
;=== Context Menu (Send to Wii)
WriteRegStr HKCR ".dol" "" ""
WriteRegStr HKCR ".dol\DefaultIcon" "" "$PROGRAMFILES\${NAME}\DOL.ico"
WriteRegStr HKCR ".dol\shell\Send to Wii\command" "" `c:\windows\system32\wiiload.exe "%1"`
WriteRegStr HKCR ".elf" "" ""
WriteRegStr HKCR ".elf\DefaultIcon" "" "$PROGRAMFILES\${NAME}\ELF.ico"
WriteRegStr HKCR ".elf\shell\Send to Wii\command" "" `c:\windows\system32\wiiload.exe "%1"`
WriteRegStr HKCR ".wad" "" ""
WriteRegStr HKCR ".wad\DefaultIcon" "" "$PROGRAMFILES\${NAME}\WAD.ico"
WriteRegStr HKCR ".wad\shell\Send to Wii\command" "" `c:\windows\system32\wiiload.exe "%1"`
;=== Context Menu (Send to Wii [SendElf])
WriteRegStr HKCR ".wad\shell\Send to Wii [SendElf]\command" "" `$PROGRAMFILES\${NAME}\SendElf.exe /send /noshow /file "%1"`
Delete $exedir\.ini
Call RefreshShellIcons
SectionEnd
;=== Functions
Function .onInit
;Extract InstallOptions files
;$PLUGINSDIR will automatically be removed when the installer closes
InitPluginsDir
File /oname=$PLUGINSDIR\IPPage.ini "IPPage.ini"
FunctionEnd
Function SetCustom
;Display the InstallOptions dialog
InstallOptions::dialog "$PLUGINSDIR\IPPage.ini"
FunctionEnd
; Textbfields Input check
Function ValidateCustom
!insertmacro INSTALLOPTIONS_READ ${TEMP2} "IPPage.ini" "Field 3" "State"
StrCmp ${TEMP2} "" 0 +3
MessageBox MB_ICONEXCLAMATION|MB_OK "Please enter your Wii IP."
Abort
!insertmacro INSTALLOPTIONS_READ ${TEMP3} "IPPage.ini" "Field 4" "State"
StrCmp ${TEMP3} "" 0 +3
MessageBox MB_ICONEXCLAMATION|MB_OK "Please enter your Wii IP."
Abort
!insertmacro INSTALLOPTIONS_READ ${TEMP4} "IPPage.ini" "Field 5" "State"
StrCmp ${TEMP4} "" 0 +3
MessageBox MB_ICONEXCLAMATION|MB_OK "Please enter your Wii IP."
Abort
!insertmacro INSTALLOPTIONS_READ ${TEMP5} "IPPage.ini" "Field 6" "State"
StrCmp ${TEMP5} "" 0 +3
MessageBox MB_ICONEXCLAMATION|MB_OK "Please enter your Wii IP."
Abort
FunctionEnd
; Funtion Icon refresh
Function RefreshShellIcons
; By jerome tremblay - april 2003
System::Call 'shell32.dll::SHChangeNotify(i, i, i, i) v \
(${SHCNE_ASSOCCHANGED}, ${SHCNF_IDLIST}, 0, 0)'
FunctionEnd
;=== Uninstaller Section ===
;=== Unistall Functions
Function un.onInit
!insertmacro MUI_UNGETLANGUAGE
FunctionEnd
; Funtion Icon refresh
Function Un.RefreshShellIcons
; By jerome tremblay - april 2003
System::Call 'shell32.dll::SHChangeNotify(i, i, i, i) v \
(${SHCNE_ASSOCCHANGED}, ${SHCNF_IDLIST}, 0, 0)'
FunctionEnd
; Messagebox Done!
Function un.onUninstSuccess
MessageBox MB_OK "${NAME} uninstalled successfully."
FunctionEnd
;=== Uninstaller
Section "Uninstall"
; delete App and his stuff
Delete "$SMPROGRAMS\${NAME}\Uninstall.lnk"
Delete "$SMPROGRAMS\${NAME}\SendElf.lnk"
Delete "$INSTDIR\*.*"
Delete "$SYSDIR\${NAME}.exe"
RMDir "$SMPROGRAMS\${NAME}"
RMDir $INSTDIR
SetAutoClose true
DeleteRegKey HKEY_LOCAL_MACHINE "SOFTWARE\${NAME}"
DeleteRegKey HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\${NAME}"
DeleteRegKey /ifempty HKCU "Software\${NAME}"
;=== WIILOAD TCP Uninstall Stuff
; delete variable
DeleteRegValue ${env_hkcu} WIILOAD
; make sure windows knows about the change
SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} 0 "STR:Environment" /TIMEOUT=5000
; delete RegKeys
DeleteRegkey HKCR ".dol\shell\Send to Wii\command"
DeleteRegkey HKCR ".dol\shell\Send to Wii"
DeleteRegkey HKCR ".dol\DefaultIcon"
DeleteRegkey HKCR ".dol\shell"
DeleteRegkey HKCR ".dol"
DeleteRegkey HKCR ".elf\shell\Send to Wii\command"
DeleteRegkey HKCR ".elf\shell\Send to Wii"
DeleteRegkey HKCR ".elf\DefaultIcon"
DeleteRegkey HKCR ".elf\shell"
DeleteRegkey HKCR ".elf"
DeleteRegkey HKCR ".wad\shell\Send to Wii\command"
DeleteRegkey HKCR ".wad\shell\Send to Wii"
DeleteRegkey HKCR ".wad\shell\Send to Wii [SendElf]\command"
DeleteRegkey HKCR ".wad\shell\Send to Wii [SendElf]"
DeleteRegkey HKCR ".wad\DefaultIcon"
DeleteRegkey HKCR ".wad\shell"
DeleteRegkey HKCR ".wad"
DeleteRegkey HKCU "SOFTWARE\TCP Loader"
; Icon refresh
Call Un.RefreshShellIcons
SectionEnd