Source Mod Installers
This article needs more links to other articles to help integrate it into the encyclopedia. Please help improve this article by adding links that are relevant to the context within the existing text.
January 2024
January 2024
Extra thanks to Garry Newman for relaying the basics of a mod installer.
For this, you need NSIS and HM NIS Edit.
Note:To automate the file list, use the NSIS Script Wizard in HM NIS Edit, then copy the list to your
setup.nsi
.Note: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 PRODUCT_VERSION "Release Version" !define PRODUCT_PUBLISHER "Mod Team/Company Name" !define PRODUCT_WEB_SITE "Mod Website" !define APPID 220 !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 ;======DO NOT EDIT BEYOND THIS POINT====== !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 "${PRODUCT_NAME}.exe" ShowInstDetails show Section "Mod Files" FILES SetOverwrite ifdiff SetOutPath "$INSTDIR" !ifdef ZIPDLL File "${LOCALDIR}\${MODDIR}.zip" StrCpy $R0 "$INSTDIR\${MODDIR}.zip" ZipDLL::extractall "$R0" "$INSTDIR" Delete "$R0" !else 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" !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
- Steam 3rd Party Mod Support
- NSIS Wiki
- ZipDLL plug-in — Zip decompression support
- UnTGZ plug-in — Gzip & Bzip2 decompression support
- @icon sushi
- It's a great free icon application. Supports XP icons.
- It's a great icon application with a trial version available
- This tutorial will make a step-by-step basic to advanced installer for steam games. Mostly for CS:S and Day of Defeat but can be used for any VALVe game that requires a installer to automatically find the Mods address in the Steam folders. Use for installing whole Mods, Maps, Models... any content you like. All tools used are FREEWARE with links to them in the articles.
An easy user-friendly GUI based setup compiler, very easy to setup for mods and other applications.