Установщики Source Модификаций

From Valve Developer Community
Jump to: navigation, search
English

Дополнительная благодарность пользователю Garry Newman за предоставление основы установщика мода.

Для этого, вам потребуется NSIS и HM NIS Edit.

Примечание:Для автоматизации списка файлов, используйте NSIS Script Wizard в HM NIS Edit, затем скопируйте список в setup.nsi.
Примечание:Вы можете быть уверены, что используется ZIP-сжатая версия мода для загрузки. Это позволит людям с плохим интернетом получить ваш мод.

Код из setup.nsi

!define PRODUCT_NAME "Название Мода"
!define PRODUCT_VERSION "Версия"
!define PRODUCT_PUBLISHER "Команда Разработчиков/Название Компании"
!define PRODUCT_WEB_SITE "Веб-Сайт мода"

!define APPID 220

!define MODDIR "Корневая директория мода"
;(например, cstrike)

!define LOCALDIR "C:\Program Files\Valve\Steam\SteamApps\SourceMods"
;Это значение должно быть установлено в зависимости от PC, на котором происходит компиляция

!define MUI_ICON "Иконка Установщика"
;Это локальное расположение иконки, используемой для установщика.

!define FULL_GAME_NAME "Полное Название Игры"
;Это название, определенное в gameinfo.txt
;В имени файла удалите все двоеточия, а также любые другие недействительные символы

!define DESKICO "Иконка на Рабочем Столе"
;Это локальное расположение иконки, используемой для рабочего стола.
;Имя иконки должно совпадать с установленной в gameinfo.txt
;В имени файла удалите все двоеточия, а также любые другие недействительные символы

;Раскомментируйте, если вы не хотите создавать иконки на рабочем столе:
;!define NO_DESKTOP_ICON

;Раскомментируйте, если вы хотите использовать ZipDLL
;Для этого, Zip файл должен находится в КОРНЕВОЙ ДИРЕКТОРИИ
;!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 "${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

См. Также

Это потрясающая программа для работы с иконками. Поддерживает XP иконки.
Это потрясающая программа для работы с иконками, доступна в триальной версии.
Это пошаговый учебник, по созданию установщика для Steam игр. В основном для CS:S и Day of Defeat но может использоваться для любой VALVe игры, которая требует автоматического поиска пути к модам в Steam директории. Используйте для установки Модов, Карт, Моделей... любого контента. Все упомянутые в статье инструменты являются бесплатными.