Source Mod Installers: Difference between revisions

From Valve Developer Community
Jump to navigation Jump to search
m (→‎See Also: @icon sushi)
Line 8: Line 8:
=Code from setup.nsi=
=Code from setup.nsi=
<pre>!define PRODUCT_NAME "Mod's Name"
<pre>!define PRODUCT_NAME "Mod's Name"
!define APPID 220


!define PRODUCT_VERSION "Release Version"
!define PRODUCT_VERSION "Release Version"
Line 17: Line 19:
!define MODDIR "Mod's root directory"
!define MODDIR "Mod's root directory"
;(i.e. cstrike)
;(i.e. cstrike)
!define LOCALDIR "C:\Program Files\Valve\Steam\SteamApps\SourceMods"
;This value should be set depending on the PC this will be compiled under


!define MUI_ICON "Installer Icon"
!define MUI_ICON "Installer Icon"
Line 34: Line 39:


;Uncomment this if you want to use ZipDLL
;Uncomment this if you want to use ZipDLL
;The zip file should be in the LOCALDIR for this
;!define ZIPDLL
;!define ZIPDLL


Line 53: Line 59:
ShowInstDetails show
ShowInstDetails show


Section "Mod Files" SEC01
Section "Mod Files" FILES
SetOverwrite ifdiff
SetOverwrite ifdiff
!ifdef ZIPDLL
!ifdef ZIPDLL
File "C:\...\zipfile.zip"
File "${LOCALDIR}\${MODDIR}.zip"
StrCpy $R0 "$INSTDIR\zipfile.zip"
StrCpy $R0 "$INSTDIR\${MODDIR}.zip"
ZipDLL::extractall "$R0" "$INSTDIR"
ZipDLL::extractall "$R0" "$INSTDIR"
Delete "$R0"
Delete "$R0"
!else
!else
SetOutPath "$INSTDIR"
SetOutPath "$INSTDIR"
;!! CHANGE THE LINE BELOW - /r tells it to include all files and dirs below this path
File /r "${LOCALDIR}\${MODDIR}"
File /r "x:\path\to\your\mod\directory\"
!endif
!endif


Line 73: Line 78:
SectionEnd
SectionEnd
!ifndef NO_DESKTOP_ICON
!ifndef NO_DESKTOP_ICON
Section "Desktop Shortcut" SEC02
Section "Desktop Shortcut" SHORTCUT
SetOutPath "$DESKTOP"
SetOutPath "$DESKTOP"
CreateShortcut "${FULL_GAME_NAME}.lnk" $STEAMEXE \
CreateShortcut "${FULL_GAME_NAME}.lnk" $STEAMEXE \
'-applaunch 220 -game "$INSTDIR"' "$ICONDIR\${FULL_GAME_NAME}.ico"
'-applaunch ${APPID} -game "$INSTDIR"' "$ICONDIR\${FULL_GAME_NAME}.ico"
SectionEnd
SectionEnd
!endif
!endif
Line 90: Line 95:
!ifndef NO_DESKTOP_ICON
!ifndef NO_DESKTOP_ICON
StrCpy $ICONDIR "$R0\steam\games"
StrCpy $ICONDIR "$R0\steam\games"
SectionSetFlags ${SEC02} 0
SectionSetFlags ${SHORTCUT} 0
StrCpy $STEAMEXE "$R0\steam.exe"
!endif
!endif
SectionSetFlags ${SEC01} 17
SectionSetFlags ${FILES} 17
StrCpy $STEAMEXE "$R0\steam.exe"
Return
Return
lbl_error:
lbl_error:
ClearErrors
ClearErrors
SectionSetFlags ${SEC01} 16
SectionSetFlags ${FILES} 17
FunctionEnd</pre>
FunctionEnd</pre>



Revision as of 17:53, 26 June 2006

Extra thanks to Garry Newman for relaying the basics of a mod installer.

For this, you need NSIS and HM NIS Edit.

Note.pngNote:To automate the file list, use the NSIS Script Wizard in HM NIS Edit, then copy the list to your setup.nsi.
Note.pngNote:You might want to be sure to include a ZIP-compressed version of the mod as a download. This will make it so people who are uneasy with EXE files able to get the mod.

Code from setup.nsi

!define PRODUCT_NAME "Mod's Name"

!define APPID 220

!define PRODUCT_VERSION "Release Version"

!define PRODUCT_PUBLISHER "Mod Team/Company Name"

!define PRODUCT_WEB_SITE "Mod Website"

!define MODDIR "Mod's root directory"
;(i.e. cstrike)

!define LOCALDIR "C:\Program Files\Valve\Steam\SteamApps\SourceMods"
;This value should be set depending on the PC this will be compiled under

!define MUI_ICON "Installer Icon"
;This is the location on the local computer where the icon for the installer executable is.

!define FULL_GAME_NAME "Full Game Name"
;This is the name of the game defined in gameinfo.txt
;Remove all colons from this (as well as any other invalid char in a file name)

!define DESKICO "Desktop Icon"
;This is the location on the local computer where the icon for the desktop icon for the game is.
;The icon name must be the same as the one in gameinfo.txt
;Remove all colons from this (as well as any other invalid char in a file name)

;Uncomment this if you do not wish to have a custom desktop icon:
;!define NO_DESKTOP_ICON

;Uncomment this if you want to use ZipDLL
;The zip file should be in the LOCALDIR for this
;!define ZIPDLL

!ifdef ZIPDLL
	!include "zipdll.nsh"
!endif

var ICONDIR
var STEAMEXE

!include "MUI.nsh"
!define MUI_ABORTWARNING
!insertmacro MUI_PAGE_COMPONENTS
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_LANGUAGE "English"

Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"
OutFile "Setup.exe"
ShowInstDetails show

Section "Mod Files" FILES
	SetOverwrite ifdiff
!ifdef ZIPDLL
	File "${LOCALDIR}\${MODDIR}.zip"
	StrCpy $R0 "$INSTDIR\${MODDIR}.zip"
	ZipDLL::extractall "$R0" "$INSTDIR"
	Delete "$R0"
!else
	SetOutPath "$INSTDIR"
	File /r "${LOCALDIR}\${MODDIR}"
!endif

!ifndef NO_DESKTOP_ICON
	SetOutPath "$ICONDIR"
	File "${DESKICO}"
!endif

SectionEnd
!ifndef NO_DESKTOP_ICON
Section "Desktop Shortcut" SHORTCUT
	SetOutPath "$DESKTOP"
	CreateShortcut "${FULL_GAME_NAME}.lnk" $STEAMEXE \
		'-applaunch ${APPID} -game "$INSTDIR"' "$ICONDIR\${FULL_GAME_NAME}.ico"
SectionEnd
!endif
Page custom Finish
Function Finish
  MessageBox MB_OK|MB_ICONEXCLAMATION "Steam must be restarted for the game to show on the games list."
FunctionEnd
Function .onInit
	ReadRegStr $R0 HKLM "Software\Valve\Steam" InstallPath
	ReadRegStr $R1 HKCU "Software\Valve\Steam" SourceModInstallPath
	IfErrors lbl_error 0
	StrCpy $INSTDIR "$R1\${MODDIR}"
!ifndef NO_DESKTOP_ICON
	StrCpy $ICONDIR "$R0\steam\games"
	SectionSetFlags ${SHORTCUT} 0
	StrCpy $STEAMEXE "$R0\steam.exe"
!endif
	SectionSetFlags ${FILES} 17
	Return
	lbl_error:
		ClearErrors
		SectionSetFlags ${FILES} 17
FunctionEnd

See Also

It's a great free icon application. Supports XP icons.
It's a great icon application with a trial version available